之前开发隐藏 div 滚动条,都是通过设置外出 div 为 overflow: hidden , 然后设置内层 div 的宽度略大于外层 div ,这种做法限制很多,需要确定内外层 div 的宽度,没办法自适应多种分辨率的屏幕,而且开发调试起来很麻烦。
总结一下,隐藏 div 滚动条的几种方式
有的时候总是会碰到稀奇古怪的需求,像现在就有一个判断条滚动时显示,不滚动时隐藏的。按照一般的滚动条显示隐藏需求,基本上是用css的hover属性,hover的时候显示滚动条,否则隐藏。
像滚动条的控制样式我们基本知道,看下
针对不同的浏览器,有不同的隐藏滚动条的方法,以下针对三大浏览器 chrome、ie(包括 edge)、firefox 分别叙述之:
firefox 是三者之中最麻烦的:
到此还没结束,你还要在一些地方加上 width: 100vw。
假设你的 HTML 长这样:
那你的CSS就还要再加上:
综上所述,如果你想让三大浏览器的滚动条都隐藏,并且可以卷动,那你的CSS就至少要长这样:
至于 width: 100vw要加在何处,就要看你的 HTML 结构长怎样了。
可以让读者更聚焦于内文,而不会看到滚动条很短就懒得看、跳出网页,或一心急,就把滚动条直直往下拉。换言之,就是强迫读者慢慢地把内容看完。
假如读者想往回看,可能就会要滚很久。所以,如果你想为较长的内文隐藏滚动条,建议应有导览列,让读者可以快速跳到某一处。
好了,现在我们知道滚动条隐藏了,后面就有滑动时显示滚动条,滚动条没有滑动时隐藏,获取滚动条一般是写
但是我们这里用EventTarget.addEventListener() ;同时也用到了css的calc计算属性,关于EventTarget.addEventListener(),不了解的童鞋可以仔细看看,如果已经知道的童鞋可以直接略过
方法将指定的监听器注册到 EventTarget 上,当该对象触发指定的事件时,指定的回调函数就会被执行。 事件目标可以是一个文档上的元素 Element , Doument 和 Window 或者任何其他支持事件的对象(比如 XMLHttpRequest )
addEventListener() 的工作原理是将实现 EventListener 的函数或对象添加到调用它的 EventTarget 上的指定事件类型的时间侦听器列表中。
有三种代码输入的方式可以在CSS隐藏滚动条。
详细方法如下:
方法一:
代码如下:
html { overflow-y: scroll}
原理:强制显示ie的垂直滚动条,而忽略水平滚动条;
优点:完全解决了这个问题, 允许你保持完整的XHTML doctype.;
缺点:即使页面不需要垂直滚动条的时候也会出现垂直滚动条;
方法二:(推荐采用)
代码如下:
html { overflow-x: hiddenoverflow-y: auto}
原理:隐藏横向滚动,垂直滚动根据内容自适应;
优点:在视觉上解决了这个问题.在不必要的时候, 未强制垂直滚动条出现;
缺点:只是隐藏了水平滚动条,如果页面真正需要水平滚动条的时候,屏幕以外的内容会因为用户无法水平滚动,而看不到;
方法三:
代码如下:
body { margin-right: -15pxmargin-bottom: -15px}
原理:这会在margin的水平和垂直方向上添加一个负值, IE添加了该精确数值后, 便会去除对滚动条的需求假象;
优点:在视觉上解决了这个问题,垂直滚动根据内容自适应;
缺点:由于"人为创建"了15px的外边距(margin), 所以无法使用该填充过的屏幕区域。