关于浏览器的滚动条的几个小而美的结论。

(1)在 PC 端,无论是什么浏览器,默认滚动条均来自<html>,而不是<body>标签。验
证很简单,新建一个空白页面,此时<body>标签的默认 margin 值是.5em,如果滚动条是由
<body>标签产生的,那么效果应该如图 1 所示这般边缘留有间隙。但是最后实现结果却是


图 2所示的这样没有间隙。
图 1 <body>产生滚动条的假想效果 图 2 实际效果无间隙,滚动条由<html>产生
所以,如果我们想要去除页面默认滚动条,只需要:
html { overflow: hidden; }
而没必要把<body>也拉下水:
html, body { overflow: hidden; }

(2)滚动条会占用容器的可用宽度或高度。IE7 及以上版本 IE、Chrome、Firefox
浏览器滚动栏所占据的宽度均是17px,注意,很精准的是17px,

要知道自己浏览器的滚动栏宽度是多少其实很简单,代码如下:
168 第 6 章 流的破坏与保护
.box { width: 400px; overflow: scroll; }
<div class="box">
<div id="in" class="in"></div>
</div>
console.log(400 - document.getElementById("in").clientWidth);

(3)这里分享一个可以让页面滚动条不发生晃动的小技巧,即使用如下 CSS 代码:
html {
overflow-y: scroll; /* for IE8 */
}
:root {
overflow-y: auto;
overflow-x: hidden;
}
:root body {
position: absolute;
}
body {
width: 100vw;
overflow: hidden;
}
基本上药到病除,而且后遗症非常少,大家不妨试试!

(4)滚动条是可以自定义的。因为 IE 浏览器的自定义效果实在是比原生的还要难看,就不浪费
大家时间了,就此打住。
倒是支持-webkit-前缀的浏览器可以说说。例如,对于 Chrome 浏览器:
• 整体部分,::-webkit-scrollbar;
• 两端按钮,::-webkit-scrollbar-button;
• 外层轨道,::-webkit-scrollbar-track;
• 内层轨道,::-webkit-scrollbar-track-piece;
• 滚动滑块,::-webkit-scrollbar-thumb;
• 边角,::-webkit-scrollbar-corner。
但是我们平时开发中只用下面 3 个属性:
::-webkit-scrollbar { /* 血槽宽度 */
width: 8px; height: 8px;
}
::-webkit-scrollbar-thumb { /* 拖动条 */
background-color: rgba(0,0,0,.3);
border-radius: 6px;
}
::-webkit-scrollbar-track { /* 背景槽 */
background-color: #ddd;
border-radius: 6px;
}

在目标浏览器下的滚动条效果就会如图所示这般。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值