首頁  >  文章  >  web前端  >  CSS3自訂捲軸樣式:webkit-scrollbar的詳解

CSS3自訂捲軸樣式:webkit-scrollbar的詳解

黄舟
黄舟原創
2017-07-03 11:14:282035瀏覽

有沒有覺得瀏覽器自帶的原始滾動條很不美觀,同時也有看到很多網站的自定義滾動條顯得高端,就連chrome32.0開發板都拋棄了原始的滾動條,美觀多了。那webkit瀏覽器是如何自訂捲軸的呢?

前言

webkit支援擁有overflow屬性的區域,列錶框,下拉選單,textarea的滾動條自訂樣式,所以用處還是挺大的。當然,相容於所有瀏覽器的捲軸樣式目前是不存在的。

示範

來看看這2個捲軸demo: demo1(圖片版)、demo2(純CSS3版)

##捲軸組成

  • ::-webkit-scrollbar 捲軸整體部分

  • ::-webkit-scrollbar-thumb  捲軸裡面的小方塊,能向上向下移動(或向左往右移動,取決於是垂直捲軸還是水平捲軸)

  • #::-webkit-scrollbar-track  捲軸的軌道(裡面裝有Thumb)

  • ::-webkit-scrollbar-button 捲軸的軌道的兩端按鈕,允許透過點擊微調小方塊的位置。

  • ::-webkit-scrollbar-track-piece 內層軌道,捲軸中間部分(除去)

  • ::-webkit- scrollbar-corner 邊角,即兩個捲軸的交匯處

  • ::-webkit-resizer 兩個捲軸的交匯處上用於透過拖曳調整元素大小的小控制項

簡潔版

這裡就不貼詳細程式碼了,demo裡面可以透過查看原始碼尋找具體樣式的設定。來看看demo2中第二個捲軸的樣式


#

/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar
{
	width: 16px;
	height: 16px;
	background-color: #F5F5F5;
}

/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
{
	-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
	border-radius: 10px;
	background-color: #F5F5F5;
}

/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb
{
	border-radius: 10px;
	-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
	background-color: #555;
}

詳細設定

定義捲軸就是利用偽元素與偽類,那什麼是偽元素和偽類呢?

偽類大家應該很熟悉:link,:focus,:hover,此外CSS3中又增加了許多偽類別選擇器,如:nth-child,:last-child, :nth-last-of-type()等。

CSS中的偽元素大家以前看過::first-line,:first-letter,:before,:after。那麼在CSS3中,偽元素進行了調整,在以前的基礎上增加了一個“:”也就是現在變成了“::first-letter,::first-line,::before,::after”,另外CSS3也增加了一個「::selection」。兩個「::」和一個「:」在css3中主要用來區分偽類別和偽元素

webkit的偽類和偽元素的實作很強,可以把捲軸當成一個頁面元素來定義,再結合一些高階的CSS3屬性,像是漸變、圓角、RGBa等等。然後如果有些地方要用圖片,可以把圖片也可以轉換成Base64,不然每次都要載入那個多個圖片,增加請求數。

任何物件都可以設定:邊框、陰影、背景圖片等等,建立​​的捲軸任然會依照作業系統本身的設定來完成其互動的行為。下面的偽類可以應用在上面的偽元素。有點小複雜,具體怎麼寫可以看第一個demo,那裡也有註解。

:horizontal
//horizontal伪类适用于任何水平方向上的滚动条

:vertical
//vertical伪类适用于任何垂直方向的滚动条

:decrement
//decrement伪类适用于按钮和轨道碎片。表示递减的按钮或轨道碎片,例如可以使区域向上或者向右移动的区域和按钮

:increment
//increment伪类适用于按钮和轨道碎片。表示递增的按钮或轨道碎片,例如可以使区域向下或者向左移动的区域和按钮

:start
//start伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的前面

:end
//end伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的后面

:double-button
//double-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一对按钮。也就是轨道碎片紧挨着一对在一起的按钮。

:single-button
//single-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一个按钮。也就是轨道碎片紧挨着一个单独的按钮。

:no-button
no-button伪类表示轨道结束的位置没有按钮。

:corner-present
//corner-present伪类表示滚动条的角落是否存在。

:window-inactive
//适用于所有滚动条,表示包含滚动条的区域,焦点不在该窗口的时候。

::-webkit-scrollbar-track-piece:start {
/*滚动条上半边或左半边*/
}

::-webkit-scrollbar-thumb:window-inactive {
/*当焦点不在当前区域滑块的状态*/
}

::-webkit-scrollbar-button:horizontal:decrement:hover {
/*当鼠标在水平滚动条下面的按钮上的状态*/
}

以上是CSS3自訂捲軸樣式:webkit-scrollbar的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn