[英]CSS Flip animation on click
我按照David Walsh提供的示例制作翻转动画。 它全部都在悬停上工作,但是,我想在单击而不是悬停时翻转元素。
以下代码可以正常工作并在悬停时翻转元素,但是,我想使用javascript / jquery来实现这一点。 我尝试了许多不同的方法,但无法弄清楚该如何做。
.flip-container { perspective: 1000px; } .flip-container:hover .flipper, .flip-container.hover .flipper { transform: rotateY(180deg); } .flip-container, .front, .back { width: 320px; height: 480px; } .flipper { transition: 0.6s; transform-style: preserve-3d; position: relative; } .front, .back { backface-visibility: hidden; position: absolute; top: 0; left: 0; } .front { z-index: 2; transform: rotateY(0deg); } .back { transform: rotateY(180deg); }
<div class="flip-container" ontouchstart="this.classList.toggle('hover');"> <div class="flipper"> <div class="front"> 1 </div> <div class="back"> 2 </div> </div> </div>
https://jsfiddle.net/pf4aemn7/ HTML
<div class="flip-container" ontouchstart="this.classList.toggle('hover');">
<div class="flipper">
<div class="front">
1
</div>
<div class="back">
2
</div>
</div>
</div>
的CSS
.flip-container {
perspective: 1000px;
}
.flip-container.hover .flipper {
transform: rotateY(180deg);
}
.flip-container,
.front,
.back {
width: 320px;
height: 480px;
}
.flipper {
transition: 0.6s;
transform-style: preserve-3d;
position: relative;
}
.front,
.back {
backface-visibility: hidden;
position: absolute;
top: 0;
left: 0;
}
.front {
z-index: 2;
transform: rotateY(0deg);
}
.back {
transform: rotateY(180deg);
}
JS
$(document).on("click", ".flip-container", function () {
$(this).toggleClass('hover');
});
在.flip-container
上使用onclick
事件处理程序,而不是ontouchstart
。 当然,不要忘记从样式中删除css :hover
选择器(即.flip-container:hover .flipper
)。
.flip-container { perspective: 1000px; } .flip-container.hover .flipper { transform: rotateY(180deg); } .flip-container, .front, .back { width: 320px; height: 480px; } .flipper { transition: 0.6s; transform-style: preserve-3d; position: relative; } .front, .back { backface-visibility: hidden; position: absolute; top: 0; left: 0; } .front { z-index: 2; transform: rotateY(0deg); } .back { transform: rotateY(180deg); }
<div class="flip-container" onclick="this.classList.toggle('hover');"> <div class="flipper"> <div class="front"> 1 </div> <div class="back"> 2 </div> </div> </div>
另外,我认为您应该将.hover
类重命名为更合适的名称,例如.clicked
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.