0

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

4

1 回答 1

0

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

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

这是第二个片段,除了 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>

于 2021-08-26T03:14:33.133 回答