实现 div 元素内容超出可通过滚轮上下滑动从而使元素横向滚动
2022/9/17 23:17:25
本文主要是介绍实现 div 元素内容超出可通过滚轮上下滑动从而使元素横向滚动,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
移动端中的元素内容超出时,对容器设置overflow-x: auto
就可以通过手势水平移动。但是 PC 端只能通过鼠标滚轮上下滑动,而不能水平移动。
只需要给元素添加一个监听鼠标滚轮事件,上下滑动时修改其 scrollLeft 属性值就可以实现。直接贴上代码:
<div class="horizontal-slip-el"> <div class="child-el">首页</div> <div class="child-el">日记</div> <div class="child-el">随笔</div> <div class="child-el">标签</div> <div class="child-el">管理</div> <div class="child-el">说说</div> </div>
.horizontal-slip-el { display: flex; align-items: center; justify-content: space-between; align-content: center; flex-direction: row; flex-wrap: nowrap; white-space: nowrap; overflow-x: auto; overflow-y: hidden; width: 300px; padding: 10px; } .child-el { padding: 10px; margin: 0 10px; width: 80px; border-radius: 6px; border: 1px solid #cccccc; }
$(".horizontal-slip-el").on("mousewheel", e => { let scrollLeft = e.delegateTarget.scrollLeft; let scrollWidth = e.delegateTarget.scrollWidth - e.delegateTarget.offsetWidth; if (e.originalEvent.deltaY < 0) { if (scrollLeft >= 0) { scrollLeft -= 20; $(e.delegateTarget).animate({ scrollLeft }, 40, "linear"); } } else { if (scrollLeft <= scrollWidth) { scrollLeft += 20; $(e.delegateTarget).animate({ scrollLeft }, 40, "linear"); } } });
最主要的就是获得鼠标滚轮事件中的 delegateTarget 对象和 originalEvent 对象。delegateTarget 就是触发滚动事件的元素。元素不溢出的宽度是 scrollWidth,溢出的内容的宽度是 scrollLeft。scrollWidth - scrollLeft = maxWidth
,maxWdith 就是最多只能把 scrollLeft +=
到 maxWidth。
originalEvent 有一些属性可以判断滚轮到底是朝着哪个方向滑动。其中 deltaY 小于 0 代表朝上滑动,反之朝下滑动。
这篇关于实现 div 元素内容超出可通过滚轮上下滑动从而使元素横向滚动的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新