使用webkit 3d转换,CSS悬停不止一次

时间:2014-01-14 15:57:19

标签: css hover transform webkit-transform

当我在悬停时使用webkit 3d变换时,只有悬停区域的前50%有效,而底部50%不稳定。我目前正在测试Chrome(31.0.1650.63)。这是一个错误吗?有没有解决方法?

尝试将鼠标放在div的顶部并慢慢将其放在底部。

HTML

<div class="hoverArea"></div>
<div class="flip">
    <div class="front">front</div>
    <div class="back">back</div>
</div>

CSS

.hoverArea, .flip, .front, .back {
  width: 200px;
  height: 200px;
  position: absolute;
  top: 0;
  left: 0;
}
.hoverArea {
  z-index: 10;
}
.flip {
  -webkit-transform-style: preserve-3d;
  -webkit-transition: 0.5s;
  -webkit-perspective: 800;
  z-index: 9;
}
.front {
  background-color: #f00;
  -webkit-backface-visibility: hidden ;
}
.back {
  background-color: #f0f;
  -webkit-transform: rotatex(-180deg);
  -webkit-backface-visibility: hidden ;
}
.hoverArea:hover + .flip {
  -webkit-transform: rotatex(-180deg);  
}

http://jsfiddle.net/4P53y/

1 个答案:

答案 0 :(得分:5)

您可以删除.hoverArea元素,然后在:hover元素上应用.flip事件来解决此问题。

.flip:hover {
    -webkit-transform: rotatex(-180deg);    
}

Demo

如果您仍想使用.hoverArea元素,则可以transform:translateZ(1px);使用.hoverArea使其正常运行。它使浏览器更仔细地渲染元素

.hoverArea {
    z-index: 10;
    -webkit-transform:translateZ(1px);
}

Demo