单击时动画翻转 div

animation Flip div when clicked

我试图让 div 在我点击它们时翻转。我不确定为什么它不起作用。请帮忙。

这是这段代码的演示。 http://langbook.co/testicles-1-2-flashcards/

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#flip3D{ width:240px; height:200px; margin:10px; float:left; }
#flip3D > #front{
position:absolute;
transform: perspective( 600px ) rotateY( 0deg );
background:#FC0; width:240px; height:200px; border-radius: 7px;
backface-visibility: hidden;
transition: transform .5s linear 0s;}
#flip3D > #back{
position:absolute;
transform: perspective( 600px ) rotateY( 180deg );
background: #80BFFF; width:240px; height:200px; border-radius: 7px;
backface-visibility: hidden;
transition: transform .5s linear 0s;}
</style>
<script>
function flip(el){
el.children[1].style.transform = "perspective(600px) rotateY(-180deg)";
el.children[0].style.transform = "perspective(600px) rotateY(0deg)";}
var vlib = document.getElementById('front');
vlib.addEventListener(click, flip(el));
</script>
<title>Flashcards</title>
</head>
<body>
<div id="flip3D">
  <div id="back">Box - Back</div>
  <div id="front">Box - Front </div>
</div>
</body>
</html>

例如: http://www.w3schools.com/cssref/playit.asp?filename=playcss_backface-visibility

简单的一个CSS行:

animation:mymove 3s infinite;

其中 mymove 是:

@keyframes mymove
    {
    from {transform:rotateY(0deg);}
    to {transform:rotateY(360deg);}
    }

    @-moz-keyframes mymove /* Firefox */
    {
    from {-moz-transform:rotateY(0deg);}
    to {-moz-transform:rotateY(360deg);}
    }

    @-webkit-keyframes mymove /* Opera, Safari, Chrome */
    {
    from {-webkit-transform:rotateY(0deg);}
    to {-webkit-transform:rotateY(360deg);}
    }

    @-ms-keyframes mymove /* Internet Explorer */
    {
    from {-ms-transform:rotateY(0deg);}
    to {-ms-transform:rotateY(360deg);}
    }

示例:

div#myDIV
    {
    animation:mymove 3s infinite;/* <== HERE */
    /* Firefox */
    -moz-animation:mymove 3s infinite;
    -moz-animation-timing-function:linear;
    /* Opera, Safari, Chrome */
    -webkit-animation:mymove 3s infinite;
    -webkit-animation-timing-function:linear;
    }

http://www.w3schools.com/css/css3_2dtransforms.asp

http://www.w3schools.com/css/css3_3dtransforms.asp

不确定您是否尝试过,但这可以解决您的问题。只使用 CSS 你可以做同样的事情(通过你想要达到的声音)。

希望这对您有所帮助。

首先,我会将您的 JS 移动到页面末尾。

您似乎还想在 #flip3D 上调用 flip(),因为您正试图访问它的子元素,如下所示:

var vlib = document.getElementById('flip3D');
vlib.addEventListener('click', flip(vlib));

要向后翻转,您只需将对象的状态保存在属性中即可知道它在哪一侧。还要注意 flip(vlib) 将立即被调用;要等待点击事件,您需要传递对函数的引用:

vlib.addEventListener('click', flip);

似乎有效:JSFiddle

你在 JS 部分的语法和声明中有一些错误。

希望这就是您要找的:

https://jsfiddle.net/xrtvhvgf/2/

function flip(){
    if(vlib_front.style.transform){
        el.children[1].style.transform = "";
        el.children[0].style.transform = "";
    } else {
        el.children[1].style.transform = "perspective(600px) rotateY(-180deg)";
        el.children[0].style.transform = "perspective(600px) rotateY(0deg)";
    }
}
var vlib_front = document.getElementById('front');
var el = document.getElementById('flip3D');

el.addEventListener('click', flip);