移动端中的元素内容超出时,对容器设置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,不溢出的内容宽度和溢出的内容宽度一共是 offsetWidth。scrollWidth - offsetWidth = maxWidth,最多只能把 scrollLeft +=到 maxWidth。

originalEvent 有一些属性可以判断滚轮到底是朝着哪个方向滑动。其中 deltaY 小于 0 代表朝上滑动,反之朝下滑动。

最新文章

  1. 域名解析服务查询工具dnstracer
  2. ESP8266刷AT固件与nodemcu固件
  3. 用java 代码下载Samba服务器上的文件到本地目录以及上传本地文件到Samba服务器
  4. sublime配置java编译环境
  5. [ubuntu]中文用户目录路径改英文
  6. 关于&lt;a href=&#39;javascript:function()&#39;&gt;
  7. 剑指offer系列48---左旋转字符串
  8. 『重构--改善既有代码的设计』读书笔记----Replace Data Value with Object
  9. 2015.7.17( NOI2015 day1 )
  10. 回味Python2.7——笔记1
  11. Java学习4——java常用命令
  12. 简易商品信息管理系统——首个Web项目
  13. Clover3(可以让Windows Explorer像浏览器一样有标签页)
  14. centos6安装oracle11g过程中报错Error in invoking target “install” of makefile ‘/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’
  15. Alpha冲刺随笔四:第四天
  16. Log4j按级别输出日志到不同文件配置
  17. IE盒模型和W3C盒子模型的区别
  18. Ubuntu16.04下安装CUDA8.0和tensorflow
  19. 【NodeJs】Nodejs系列安装
  20. 理解 CSS 的 z-index 属性

热门文章

  1. 【每日一题】【位于index后的双指针&amp;排序数组】15. 三数之和/NC54 数组中相加和为0的三元组-211117/220206
  2. 【云原生 • Docker】mysql、tomcat、nginx、redis 环境部署
  3. 通过GitHub和阿里云自定义域名实现https认证
  4. 详解Python当中的pip常用命令
  5. MasaFramework -- i18n (国际化)
  6. [深度学习] tf.keras入门5-模型保存和载入
  7. .Net 7 内存模型函数描述结构MethoDesc
  8. (6)go-micro微服务consul配置、注册中心
  9. MongoDB分片副本集生产环境部署-Windows版本
  10. 使用pyenv对python进行版本控制—很好用