如何防止 CSS3 过渡反转?例如:当我使用
div
{
-webkit-transition:-webkit-transform 2s;
}
div:hover
{
-webkit-transform:rotate(360deg);
}
每当我将鼠标移出时,它都会向后旋转,如何防止它?所以当我将鼠标放在div上时它只会向前旋转,而当我的鼠标离开div时它不会向后旋转?
如何防止 CSS3 过渡反转?例如:当我使用
div
{
-webkit-transition:-webkit-transform 2s;
}
div:hover
{
-webkit-transform:rotate(360deg);
}
每当我将鼠标移出时,它都会向后旋转,如何防止它?所以当我将鼠标放在div上时它只会向前旋转,而当我的鼠标离开div时它不会向后旋转?
您可能已经解决了这个问题,但如果您还没有在这里解决您的 360 度滚动的特定问题。
div
{
-webkit-transition: all 0.0s ;
-moz-transition: all 0.0s ;
-o-transition: all 0.0s ;
transition: all 0.0s;
}
div:hover
{
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
transform: rotate(360deg);
-webkit-transition: all 2s ease;
-moz-transition: all 2s ease;
-o-transition: all 2s ease;
transition: all 2s ease;
}
您可以改用 CSS 动画并设置将保持结束状态的animation-fill-mode
属性。forwards
这是一个快速演示。如您所见,它仅旋转 360 度然后停止(这是您想要的吗?)。如果您希望它在您将鼠标悬停在 上时一直旋转div
,那么您可以更改forwards
为infinite
并将 设置animation-timing-function
为linear
(以保持一致的速度)。
像这样:
animation: rotate 2s linear infinite;
但是当您将鼠标悬停时它看起来并不好,因为它会破坏动画并且我认为没有解决此问题的方法。我希望这会有所帮助。如果没有,也许如另一个答案中提到的那样,JavaScript 解决方案会更好。
这是演示中的代码。
HTML
<div class="box"></div>
CSS
.box {
width: 100px;
height: 100px;
background: #333;
}
.box:hover {
-webkit-animation: rotate 2s forwards;
animation: rotate 2s forwards;
}
@-webkit-keyframes rotate {
100% { -webkit-transform: rotate(360deg); }
}
@keyframes rotate {
100% { transform: rotate(360deg); }
}
同样使用 Javascript 时,CSS 动画将向后反转(动画向后旋转的次数与之前向前旋转的次数一样多),例如,如果您通过单击照片库将图像元素旋转了几次,然后尝试关闭它使用可见性:隐藏;
我找到的解决方案是先禁用 CSS 动画,然后再更改元素设置或隐藏元素。这样它就不会反转:
document.getElementById("picture").style.transition = "none 0s linear";
就是这样:hover
工作的。它仅在鼠标悬停在元素上时有效。要做一些更永久的事情,你需要 JavaScript。