CSS自定義滾動條樣式

2020-12-16 站長之家

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

IE下的滾動條樣式

IE是最早提供滾動條的樣式支持,好多年了,但是其它瀏覽器一直沒有支持,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來定義滾動條的滑鼠手勢。

這裡,很久以前danger做了個基於Flash的可視化工具,簡單但是好用:

選中CSS選項即可自動生成CSS樣式,這裡不再過多的介紹了。嗯,多謝大貓老溼推薦。

webkit的自定義滾動條樣式

yes,這裡才是今天要重點介紹的。

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

webkit最近實現了對滾動條的支持,先看一個簡單的demo:

不過,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 – horizontal偽類應用於水平方向的滾動條

:vertical – vertical偽類應用於豎直方向的滾動條

:decrement – decrement偽類應用於按鈕和內層軌道(track piece)。它用來指示按鈕或者內層軌道是否會減小視窗的位置(比如,垂直滾動條的上面,水平滾動條的左邊。)

:increment – increment偽類和decrement類似,用來指示按鈕或內層軌道是否會增大視窗的位置(比如,垂直滾動條的下面和水平滾動條的右邊。)

:start – 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,總之,可以盡情發揮了。

參考文章:

Styling Scrollbars

Creating custom scrollbars with CSS; How CSS isn’t great for every task

PS:中間部分術語翻譯不到位,歡迎斧正。

(來源:前端觀察

相關焦點

  • 用CSS控制瀏覽器滾動條樣式原始碼
    2.scrollbar-3d-light-color立體滾動條亮邊的顏色scrollbar-arrow-color上下按鈕上三角箭頭的顏色scrollbar-base-color滾動條的基本顏色scrollbar-dark-shadow-color立體滾動條強陰影的顏色scrollbar-face-color立體滾動條凸出部分的顏色
  • 使用HTML DIV+CSS樣式+JavaScript實現自定義個性化的模態窗口
    圖1圖1就是一個使用DIV+CSS自定義的一個模態窗口,其優點是個性化強,根據系統要求完全自行設計,而系統窗口是無法做到的。02第二節:CSS 設置一、 position定位在CSS樣式中如果要使一個DIV相對於整個瀏覽器定位,並且是全屏顯示,帶背景色,則可以設置如下CSS樣式:<!
  • CSS樣式「程式設計師培養之路第六天」
    3、滑鼠樣式:cursor定義滑鼠的樣式cursor:pointerdefault默認pointer小手形狀move移動形狀scroll 內容會被修剪,但是瀏覽器會顯示滾動條以便查看其餘的內容。auto 如果內容被修剪,則瀏覽器會顯示滾動條以便查看其餘的內容。
  • css3必須了解的知識 css中常見的樣式屬性和值
    繼續上一篇文章的繼續了解css的基礎知識 全棧學習筆記,不同平臺不同的我!>浮動和清除浮動滾動條樣式顯示和隱藏字體與顏色font-family:微軟雅黑;/*字體名稱(類型):微軟雅黑,黑體,楷體,宋體*/
  • CSS樣式全部屬性和難記憶點(歸納)
    有一些CSS的冷門樣式太多了,但是又想記住,可以看這篇文章,這篇文章包括了一些css需要記憶的一些屬性,不包括平時經常使用的(相信你已經接觸的太多了)偽類選擇器偽類作用:link未訪問:visited已訪問:hover滑鼠移動到連結上:active選定的連結文字陰影
  • CSS基礎—CSS樣式如何應用到HTML元素
    一種方式是利用HTML元素的style屬性,樣式表作為style屬性的值,該方式也稱為行內樣式;一種方式是將樣式表放置在HTML網頁文檔head標籤內,每個樣式表賦予一個名稱,然後在HTML元素中通過class屬性引入樣式表,該方式也稱為內部樣式;再一種方式是單獨將樣式表寫入到一個文件,文件的擴展名為css,然後通過HTML的link標籤連結外部樣式表文件,在HTML元素中通過class屬性引入樣式表文件中的樣式表
  • CSS表格樣式
    表格的樣式一般可以在HTML中直接定義,但是結構和樣式需要分開聲明,這可以方便後期的維護和修改。
  • CSS樣式--字體屬性和文本屬性
    font字體屬性css樣式中,字體屬性有以下幾種:p{    font-size:50px; /*字體大小*/    line-height: 30px; /*行高*/文本屬性CSS樣式中,常見的文本屬性有以下幾種:letter-spacing: 0.5cm ; 單個字母之間的間距word-spacing: 1cm; 單詞之間的間距text-decoration: underline; 字體修飾:underline下劃線、line-through中劃線、overline上劃線
  • CSS樣式大全
    (微信後臺回復「CSS」,即可獲得關於css設計的幫助文檔哦)字體屬性:(font)大小 {font-size: x-large;}(特大) xx-small;(極小) 一般中文用不到,只要用數值就可以,單位:PX、PD樣式 {font-style: oblique;}(偏斜體) italic;(斜體) normal;(正常)行高
  • 小程序實踐:基礎內容之progress,如何自定義一個環形進度條?
    一個進度條往往指示一件事情的進度,所以最好的動畫啟動模式是「forwards」,即每次從上次結束處開始。在啟用progress的active動畫後,每走一段都是一段動畫,每段動畫都是基於css的動畫繪製,都有時間。屬性duration用於標識行走1%需要花費的時間,默認值為30毫秒。這個值越大,動畫越細膩。
  • CSS網頁的布局設置
    2.內容垂直居中盒子中只有一行文本 ,讓內容在盒子中垂直居中,設置行高的高度(line-height)和內容的高度(height)一致3.行內元素和塊元素行內元素:一行內可以有多個標籤,寬度是由內容決定例如 img a span ins b 默認的css
  • 面試題聯盟之CSS篇
    優先級算法規則:優先級就近原則,同權重情況下樣式定義最近者為準;!預處理器(sass/less/stylus/postcss)這些都是類css語言,通過webpack編譯可以轉成瀏覽器可讀的css,並且賦予css更強大的功能。
  • 《精通CSS》第2章 添加樣式
    不過更推薦大家使用重設樣式的庫,如 Eric Meyer 的CSS Reset[1]和Nicolas Gallagher 的 Normalize.css[2]。組合選擇器:組合選擇器顧名思義,是兩個及以上的獨立選擇器的組合。
  • CSS沒那麼難,入門篇(一)
    正確注釋方法如下:<style type="text/css"> body { /* 去除瀏覽器默認外邊距 */ margin: 0; }</style>樣式權重CSS樣式有連結樣式、標籤樣式、行間樣式連結樣式:引入外部層疊樣式表文件
  • CSS面試須知,哪些需要掌握得CSS技巧
    然後設置邊框樣式。IE下,可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性;Firefox下,只能使用getAttribute()獲取自定義屬性。解決方法:統一通過getAttribute()獲取自定義屬性。
  • HTML CSS整理筆記
    31.CSS3的基本選擇器 (1)標籤選擇器:以標籤名作選擇器的名稱如 h1{color:red;} (2)類選擇器:選擇器名可自定義如 .red{color:red;}同時要設置<標籤>內容</標籤> (3)ID選擇器:選擇器名可自定義如 #red{color:red;}同時要設置<標籤 id="red">
  • 關於CSS樣式衝突排序的一個小試驗
    按照我們對CSS優先權的理解,最後定義的 CSS 樣式將會覆蓋在其之前定義的所有已經存在、或與之衝突的樣式,比如下面這個例子: color:green 將之前定義的 red 覆蓋掉了,至於黃色背景為何沒有消失,那是因為第二個 p 的定義中並沒有與之衝突的定義,因此它還是有效的。
  • 將CSS樣式代碼應用到HTML頁面的幾種方式
    ,其缺點是樣式代碼不能重複使用,所以一般不建議使用。2、內嵌樣式表內嵌樣式表是在頭部區域,利用<style></style>標籤書寫CSS樣式代碼,格式如下圖:其中,「選擇器」可以是HTML的標籤,也可是CSS的類。type=」text/css」用來定義文件的類型為樣式表文本文件。
  • Web前端入門新人必看,怎樣使用CSS修改HTML的樣式
    一、CSS的起源當web開發還是一項新技術的時候,無論定義網頁內容還是定義網頁樣式,都是使用的HTML語言,HTML的內容和樣式沒有區分開,如古老的HTML樣式:Web開發人員想開發一種新的語言,把表示樣式的代碼從HTML中分離出來,並且創建一種規則來定義HTML標籤要顯示成什麼樣子,這門語言叫做CSS,CSS是用來描述HTML標籤應該如何顯示的一個代碼。
  • CSS樣式的CSS規則定義譯文
    在Dreamweaver CS網頁設計中,對於初學者來說,學習CSS樣式基礎其實不是很難,現在小編將CSS規則定義翻譯如下,希望能給一起學習網頁設計的網友更多方便,可供參考與理解。當然,如果你覺得此經驗有用,請記得收藏!如圖,CSS定義之類型,圖中已標有譯文。