You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

item.classList.toggle()失效,点击卡片无法翻转问题求助

卡片点击翻转失效的解决方案

核心问题分析

你的代码中,JavaScript逻辑是通过点击给卡片添加/移除flipped类,但CSS里没有定义.card.flipped对应的翻转样式——目前只有鼠标悬停(card:hover)的翻转效果,所以点击后不会触发任何视觉变化。另外,JavaScript使用了import语句,若直接通过普通<script>标签引入,浏览器会因无法识别ES模块语法报错。

具体修复步骤

1. 补充CSS的.card.flipped样式

在CSS代码中添加以下内容,为点击触发的翻转效果提供样式支持:

/* 点击卡片触发的翻转效果 */
.card.flipped {
    transform: rotateY(180deg) translate(0, 40px);
}

如果需要区分悬停和点击的不同效果,可以单独调整这个类的transform属性。

2. 修正JavaScript的脚本引入方式

在HTML的<script>标签中添加type="module"属性,让浏览器识别ES模块语法:

<script type="module" src="./FlipCard.js"></script>

3. 可选:规范HTML结构(避免潜在问题)

你的HTML缺少<body>标签,虽然浏览器会自动补全,但建议将内容放在<body>内,保持结构规范:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="Stylesheets/FlipCardStyle.css">
    <link rel="stylesheet" href="Stylesheets/GridLayouts.css">
    <link rel="stylesheet" href="Stylesheets/Buttons.css">
</head>
<body>
    <div class="wrapper-horizontal">
        <!-- 卡片内容 -->
        <div class="card">
            <div class="card-face card-face-front"></div>
            <div class="card-face card-face-back"></div>
        </div>
        <div class="card">
            <div class="card-face card-face-front"></div>
            <div class="card-face card-face-back"></div>
        </div>
        <div class="card">
            <div class="card-face card-face-front"></div>
            <div class="card-face card-face-back"></div>
        </div>
        <div class="card">
            <div class="card-face card-face-front"></div>
            <div class="card-face card-face-back"></div>
        </div>
        <script type="module" src="./FlipCard.js"></script>
    </div>
    <button class="btn">Shuffle</button>
</body>
</html>

修复后的完整CSS示例

@import "GridLayouts.css";

.card {
    background: transparent;
    width: 117px;
    height: 200px;
    perspective: 1000px;
    position: relative;
    cursor: pointer;
    text-align: center;
    transition: transform 0.8s;
    transform-style: preserve-3d;
}

.wrapper-horizontal .card {
    float: left;
    margin-right: -47px;
    margin-bottom: 20px;
}

/* 鼠标悬停翻转(可选保留) */
.card:hover {
    transform: rotateY(180deg) translate(0, 40px);
}

/* 点击触发的翻转效果 */
.card.flipped {
    transform: rotateY(180deg) translate(0, 40px);
}

.card-face {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

.card-face-front {
    background: url("...") -234px 0px;
}

.card-face-back {
    background: url("...");
    background-size: 100% 100%;
    transform: rotateY(180deg);
}

内容的提问来源于stack exchange,提问作者Hardy Wen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:01:01