【发布时间】:2019-09-08 02:00:32
【问题描述】:
我在使用 Microsoft Edge (40.15063.674.0) / Microsoft EdgeHTML (15.15063) 和下面的代码时遇到了一个奇怪的现象。正如预期的那样,当您使用任何浏览器将鼠标悬停在黑匣子上时,它会在 0.5 秒内将黑匣子平滑地缩放到其大小的 1.25 倍。当鼠标在 Edge 中的框上移动过快时,就会出现问题。发生的情况是,盒子不是平滑地缩放,而是跳转/捕捉到所需的转换,然后再返回。假设用户正在将鼠标从屏幕的一侧快速移动到另一侧,并“穿过草坪”,可以说是穿过盒子的表面。
事实上,如果我在其他浏览器中移动得太快,盒子根本不会尝试缩放。它只是保持很小,除非鼠标移动实际上最终停止在该区域。即使在 Internet Explorer 中,只要我可以将鼠标指针移过它,它也能正常工作,但只有在 Edge 中我才能发现这种行为。我必须走得相对缓慢,以防止出现类似抖动的快照。效果如何也无所谓。它可能是“比例”、“translateY”等。如果鼠标在“:hover”上移动过快,则在 Edge 中不平滑。这是一个已知的问题?有什么办法可以防止这种情况发生吗?
<!DOCTYPE html>
<style>
.box {
background-color: #000;
cursor: pointer;
position: absolute;
left: 200px;
top: 200px;
height: 200px;
width: 200px;
transition: transform 0.5s;
transition-delay: 0.1s; <=== Added this to stop it from jumping
}
.box:hover {
transform: scale(1.25);
}
</style>
<div class="box"></div>
我什至尝试过使用 jQuery 的“.hover”函数复制效果,在鼠标进入时添加 CSS 属性,然后在鼠标离开时将其移除,但无济于事。它的行为方式完全相同。如果鼠标在 Edge 中移动过快,悬停效果会跳跃/捕捉。
【问题讨论】:
-
我认为这是设计使然。我已经在 Chrome、IE 11 和 Microsoft Edge (42.17134.1.0) / Microsoft EdgeHTML (17.17134) 上测试了您的代码,如果我移动得太快,盒子根本不会尝试缩放。如果我慢慢移动鼠标,它会很好用。
-
除非 Edge 从 40->42、EdgeHTML 15->17 发生变化,否则当我在我的 Edge 版本中移动光标过快时,框会立即跳转到 1.25 倍比例,而没有这样做需要 0.5 秒。它不仅根本不尝试缩放,它就像它转换但没有应用时间参数(好像它被设置为 0s)。
标签: css hover css-transitions microsoft-edge