博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Custom Scrollbars in WebKit
阅读量:3592 次
发布时间:2019-05-20

本文共 5137 字,大约阅读时间需要 17 分钟。

原文链接:

 

Way back in the day, you could (5.5) with non-standard CSS properties like scrollbar-base-color which you would use on the element that scrolls (like the <body>) and do . IE dropped that.

These days, customizing scrollbars is back, but it's WebKit this time. It's a bit better now, because the properties are vendor-prefixed (e.g. ::-webkit-scrollbar) and use the "". This has been around for a couple of years. David Hyatt in early 2009 and put together an example page of just about you could ever want.

The Goods

The Different Pieces

These are the pseudo elements themselves. The actual parts of the scrollbars.

::-webkit-scrollbar              {
/* 1 */ }::-webkit-scrollbar-button {
/* 2 */ }::-webkit-scrollbar-track {
/* 3 */ }::-webkit-scrollbar-track-piece {
/* 4 */ }::-webkit-scrollbar-thumb {
/* 5 */ }::-webkit-scrollbar-corner {
/* 6 */ }::-webkit-resizer {
/* 7 */ }

The Different States

These are the pseudo class selectors. They allow for more specific selection of the parts, like when the scrollbar is in different states.

:horizontal:vertical:decrement:increment:start:end :double-button:single-button:no-button:corner-present:window-inactive

I'm going to steal this whole section from on the WebKit blog because it explains each part well:

:horizontal – The horizontal pseudo-class applies to any scrollbar pieces that have a horizontal orientation.

:vertical – The vertical pseudo-class applies to any scrollbar pieces that have a vertical orientation.

:decrement – The decrement pseudo-class applies to buttons and track pieces. It indicates whether or not the button or track piece will decrement the view’s position when used (e.g., up on a vertical scrollbar, left on a horizontal scrollbar).

:increment – The increment pseudo-class applies to buttons and track pieces. It indicates whether or not a button or track piece will increment the view’s position when used (e.g., down on a vertical scrollbar, right on a horizontal scrollbar).

:start – The start pseudo-class applies to buttons and track pieces. It indicates whether the object is placed before the thumb.

:end – The end pseudo-class applies to buttons and track pieces. It indicates whether the object is placed after the thumb.

:double-button – The double-button pseudo-class applies to buttons and track pieces. It is used to detect whether a button is part of a pair of buttons that are together at the same end of a scrollbar. For track pieces it indicates whether the track piece abuts a pair of buttons.

:single-button – The single-button pseudo-class applies to buttons and track pieces. It is used to detect whether a button is by itself at the end of a scrollbar. For track pieces it indicates whether the track piece abuts a singleton button.

:no-button – Applies to track pieces and indicates whether or not the track piece runs to the edge of the scrollbar, i.e., there is no button at that end of the track.

:corner-present – Applies to all scrollbar pieces and indicates whether or not a scrollbar corner is present.

:window-inactive – Applies to all scrollbar pieces and indicates whether or not the window containing the scrollbar is currently active. (In recent nightlies, this pseudo-class now applies to ::selection as well. We plan to extend it to work with any content and to propose it as a new standard pseudo-class.)

All together now

These pseudo elements and pseudo class selectors work together. Here are some random examples:

::-webkit-scrollbar-track-piece:start {
/* Select the top half (or left half) or scrollbar track individually */}::-webkit-scrollbar-thumb:window-inactive {
/* Select the thumb when the browser window isn't in focus */}::-webkit-scrollbar-button:horizontal:decrement:hover {
/* Select the down or left scroll button when it's being hovered by the mouse */}

Very Simple Example

To make a really simple custom scrollbar we could do this:

::-webkit-scrollbar {
width: 12px;} ::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); border-radius: 10px;} ::-webkit-scrollbar-thumb {
border-radius: 10px; -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); }

In which we'd get this on a simple div with vertically overflowing text:

In The Wild

Check out the very subtle and nice scrollbars on Tim Van Damme's blog (Update September 2012: Tim's site no longer uses this design):

The particularly nice bit here is that the scrollbar is on the body element, yet the scrollbar isn't stuck to the top, bottom, or right edge of the browser window as scroll bars normally are. I made a test page with copy-and-pasteable code to achieve that a similar effect:

On , they use custom scollbars on code snippets which are also pretty nice. They are less visually intense and so don't fight as much with the code highlighting.

Related

  • Dion Almaer has a useful little for scrollbars with all the parts in bold colors to see what's what. (from )
  • on Beautiful Pixels.
  • Google Wave with them back when that was still a thing.

    for replicating OS X Lion scrollbars.

 

转载地址:http://votwn.baihongyu.com/

你可能感兴趣的文章
django自定义URL(PATH)转换器
查看>>
随机请求头
查看>>
python中threading多线程以及传参
查看>>
pandas中按照某一列进行排序
查看>>
python中pyodbc连接sql server数据库
查看>>
django2.0,python3.7连接sql_server
查看>>
Python 生成requirement及使用requirements.txt安装类库
查看>>
multiprocessing.pool多线程的使用
查看>>
非计算机专业本科毕业如何迅速成长为一名算法工程师
查看>>
关于自然语言处理(NLP)的个人学习资料
查看>>
BERT
查看>>
Java keytool生成jks证书,并使用openssl查看公钥信息
查看>>
mysql创建存储过程,set动态赋值
查看>>
【c语言】蓝桥杯算法提高 Quadratic Equation
查看>>
【c语言】蓝桥杯算法提高 输入输出格式练习
查看>>
【c语言】蓝桥杯算法提高 勾股数
查看>>
【c语言】蓝桥杯算法提高 c++_ch02_04
查看>>
【c语言】蓝桥杯算法提高 3-1课后习题2
查看>>
【c语言】蓝桥杯算法提高 3-2求存款
查看>>
【c语言】蓝桥杯算法提高 3-3求圆面积表面积体积
查看>>