为什么div动画关键帧不工作时,javascript引擎很忙



我的页面结构如下:

<head>
 <style>
    .windows8 {
      position: relative;
      width: 78px;
      height:78px;
      margin:auto;
      margin-top: 200px;
    }
    .windows8 .wBall {
      position: absolute;
      width: 74px;
      height: 74px;
      opacity: 0;
      transform: rotate(225deg);
      -o-transform: rotate(225deg);
      -ms-transform: rotate(225deg);
      -webkit-transform: rotate(225deg);
      -moz-transform: rotate(225deg);
      animation: orbit 6.96s infinite;
      -o-animation: orbit 6.96s infinite;
      -ms-animation: orbit 6.96s infinite;
      -webkit-animation: orbit 6.96s infinite;
      -moz-animation: orbit 6.96s infinite;
    }
    .windows8 .wBall .wInnerBall{
      position: absolute;
      width: 10px;
      height: 10px;
      background: rgb(93, 147, 195);
      left:0px;
      top:0px;
      border-radius: 10px;
    }
    .windows8 #1wBall_1,.windows8 #wBall_1 {
      animation-delay: 1.52s;
      -o-animation-delay: 1.52s;
      -ms-animation-delay: 1.52s;
      -webkit-animation-delay: 1.52s;
      -moz-animation-delay: 1.52s;
    }
    .windows8 #1wBall_2,.windows8 #wBall_2 {
      animation-delay: 0.3s;
      -o-animation-delay: 0.3s;
      -ms-animation-delay: 0.3s;
      -webkit-animation-delay: 0.3s;
      -moz-animation-delay: 0.3s;
    }
    .windows8 #1wBall_3,.windows8 #wBall_3 {
      animation-delay: 0.61s;
      -o-animation-delay: 0.61s;
      -ms-animation-delay: 0.61s;
      -webkit-animation-delay: 0.61s;
      -moz-animation-delay: 0.61s;
    }
    .windows8 #1wBall_4,.windows8 #wBall_4 {
      animation-delay: 0.91s;
      -o-animation-delay: 0.91s;
      -ms-animation-delay: 0.91s;
      -webkit-animation-delay: 0.91s;
      -moz-animation-delay: 0.91s;
    }
    .windows8 #1wBall_5,.windows8 #wBall_5 {
      animation-delay: 1.22s;
      -o-animation-delay: 1.22s;
      -ms-animation-delay: 1.22s;
      -webkit-animation-delay: 1.22s;
      -moz-animation-delay: 1.22s;
    }

    @keyframes orbit {
      0% {
        opacity: 1;
        z-index:99;
        transform: rotate(180deg);
        animation-timing-function: ease-out;
      }
      7% {
        opacity: 1;
        transform: rotate(300deg);
        animation-timing-function: linear;
        origin:0%;
      }
      30% {
        opacity: 1;
        transform:rotate(410deg);
        animation-timing-function: ease-in-out;
        origin:7%;
      }
      39% {
        opacity: 1;
        transform: rotate(645deg);
        animation-timing-function: linear;
        origin:30%;
      }
      70% {
        opacity: 1;
        transform: rotate(770deg);
        animation-timing-function: ease-out;
        origin:39%;
      }
      75% {
        opacity: 1;
        transform: rotate(900deg);
        animation-timing-function: ease-out;
        origin:70%;
      }
      76% {
        opacity: 0;
        transform:rotate(900deg);
      }
      100% {
        opacity: 0;
        transform: rotate(900deg);
      }
    }
    @-o-keyframes orbit {
      0% {
        opacity: 1;
        z-index:99;
        -o-transform: rotate(180deg);
        -o-animation-timing-function: ease-out;
      }
      7% {
        opacity: 1;
        -o-transform: rotate(300deg);
        -o-animation-timing-function: linear;
        -o-origin:0%;
      }
      30% {
        opacity: 1;
        -o-transform:rotate(410deg);
        -o-animation-timing-function: ease-in-out;
        -o-origin:7%;
      }
      39% {
        opacity: 1;
        -o-transform: rotate(645deg);
        -o-animation-timing-function: linear;
        -o-origin:30%;
      }
      70% {
        opacity: 1;
        -o-transform: rotate(770deg);
        -o-animation-timing-function: ease-out;
        -o-origin:39%;
      }
      75% {
        opacity: 1;
        -o-transform: rotate(900deg);
        -o-animation-timing-function: ease-out;
        -o-origin:70%;
      }
      76% {
        opacity: 0;
        -o-transform:rotate(900deg);
      }
      100% {
        opacity: 0;
        -o-transform: rotate(900deg);
      }
    }
    @-ms-keyframes orbit {
      0% {
        opacity: 1;
        z-index:99;
        -ms-transform: rotate(180deg);
        -ms-animation-timing-function: ease-out;
      }
      7% {
        opacity: 1;
        -ms-transform: rotate(300deg);
        -ms-animation-timing-function: linear;
        -ms-origin:0%;
      }
      30% {
        opacity: 1;
        -ms-transform:rotate(410deg);
        -ms-animation-timing-function: ease-in-out;
        -ms-origin:7%;
      }
      39% {
        opacity: 1;
        -ms-transform: rotate(645deg);
        -ms-animation-timing-function: linear;
        -ms-origin:30%;
      }
      70% {
        opacity: 1;
        -ms-transform: rotate(770deg);
        -ms-animation-timing-function: ease-out;
        -ms-origin:39%;
      }
      75% {
        opacity: 1;
        -ms-transform: rotate(900deg);
        -ms-animation-timing-function: ease-out;
        -ms-origin:70%;
      }
      76% {
        opacity: 0;
        -ms-transform:rotate(900deg);
      }
      100% {
        opacity: 0;
        -ms-transform: rotate(900deg);
      }
    }
    @-webkit-keyframes orbit {
      0% {
        opacity: 1;
        z-index:99;
        -webkit-transform: rotate(180deg);
        -webkit-animation-timing-function: ease-out;
      }
      7% {
        opacity: 1;
        -webkit-transform: rotate(300deg);
        -webkit-animation-timing-function: linear;
        -webkit-origin:0%;
      }
      30% {
        opacity: 1;
        -webkit-transform:rotate(410deg);
        -webkit-animation-timing-function: ease-in-out;
        -webkit-origin:7%;
      }
      39% {
        opacity: 1;
        -webkit-transform: rotate(645deg);
        -webkit-animation-timing-function: linear;
        -webkit-origin:30%;
      }
      70% {
        opacity: 1;
        -webkit-transform: rotate(770deg);
        -webkit-animation-timing-function: ease-out;
        -webkit-origin:39%;
      }
      75% {
        opacity: 1;
        -webkit-transform: rotate(900deg);
        -webkit-animation-timing-function: ease-out;
        -webkit-origin:70%;
      }
      76% {
        opacity: 0;
        -webkit-transform:rotate(900deg);
      }
      100% {
        opacity: 0;
        -webkit-transform: rotate(900deg);
      }
    }
    @-moz-keyframes orbit {
      0% {
        opacity: 1;
        z-index:99;
        -moz-transform: rotate(180deg);
        -moz-animation-timing-function: ease-out;
      }
      7% {
        opacity: 1;
        -moz-transform: rotate(300deg);
        -moz-animation-timing-function: linear;
        -moz-origin:0%;
      }
      30% {
        opacity: 1;
        -moz-transform:rotate(410deg);
        -moz-animation-timing-function: ease-in-out;
        -moz-origin:7%;
      }
      39% {
        opacity: 1;
        -moz-transform: rotate(645deg);
        -moz-animation-timing-function: linear;
        -moz-origin:30%;
      }
      70% {
        opacity: 1;
        -moz-transform: rotate(770deg);
        -moz-animation-timing-function: ease-out;
        -moz-origin:39%;
      }
      75% {
        opacity: 1;
        -moz-transform: rotate(900deg);
        -moz-animation-timing-function: ease-out;
        -moz-origin:70%;
      }
      76% {
        opacity: 0;
        -moz-transform:rotate(900deg);
      }
      100% {
        opacity: 0;
        -moz-transform: rotate(900deg);
      }
    }
  </style>
<!-- 4-5 style links-->
<!-- 4-5 scripts -->
<!-- for testing you can put following code
  for(var i=0;i<-1;i++){console.log(i)}
-->
</head>
<body>
  <app>
    <div class="windows8">
      <div class="wBall" id="wBall_1">
        <div class="wInnerBall"></div>
      </div>
      <div class="wBall" id="wBall_2">
        <div class="wInnerBall"></div>
      </div>
      <div class="wBall" id="wBall_3">
        <div class="wInnerBall"></div>
      </div>
      <div class="wBall" id="wBall_4">
        <div class="wInnerBall"></div>
      </div>
      <div class="wBall" id="wBall_5">
        <div class="wInnerBall"></div>
      </div>
    </div>
  </app>
</body>

它渲染div与所有的css(e。G球半径和背景颜色等),但关键帧(即:过渡/移动)的球不工作到一段时间(直到所有的css/js下载和解析),但之后它工作得很好。

我认为可能是在加载和解析css/js渲染引擎会很忙,所以它不能执行过渡,但当我看了看其他网页,他们使用css加载器,因为我做的,它工作得很好。所以当我的动画不工作时,他们的动画是如何工作的。

因为浏览器选项卡是单线程的。有些浏览器完全是单线程的。

如果JavaScript在某些浏览器中从未停止运行,你甚至不能关闭选项卡。

如果你想要DOM重新绘制,或者画布动画,或者页面是可点击的,你可以而不是锁定JS。这意味着您必须学习不同的编程范例来分解长时间运行的流程。

相关内容

  • 没有找到相关文章

最新更新