滚动条那些事

一、滚动条样式

1. ie8浏览器
名称描述
scrollbar-arrow-color三角箭头的颜色
scrollbar-face-color立体滚动条的颜色(包括箭头部分的背景色)
scrollbar-3dlight-color立体滚动条亮边的颜色
scrollbar-highlight-color滚动条的高亮颜色(左阴影?)
scrollbar-shadow-color立体滚动条阴影的颜色
scrollbar-darkshadow-color立体滚动条外阴影的颜色
scrollbar-track-color立体滚动条背景颜色
scrollbar-base-color滚动条的基色
        出现滚动条的元素{
            /*三角箭头的颜色*/
            scrollbar-arrow-color: #fff;
            /*滚动条滑块按钮的颜色*/
            scrollbar-face-color: #0099dd;
            /*滚动条整体颜色*/
            scrollbar-highlight-color: #0099dd;
            /*滚动条阴影*/
            scrollbar-shadow-color: #0099dd;
            /*滚动条轨道颜色*/
            scrollbar-track-color: #0066ff;
            /*滚动条3d亮色阴影边框的外观颜色——左边和上边的阴影色*/
            scrollbar-3dlight-color:#0099dd;
            /*滚动条3d暗色阴影边框的外观颜色——右边和下边的阴影色*/
            scrollbar-darkshadow-color: #0099dd;
            /*滚动条基准颜色*/
            scrollbar-base-color: #0099dd;
        }
2. 其他浏览器(参考-风铭大师
名称描述
::-webkit-scrollbar滚动条整体部分,其中的属性: width,height,background,border等。
::-webkit-scrollbar-button滚动条两端的按钮。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。
::-webkit-scrollbar-track外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。
::-webkit-scrollbar-track-piece内层轨道,具体区别看下面gif图,需要注意的就是它会覆盖第三个属性的样式。
::-webkit-scrollbar-thumb滚动条里面可以拖动的那部分。
::-webkit-scrollbar-corner边角,两个滚动条交汇处。
::-webkit-resizer两个滚动条交汇处用于拖动调整元素大小的小控件(基本用不上)
::-webkit-scrollbar {
    width: 6px; /*纵向滚动条的宽度*/
    height: 6px; /*横向滚动条的高度*/
    background-color: #181c32;
}

::-webkit-scrollbar-thumb {
    background-color: #5a76cd;
}

二、滚动条造成页面抖动

1. 造成页面抖动的原因:

当布局用到margin:0 auto;左右水平居中时,且有的页面有滚动条,有的页面没有,这样会造成抖动。

div{
  width:1200px;
  margin:0 auto;
}
<body>
  <div></div>
</body>
2. 解决办法(参考1-zh_rey参考2-OZCNO推荐参考3-张鑫旭 ):

(1)一直存在滚动槽overflow-y:scroll;

(2)让页面右边偏移滚动条的宽度那么长margin-left: calc(100vw - 100%);padding-left: calc(100vw - 100%);

  • 1、加在居中定宽主体的父级身上。
  • 2、calc 是CSS3中的计算,IE10+浏览器支持,IE9浏览器基本支持(不能用在background-position上);-
  • 3、100vw 相对于浏览器的 window.innerWidth,是浏览器的内部宽度,注意,滚动条宽度也计算在内!而100%是可用宽度,是不含滚动条的宽度。 于是,calc(100vw - 100%) 就是浏览器滚动条的宽度大小(如果有,如果没有滚动条则是0)!左右都有一个滚动条宽度(或都是0)被占用,主体内容就可以永远居中浏览器啦,从而没有任何跳动!
    在这里插入图片描述
    注意:ie 浏览器有个 offset 偏移量,比较推荐使用 padding-left(能解决部分问题)。
    设置 padding-left ,有时候拉动横向滚条条时,页面的偏移量(这个时候是padding)还是不正确,这时需要做响应式。
@media screen and (min-width: 1240px) {
  定宽主体 {
      padding-left: calc(100vw - 100%);
  }
}

此时,原来定宽主体就不用再写 padding-left: calc(100vw - 100%);,只需要写上面这段响应式就可以了。

(3)兼容写法:

html {
  overflow-x: hidden;
  overflow-y: auto;
}
body {
  width: 100vw;
  overflow: hidden;
  padding-left: calc(100vw - 100%);
}

也可以看我之前写的,不过相差不是很大:滚动条造成页面抖动问题


三、滚动条部分留白问题

造成滚动条留白的原因是宽度设置了100%,哪里留白就把那的 width:100% 改为:min-width:100%就好了。


四、让背景图不跟随滚动条滚动

解决办法(参考-站住,别跑):

(1)css:
在设置背景图的元素中设置一条属性: background-attachment:fixed;,兼容IE6;
(2)js:

<script type="text/javascript">
  var scrollBackground = true;
</script>  

具体效果就看原文吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值