悬停不一致地处理动画元素

时间:2015-03-05 04:54:44

标签: css css3 css-animations

我正在用css围绕圆形路径旋转div,我想让它在悬停时改变颜色。

在此处查看演示:http://jsfiddle.net/gg7tnueu/1/

html,
body {
  height: 100%;
  margin: 0;
}

.planet {
  border-radius: 50%;
  border: 2px solid #1a1a1a;
  position: absolute;
  margin: auto;
  /*top: 50%;*/
  -webkit-animation: orbit 6s infinite linear;
  -webkit-backface-visibility: hidden;
  -webkit-transform: translateZ(0);
  animation: orbit 6s infinite linear;
  backface-visibility: hidden;
  transform: translateZ(0);
}

.planet.code {
  -webkit-transform-origin: 8.5vh 7.875vh;
  transform-origin: 8.5vh 7.875vh;
}

.planet.code:hover {
  background: red;
}

@-webkit-keyframes orbit {
  0% {
    -webkit-transform: rotate(0);
  }

  100% {
    -webkit-transform: rotate(360deg);
  }
}
@keyframes orbit {
  0% {
    transform: rotate(0);
  }

  100% {
    transform: rotate(360deg);
  }
}

.ring {
  margin: auto;
  border-radius: 50%;
  border: 2px solid #1a1a1a;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

.ring.inner.middle {
  width: 75%;
  height: 75%;
}

.ring.inner.last {
  width: 30%;
  height: 30%;
}


@media (orientation: landscape) {
  .ring.outer {
    width: 75vh;
    height: 75vh;
  }
  .planet {
    width: 3.75vh;
    height: 3.75vh;
  }

}
@media screen and (orientation: portrait) {
  .ring.outer {
    width: 75vw;
    height: 75vw;
  }
  .planet {
    width: 3.75vw;
    height: 3.75vw;
    left: -1.875vw;
  }
}
<div class="ring outer">
  <div class="ring inner middle">
    <div class="ring inner last">
      <div class='planet code'>
      </div>
    </div>
  </div>
</div>

在Firefox中检测到悬停非常一致(当我添加-moz前缀时...),但在Chrome中很少检测到。

当我添加onclick处理程序时,会发生同样的事情。

有没有人有任何建议让它更好用?

问题的屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎你必须使用javascript,因为@vals表示,除非移动鼠标,否则不会重新计算:hover状态。