卡片动画Jquery和CSS
Cards animation Jquery and 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")
.
-
此外,还需要添加以供应商为前缀的样式规则,以便转换可以在所有受支持的浏览器中工作。请参阅单独列表:前缀或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>
我对你的CSS和JS做了一些更改,以实现你想要的效果。
- 更改了 JS,因此它将一个类添加到父 .carta 中,以便可以根据状态的变化设置两个子项的样式
- 修复了 CSS 中的"contentitore-carta"选择器 — 它缺少连字符
- 我没有使用图像进行转换,而是将它们切换到使用父 .front, .backdivs。这不是成败,但转换往往与div 玩得更好。
认为这涵盖了它。更新了下面的代码。
$(".carta").click(function() {
$(this).toggleClass("flipped");
})
.contenitore-carta {
position: relative;
width: 100px;
height: 150px;
perspective: 800px;
}
.carta {
width: 100px;
height: 150px;
position: absolute;
transform-style: preserve-3d;
transition: transform 1s;
}
.carta .front,
.carta .back {
display: block;
position: absolute;
z-index: 2;
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>
您想要的相同效果只是 toogle 而不是 rotateY
$(".carta img").click(function() {
$('.front, .back').toggle();
});
.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 { display:none}
<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>
由于已经给出了许多正确答案,我只是提出了一个具有简化标记和更少样式的解决方案,并在最新的Chrome和Firefox上进行了测试
http://codepen.io/anon/pen/rawWdJ
标记
<div class="card">
<img class="front" src="http://placehold.it/120x150/F44/000.png&text=Front">
<img class="back" src="http://placehold.it/120x150/44F/000.png&text=Back">
</div>
CSS
.card {
position: relative;
width: 120px;
transform-style: preserve-3d;
transition: 1s transform;
}
.card img {
backface-visibility: hidden;
position: absolute;
}
.card .back {
transform: rotateY(180deg)
}
.card.flip {
transform: rotateY(180deg)
}
Js
$('.card').on('click', function() {
$(this).toggleClass('flip');
});
相关文章:
- 在屏幕中央显示图像 CSS jQuery
- 如何打印隐藏文章(Css/JQuery)
- 如何设置DIV背景图像css jquery
- CSS/JQuery/Javascript加载图标仅适用于firefox
- fadeOut”;被禁用”;通过一行看似温和的CSS(jquery bug?)
- CSS: jQuery:将右边距应用于 li 元素,除了每个第 4 个子元素(仅适用于 display:block 的元
- CSS + Jquery Slide在调整大小时切换菜单问题
- 使用 css jquery 设置背景图像
- css JQuery animate 不起作用
- CSS/JQuery 链接悬停不会触发
- 使用 .css jQuery 的 Safari 中的问题
- CSS jQuery - 展示图像(淡入淡出)
- 如何将 Cookie 与点击事件显示的内容一起使用?(HTML/CSS/jQuery)
- 网站加载CSS / Jquery样式缓慢
- 创建一个可调整大小的日历(html/css/jquery)
- CSS/jQuery-响应设计的关闭按钮停留在右上角
- css+jQuery样式.css切换器,用于新的jQuery版本
- Bootstrap 3不允许我在悬停时使用CSS/JQuery图像替换
- (CSS/jQuery)如何用jQuery解决top和bottom属性之间的冲突
- 使用JavaScript更改CSS(jQuery)