【发布时间】:2019-02-13 00:31:20
【问题描述】:
使用 CSS 编码图像或框以在悬停时移动时会出现意外结果。如果鼠标在过渡开始时位于点击区域中但不在结束时的位置,则过渡效果将无限重复并在没有延迟的情况下出现卡顿。以下是该问题的快速 html/css 演示:
div {
height: 200px;
width: 200px;
background-color: red;
}
div:hover {
margin-left: 100px;
}
<!doctype html> <html>
<head> <title> Hover / Transition Demo </title>
<link rel="stylesheet" type="text/css" href="stylesheet.css"></head>
<body>
<div> </div>
</body>
</html>
要重现该问题,请将鼠标悬停在红色框的左侧,这应该会导致方块左右快速移动。
有没有一个干净的方法来解决这个碍眼的问题?有几种解决方案可能会发生: 盒子停留在起始位置;或结束位置;有一个延迟只适用于这种情况,以避免口吃效应;或者鼠标需要在过渡重复之前移动至少一个像素。理想情况下,我想要所有这些解决方案,但只有一个会很棒!提前致谢。
【问题讨论】:
-
我通常会尝试确保任何使用变换的动画都不会改变悬停触发器的位置或大小。这将涉及更多的标记来完成,但基本上您将创建一个保持其位置并捕获鼠标事件的包装器。然后,动画在改变元素的位置时变得严格视觉而不是功能。
标签: html css hover css-transitions