javascript - 卡片动画 Jquery 和 CSS

标签 javascript jquery html css

我会使用此代码翻转卡片的正面和背面,但单击一次后我看到背面卡片,第二次单击后我看不到任何卡片!有什么问题?

$(".carta img").click(function() {
  $(this).toggleClass("flipped");
})
.contenitorecarta {
  position: relative;
  width: 100px;
  height: 150px;
  perspective: 800px;
}
.carta {
  width: 100px;
  height: 150px;
  position: absolute;
  transform-style: preserve-3d;
  transition: transform 1s;
}
.carta img {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
}
.carta.back {
  transform: rotateY(180deg)
}
.carta .flipped {
  transform: rotateY(180deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="contenitore-carta">
  <div class="carta">
    <div class="front">
      <img width="100" height="150" src="http://placehold.it/100x150/F44/000.png&text=Front">
    </div>
    <div class="back">
      <img width="100" height="150" src="http://placehold.it/100x150/44F/000.png&text=Back">
    </div>
  </div>
</div>

最佳答案

我假设您正在学习本教程?:http://desandro.github.io/3dtransforms/docs/card-flip.html

问题

您有四 (4) 个问题:

  • 在您的 CSS 中,您应该...
    • .contenitore-carta 而不是 .contenitorecarta
    • .carta.flipped 而不是 .carta.flipped
    • .carta.back 而不是 .carta.back
  • 在您的 JavaScript 中,应将以下内容从...更改为
    • $(".carta img")$(".carta")

此外,您还需要添加 vendor 前缀样式规则,以便转换可以在所有支持的浏览器中工作。参见 A List Apart: Prefix or Posthack有关这方面的更多信息。

解决方案

下面的代码应该可以正常工作。 注意:我将类名从意大利语翻译成英语 :)

$(".card").click(function() {
  $(this).toggleClass("flipped");
})
.container {
  width: 100px;
  height: 150px;
  position: relative;
  border: 1px solid #CCC;
  -webkit-perspective: 800px;
     -moz-perspective: 800px;
       -o-perspective: 800px;
          perspective: 800px;
}

.card {
  width: 100%;
  height: 100%;
  position: absolute;
  -webkit-transition: -webkit-transform 1s;
     -moz-transition:    -moz-transform 1s;
       -o-transition:      -o-transform 1s;
          transition:         transform 1s;
  -webkit-transform-style: preserve-3d;
     -moz-transform-style: preserve-3d;
       -o-transform-style: preserve-3d;
          transform-style: preserve-3d;
}

.card.flipped {
  -webkit-transform: rotateY(180deg);
     -moz-transform: rotateY(180deg);
       -o-transform: rotateY(180deg);
          transform: rotateY(180deg);
}

.card div {
  display: block;
  height: 100%;
  width: 100%;
  position: absolute;
  -webkit-backface-visibility: hidden;
     -moz-backface-visibility: hidden;
       -o-backface-visibility: hidden;
          backface-visibility: hidden;
}

.card .front {
  background: red;
}

.card .back {
  background: blue;
  -webkit-transform: rotateY(180deg);
     -moz-transform: rotateY(180deg);
       -o-transform: rotateY(180deg);
          transform: rotateY(180deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="container">
  <div class="card">
    <div class="front">
      <img width="100" height="150" src="http://placehold.it/100x150/F44/000.png&text=Front">
    </div>
    <div class="back">
      <img width="100" height="150" src="http://placehold.it/100x150/44F/000.png&text=Back">
    </div>
  </div>
</div>

关于javascript - 卡片动画 Jquery 和 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28111488/

相关文章:

html - 如何在 _tk 主题中找到一个类以将其删除?

javascript - 如何处理对 Angular 堆叠的圆形图像背景元素悬停?

javascript - Eloquent JavaScript - 通过此关键字引用不起作用?

php - 如何将 url 变量传递到 php 分页中的下一页

html - 底部的线性 flex 标题?

javascript - 即使用户选择 IE8 兼容 View ,也强制使用 ie8 标准浏览器模态视图

JavaScript 闭包行为异常

javascript - Chart.js 显示时间数据

javascript - 如何更新nicEdit textarea的值

jquery - <pre>的滚动条在动画过程中会消失吗?有什么想法可以解决这个问题吗?