有沒有覺得瀏覽器自帶的原始滾動條很不美觀,同時也有看到很多網站的自定義滾動條顯得高端,就連chrome32.0開發板都拋棄了原始的滾動條,美觀多了。那webkit瀏覽器是如何自訂捲軸的呢?
webkit支援擁有overflow屬性的區域,列錶框,下拉選單,textarea的滾動條自訂樣式,所以用處還是挺大的。當然,相容於所有瀏覽器的捲軸樣式目前是不存在的。
來看看這2個捲軸demo: demo1(圖片版)、demo2(純CSS3版)
##捲軸組成
#
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ ::-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中文網其他相關文章!