利用padding和box-sizing实现纯CSS隐藏滚动条

在网上搜关键词“css 隐藏滚动条”,基本上都是以下两种结果:

  1. overflow: hidden
    好吧,我相信搜这个问题的人一定是知道overflow的,人家显然是想问隐藏了滚动条后还能继续滚动的方法。关键是有一半的搜索结果都是在给我们介绍overflow。。。
  2. ::-webkit-scrollbar {display:none}
    这个伪元素从效果上是可行的,然而这个webkit前缀就表示了它基本上只能在chrome里生效,显然无法解决问题。

这里提供一个可以完美实现隐藏滚动条的方法,主要是利用了在box-sizing为content-box模式下的时候的一个奇特的性质:当给元素设置padding-right的时候,滚动条会被往外挤,使得当前元素的宽度增加,这时我们只需要在当前元素外面套一层和当前元素原始宽高相同的元素,再将外层元素设置为overflow: hidden 就可以隐藏滚动条了。
示例代码如下:

body {
  display: flex;
  height: 100vh;
}
//外层元素
.box1 {  
  height: 20%;
  width: 20%;
  border: 1px solid #008080;
  margin: auto;
  overflow: hidden;
}
//内层可滚动元素
.box2 {
  box-sizing: content-box;
  height: 100%;
  padding-right: 17px;
  width: 107%;
  overflow: auto;
}
<div class="box1">
  <div class="box2">
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
    <p>ddddd</p>
  </div>
</div>

http://codepen.io/almon123/pen/KrAxJR

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 关于css常见问题,大多是移动端的。 简单的排版规则:条目与条目之间空两行,每条内容部分分段空一行。标点符号全部用...
    苏水儿阅读 5,062评论 0 9
  • 常见试题 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-h...
    他大舅啊阅读 2,503评论 1 5
  • 一、<meta> 标签提供了有关页面的元信息,例如作者、日期和时间、网页描述、关键词等,除了SEO,在移动端浏览器...
    阳代棣阅读 1,263评论 0 4
  • 时间:2017年9月25日。 天气:凉爽。 地点:杭州柳营路6号,黄楼酒吧。 心情:期待,三分;紧张,二两;怂有一...
    书痴评书阅读 260评论 0 0