关于浏览器滚动条自定义美化的若干问题

1 篇文章 0 订阅

之前一直在苦于滚动条的样式问题,终于找到了一种较为折中的方法

先来描述一下滚动条的各属性分别代表什么

  • ::-webkit-scrollbar        滚动条整体部分,其中的属性有width,height,background,border(就和一个块级元素一样)等。
  • ::-webkit-scrollbar-button      滚动条两端的按钮。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。
  • ::-webkit-scrollbar-track         外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。
  • ::-webkit-scrollbar-track-piece        内层轨道,滚动条中间部分(除去)。
  • ::-webkit-scrollbar-thumb               滚动条里面可以拖动的那部分
  • ::-webkit-scrollbar-corner               边角
  • ::-webkit-resizer                       定义右下角拖动块的样式

注意:对以上各个部分定义width,height时。有如下功能:若是水平滚动条,则width属性不起作用,height属性用来控制滚动条相应部分竖直方向高度;若是竖直滚动条,则height属性不起作用,width属性用来控制相应部分的宽度。

能过上面的不断的测试。在Chrome中,滚动条中的各个部分和DOM中块级元素是一样的。通过::-webkit-scrollbar等就类似于原来所说的CSS中的选择器。而{}中的属性,你就像控制一般块级元素一样简单(强大啊)。

下面放上一个模板

 #scroll-1 {
        width:200px;
        height:200px;
        overflow:auto;
    }
    #scroll-1 div {
        width:400px;
        height:400px;
    }    #scroll-1::-webkit-scrollbar {
        width:10px;
        height:10px;
    }
    #scroll-1::-webkit-scrollbar-button    {
        background-color:#FF7677;
    }
    #scroll-1::-webkit-scrollbar-track     {
        background:#FF66D5;
    }
    #scroll-1::-webkit-scrollbar-track-piece {
        background:url(http://www.lyblog.net/wp/wp-content/themes/mine/img/stripes_tiny_08.png);
    }
    #scroll-1::-webkit-scrollbar-thumb{
        background:#FFA711;
        border-radius:4px;
    }
    #scroll-1::-webkit-scrollbar-corner {
        background:#82AFFF;
    }
    #scroll-1::-webkit-scrollbar-resizer  {
        background:#FF0BEE;
    }


  <div id='scroll-1'>
        <div >
            <p>请选择Webkit内核的浏览器才可以正常的看到滚动条的变化。
                小天地,大世界是一个Web前端的技术博客。 主要是关于
                HTML 5,CSS 3,JavaScript,JQuery等。除此之外,还
                包含一些PHP语言等的实用例子。</p>
            <p>请选择Webkit内核的浏览器才可以正常的看到滚动条的变化。
                小天地,大世界是一个Web前端的技术博客。 主要是关于
                HTML 5,CSS 3,JavaScript,JQuery等。除此之外,还
                包含一些PHP语言等的实用例子。</p>
            <p>请选择Webkit内核的浏览器才可以正常的看到滚动条的变化。
                小天地,大世界是一个Web前端的技术博客。 主要是关于
                HTML 5,CSS 3,JavaScript,JQuery等。除此之外,还
                包含一些PHP语言等的实用例子。</p>
            <p>请选择Webkit内核的浏览器才可以正常的看到滚动条的变化。
                小天地,大世界是一个Web前端的技术博客。 主要是关于
                HTML 5,CSS 3,JavaScript,JQuery等。除此之外,还
                包含一些PHP语言等的实用例子。</p>
            <p>请选择Webkit内核的浏览器才可以正常的看到滚动条的变化。
                小天地,大世界是一个Web前端的技术博客。 主要是关于
                HTML 5,CSS 3,JavaScript,JQuery等。除此之外,还
                包含一些PHP语言等的实用例子。</p>
        </div>
    </div>

通过以上,我们几乎就可以来重写网站的滚动条了,但是webkit提供的还有更多的伪类,可以定制更丰富滚动条样式。

本文以下内容参考:https://www.webkit.org/blog/363/styling-scrollbars/

  • :horizontal     horizontal  伪类,主要应用于选择水平方向滚动条。
  • :vertical    vertical伪类主要是应用于选择竖直方向滚动条
  • :decrement    decrement伪类应用于按钮和内层轨道(track piece)。它用来指示按钮或者内层轨道是否会减小视窗的位置(比如,垂直滚动条的上面,水平滚动条的左边。)
  • :increment     increment伪类与和decrement类似,用来指示按钮或内层轨道是否会增大视窗的位置(比如,垂直滚动条的下面和水平滚动条的右边。)
  • :start    start伪类也应用于按钮和滑块。它用来定义对象是否放到滑块的前面。
  • :end     类似于start伪类,标识对象是否放到滑块的后面。
  • :double-button    该伪类可以用于按钮和内层轨道。用于判断一个按钮是不是放在滚动条同一端的一对按钮中的一个。对于内层轨道来说,它表示内层轨道是否紧靠一对按钮。
  • :single-button    类似于double-button伪类。对按钮来说,它用于判断一个按钮是否自己独立的在滚动条的一段。对内层轨道来说,它表示内层轨道是否紧靠一个single-button。
  • :no-button    用于内层轨道,表示内层轨道是否要滚动到滚动条的终端,比如,滚动条两端没有按钮的时候。
  • :corner-present    用于所有滚动条轨道,指示滚动条圆角是否显示。
  • :window-inactive    用于所有的滚动条轨道,指示应用滚动条的某个页面容器(元素)是否当前被激活。(在webkit最近的版本中,该伪类也可以用于::selection伪元素。webkit团队有计划扩展它并推动成为一个标准的伪类)

另外,:enabled、:disabled、:hover、和:active等伪类同样在滚动条中适用。

看了这些伪类,怎么也没有明白是什么意思,还是自已得写的试试。实践出真知嘛!你可以击接以下链接到官方演示DEMO(感觉可以学到很多东西的):http://trac.webkit.org/export/41842/trunk/LayoutTests/scrollbars/overflow-scrollbar-combinations.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值