html - 悬停时强制结束 CSS 过渡
问题描述
默认情况下,如果您停止将鼠标悬停在元素上,则任何属性的转换也将停止。简单的例子:
li {
position: relative;
transition: 1s;
left: 0;
}
li:hover {
left: 20px;
}
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
尝试将指针从列表的顶部快速运行到底部,元素几乎不会移动。我想实现过渡一旦开始就会结束时的行为。我正在寻找纯 CSS 解决方案。
解决方案
不确定这是否可以实现css
,我会使用Javascript
它并在过渡完成时收听。
let listItems = document.querySelectorAll('li');
listItems.forEach(listItem=>{
listItem.addEventListener('mouseover', function() {
this.classList.add('slide-left');
});
listItem.addEventListener('transitionend', function() {
this.classList.remove('slide-left');
});
})
li {
position: relative;
transition: 1s;
left: 0;
}
li:hover, .slide-left {
left: 20px;
}
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
推荐阅读
- encryption - 如何从谷歌云数据流中读取存储在云存储中的客户管理的加密文件?
- kubernetes - 确保 GCE / GKE 上的 XFS 卷
- junit - JUnit、TestNg 和 Mockito 空指针异常
- javascript - 如何在 Safari 中使用 iframe 打开新标签页?
- ios - 以编程方式将视图添加到另一个视图
- node.js - BitBucket Pipeline:在 microsoft/dotnet:sdk 映像上为 Gulp 添加 NodeJS
- android - openOptionsMenu 不起作用:错误的 SDK?
- javascript - 如何重写重复的 jquery 代码
- java - 如何从双数设置舍入值
- android - 如何在未安装 Google Play 服务的情况下解决 javax.net.ssl.SSLHandshakeException 错误?