【问题标题】:Can someone please explain why one of these webkit animation functions works and the other doesn't. I know its the class vs ID but why?有人可以解释为什么这些 webkit 动画功能之一有效而另一个无效。我知道它的类与 ID,但为什么呢?
【发布时间】:2021-08-26 11:14:33
【问题描述】:

这只是测试代码,所以不要想太多。但无论如何,我无法理解为什么动画播放状态会在使用类时正常工作和改变,但在我使用 ID 时不会。

在使用ID时还有其他规则吗?或者可以不使用ID?

任何信息都会很有帮助。

使用类的工作版本

<html>
<head>
<style>
div {
    width: 100px;
    height: 100px;
    background: red;
    position: relative;
    -webkit-animation: mymove 2s infinite;  /* Chrome, Safari, Opera */
    -webkit-animation-play-state: paused;  /* Chrome, Safari, Opera */
    animation: mymove 2s infinite;
    animation-play-state: paused;
}

/* Chrome, Safari, Opera */
@-webkit-keyframes mymove {
    from {left: 0px;}
    to {left: 250px;}
}

@keyframes mymove {
    from {left: 0px;}
    to {left: 250px;}
}
</style>
</head>
<body>
<button onclick="playTest()">Play</button>
<button onclick="playTest2()">Pause</button>

<script>

function playTest(){
    document.getElementById("notMyDIV").style.WebkitAnimationPlayState = "running"; // Code for Chrome, Safari, and Opera
    document.getElementById("notMyDIV").style.animationPlayState = "running";
}

function playTest2(){
    document.getElementById("notMyDIV").style.WebkitAnimationPlayState = "paused"; // Code for Chrome, Safari, and Opera
    document.getElementById("notMyDIV").style.animationPlayState = "paused";
}


</script>
<div id="notMyDIV">
  <div id="myDIV"></div>
</div>
</body>
</html>

非工作 ID 版本

<html>
<head>
<style>
.myDiv {
    width: 100px;
    height: 100px;
    background: red;
    position: relative;
    -webkit-animation: mymove 2s infinite;  /* Chrome, Safari, Opera */
    -webkit-animation-play-state: paused;  /* Chrome, Safari, Opera */
    animation: mymove 2s infinite;
    animation-play-state: paused;
}

/* Chrome, Safari, Opera */
@-webkit-keyframes mymove {
    from {left: 0px;}
    to {left: 250px;}
}

@keyframes mymove {
    from {left: 0px;}
    to {left: 250px;}
}
</style>
</head>
<body>
<button onclick="playTest()">Play</button>
<button onclick="playTest2()">Pause</button>

<script>

function playTest(){
    document.getElementById("notMyDIV").style.WebkitAnimationPlayState = "running"; // Code for Chrome, Safari, and Opera
    document.getElementById("notMyDIV").style.animationPlayState = "running";
}

function playTest2(){
    document.getElementById("notMyDIV").style.WebkitAnimationPlayState = "paused"; // Code for Chrome, Safari, and Opera
    document.getElementById("notMyDIV").style.animationPlayState = "paused";
}


</script>
<div id="notMyDIV">
  <div class="myDiv" id="myDIV"></div>
</div>
</body>
</html>

【问题讨论】:

    标签: javascript html css css-animations webkit-animation


    【解决方案1】:

    问题不是由于 div 有没有类。第二个示例失败的原因是 CSS 选择器 (.myDiv) 没有选择 div#notMyDiv,而是选择了未应用动画播放状态的子 div.myDiv

    在第一个 div 中,选择器选择了所有 div (div),这就是它起作用的原因。

    这是第二个 sn-p,除了 javascript 将播放状态应用于由 CSS 选择器选择的子 div。

    <html>
      <head>
        <style>
        .myDiv {
          width: 100px;
          height: 100px;
          background: red;
          position: relative;
          -webkit-animation: mymove 2s infinite;  /* Chrome, Safari, Opera */
          -webkit-animation-play-state: paused;  /* Chrome, Safari, Opera */
          animation: mymove 2s infinite;
          animation-play-state: paused;
        }
    
        /* Chrome, Safari, Opera */
        @-webkit-keyframes mymove {
          from {left: 0px;}
          to {left: 250px;}
        }
    
        @keyframes mymove {
          from {left: 0px;}
          to {left: 250px;}
        }
        </style>
      </head>
      <body>
        <button onclick="playTest()">Play</button>
        <button onclick="playTest2()">Pause</button>
        <script>
        function playTest(){
          document.getElementById("myDIV").style.WebkitAnimationPlayState = "running"; // Code for Chrome, Safari, and Opera
          document.getElementById("myDIV").style.animationPlayState = "running";
        }
    
        function playTest2(){
          document.getElementById("myDIV").style.WebkitAnimationPlayState = "paused"; // Code for Chrome, Safari, and Opera
          document.getElementById("myDIV").style.animationPlayState = "paused";
        }
        </script>
        <div id="notMyDIV">
          <div class="myDiv" id="myDIV"></div>
        </div>
      </body>
    </html>

    【讨论】:

    • 哇,这太明显了。我不知道为什么我把父母。今天肯定花了很多时间看屏幕。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多