前言:当我们的内容超出了我们的 div,往往会出现滚动条,影响美观,尤其是当我们在做一些导航菜单的时候,滚动条一出现就破坏了 UI 效果。我们不希望出现滚动条,也不希望超出去的内容溢出,就要保留鼠标滚动的效果。我们经常在前端开发中遇到这种情况,最容易想到的是加一个 iscroll 插件,但其实现在 CSS 也可以实现这个功能,下面一起看看实现的几种方法。

1.方法一

使用三个容器包围起来,不需要计算滚动条的宽度(推荐,各浏览器均没有问题)

实现代码:

<!DOCTYPE html>

实现效果:

fd44ba8b2ccd87d67539a3c845ee6242.gif

2.方法二

计算滚动条宽度并隐藏起来,使用绝对定位进行隐藏。向右移动了17个像素,刚好等于滚动条的宽度。(各浏览器均没有问题,但是要计算滚动条宽度,不推荐)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
  </head>
  <style>	 
		.outer-container{
			width: 360px;
			height: 200px;
			position: relative;
			overflow: hidden;
		}
		.inner-container{
			position: absolute;
			left: 0;
			top: 0;
			right: -17px;
			bottom: 0;
			overflow-x: hidden;
			overflow-y: scroll;
		}	
  </style>
  <body>
	   <div class="outer-container">
		 <div class="inner-container">
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
			壮士不留名,留名非壮士。壮士留种不留名!</br>
		 </div>
	 </div>
  </body>
</html>


实现效果:

8f39f0c1ad25187edde424c8f451d976.png

3.方法三

css 隐藏滚动条。那就是自定义滚动条的伪对象选择器::-webkit-scrollbar。(各浏览器均没有问题,但只能作用于html、body标签。不推荐)

<!DOCTYPE html>

实现效果:

d554112f7fb83d894bb21aeb623b3e7b.gif

总结:

优点:
滚动条的隐藏可以让读者更聚焦于内文,而不会看到滚动条很短就懒得看、跳出网页,或一心急,就把滚动条直直往下拉。保证了界面跟UI的出入,不影响界面的美观度。
缺点:
假如读者想往回看,可能就会要滚很久。所以,如果你想为较长的内文隐藏滚动条,建议应有导览列,让读者可以快速跳到某一处。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐