CSS 设置滚动条样式

滚动条是网页中的常见元素,但通常改变它的样式并不是那么容易,所以长期以来一直处于被忽略的地位。其实在 webkit 浏览器中,我们可以通过一些专有的伪元素和伪类对滚动条进行定制。

伪元素

    ::-webkit-scrollbar              { /* 滚动条的整体部分 */ }
    ::-webkit-scrollbar-button       { /* 滚动条上下两端的按钮 */ }
    ::-webkit-scrollbar-track        { /* 滚动条的轨道部分 */ }
    ::-webkit-scrollbar-track-piece  { /* 滚动条的轨道部分,不包含滑块 */ }
    ::-webkit-scrollbar-thumb        { /* 滚动条的滑块 */ }
    ::-webkit-scrollbar-corner       { /* 两条滚动条相交部分 */ }

伪类选择器

    :horizontal /* 水平方向滚动条*/
    :vertical /* 垂直方向滚动条 */
    :decrement /* 适用于 button 和 track-piece,对于垂直滚动条来说表示上方按钮部分或滚动条上半部分 */
    :increment /* 适用于 button 和 track-piece,对于垂直滚动条来说表示下方按钮部分或滚动条下半部分 */ 
    :start /* 同 decrement  */
    :end /* 同 increment */
    :corner-present /* 适用于所有 scollbar 局部伪元素,表示滚动条的 corner 是否存在*/
    :enable /* 适用于 button、thumb、track-piece 和 track,表示滚动条可以活动 */
    :disable /* 适用于 button、thumb、track-piece 和 track,表示滚动条不可以活动,(手动设置 overflow:scroll,强制出现滚动条时会出现这种情况) */
    :active /* 适用于 thumb 和 track,当鼠标移到滑块上时触发 */
    :hover /* 适用于 thumb 和 track,当鼠标拖动滑块时触发 */

示例代码

    ::-webkit-scrollbar {
      height: 16px;
      overflow: visible;
      width: 16px
    }

    ::-webkit-scrollbar-button {
      height: 0;
      width: 0
    }

    ::-webkit-scrollbar-track {
      background-clip: padding-box;
      border: solid transparent;
      border-width: 0 0 0 4px
    }

    ::-webkit-scrollbar-track:active {
      background-color: rgba(0, 0, 0, .05);
      -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .14), inset -1px 0 0 rgba(0, 0, 0, .07);
      box-shadow: inset 1px 0 0 rgba(0, 0, 0, .14), inset -1px 0 0 rgba(0, 0, 0, .07)
    }

    ::-webkit-scrollbar-track:hover {
      background-color: rgba(0, 0, 0, .05);
      -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1);
      box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1)
    }

    ::-webkit-scrollbar-track:horizontal {
      border-width: 4px 0 0
    }

    ::-webkit-scrollbar-track:horizontal:hover {
      -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
      box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1)
    }

    ::-webkit-scrollbar-track:horizontal:active {
      -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, .14), inset 0 -1px 0 rgba(0, 0, 0, .07);
      box-shadow: inset 0 1px 0 rgba(0, 0, 0, .14), inset 0 -1px 0 rgba(0, 0, 0, .07)
    }

    ::-webkit-scrollbar-thumb {
      background-color: rgba(0, 0, 0, .2);
      background-clip: padding-box;
      border: solid transparent;
      border-width: 1px 1px 1px 6px;
      min-height: 28px;
      padding: 100px 0 0;
      -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07);
      box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07)
    }

    ::-webkit-scrollbar-thumb:hover {
      background-color: rgba(0, 0, 0, .4);
      -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, .25);
      box-shadow: inset 1px 1px 1px rgba(0, 0, 0, .25)
    }

    ::-webkit-scrollbar-thumb:active {
      background-color: rgba(0, 0, 0, 0.5);
      -webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35);
      box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35)
    }

    ::-webkit-scrollbar-thumb:horizontal {
      border-width: 6px 1px 1px;
      padding: 0 0 0 100px;
      -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset -1px 0 0 rgba(0, 0, 0, .07);
      box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset -1px 0 0 rgba(0, 0, 0, .07)
    }

    ::-webkit-scrollbar-corner {
      background: transparent
    }

以上 google drive 的滚动条的部分代码,把它们加到你的网站里,看看有什么变化吧。

results matching ""

    No results matching ""