CSS自訂捲軸樣式

來源:互聯網
上載者:User

相信很多人都遇到過在設計中自訂捲軸樣式的情景,之前我都是努力說服設計師接受瀏覽器內建的捲軸樣式,但是這樣只能規避還是解決不了問題,最近在項目中遇到了,正好來總結一下。當然,相容所有瀏覽器的捲軸樣式目前是不存在的。

IE下的捲軸樣式:樣本

scrollbar-arrow-color: color; /*三角箭頭的顏色*/scrollbar-face-color: color; /*立體捲軸的顏色(包括箭頭部分的背景色)*/scrollbar-3dlight-color: color; /*立體捲軸亮邊的顏色*/scrollbar-highlight-color: color; /*捲軸的醒目提示(左陰影?)*/scrollbar-shadow-color: color; /*立體捲軸陰影的顏色*/scrollbar-darkshadow-color: color; /*立體捲軸外陰影的顏色*/scrollbar-track-color: color; /*立體捲軸背景顏色*/scrollbar-base-color:color; /*捲軸的基色*/

大概就這些,你也可以定義cursor來定義捲軸的滑鼠手勢。

從上一部分的樣式名中就可以看到,IE只能定義相關部分的color等屬性,這樣太不靈活了。

webkit下的捲軸樣式: 不再是用簡單的幾個CSS屬性,而是一坨的CSS虛擬元素:

::-webkit-scrollbar{} /*捲軸整體部分*/::-webkit-scrollbar-button{} /*捲軸兩端的按鈕*/::-webkit-scrollbar-track{} /*外層軌道*/::-webkit-scrollbar-track-piece{} /*內層軌道,捲軸中間部分(除去)*/::-webkit-scrollbar-thumb{} /*拖動條?滑塊?捲軸裡面可以拖動的那個,腫麼翻譯好呢?*/::-webkit-scrollbar-corner{} /*邊角*/::-webkit-resizer{} /*定義右下角拖動塊的樣式*/

通過這些虛擬元素,可以完全的重寫一個網站的捲軸樣式。

當然webkit提供的不止這些,還有很多偽類,可以更豐富捲軸樣式:

:horizontal{} /*應用於水平方向的捲軸*/:vertical{} /*應用於豎直方向的捲軸*/:decrement{} /*應用於按鈕和內層軌道(track piece)。它用來指示按鈕或者內層軌道是否會減小視窗的位置(比如,垂直捲軸的上面,水平捲軸的左邊。)*/:increment{} 和:decrement{} /*類似,用來指示按鈕或內層軌道是否會增大視窗的位置(比如,垂直捲軸的下面和水平捲軸的右邊。)*/: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,這裡不再做了,網上已經有很多demo可以參考,比如,webkit官方的這個,具體的線上項目中也有現成的例子,比如,QQ空間的簽到彈出框和豆瓣說的右側詳情欄(某條資訊評論多的時候會顯示)。

值得一提的是,webkit的這個偽類和虛擬元素的實現很強大,雖然類目有些多,但是我們可以把捲軸當成一個頁面元素來定義,也差不多可以用上一些進階的CSS3屬性,比如漸層、圓角、RGBa等等,當然有些地方也可以用圖片,然後圖片也可以轉換成Base64,總之,可以盡情發揮了。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.