CSS滾動(dòng)條實(shí)現(xiàn)步驟及美化小技巧

2022-05-19 15:53 更新

很多朋友在網(wǎng)頁(yè)設(shè)計(jì)中要自定義滾動(dòng)條樣式的情景,滾動(dòng)條的樣式我們可以通過(guò)css來(lái)控制的,比如網(wǎng)易郵箱的滾動(dòng)條樣子很好看,就是利用的CSS來(lái)設(shè)置實(shí)現(xiàn)的。但是css控制的滾動(dòng)條應(yīng)該如何實(shí)現(xiàn)和隱藏呢?滾動(dòng)條能不能換顏色或者做的更好看一些呢?下面通通告訴你。

在開始本節(jié)內(nèi)容前,你可以復(fù)習(xí)一下CSS overflow 屬性的內(nèi)容。


1、?overflow-y? : 設(shè)置當(dāng)對(duì)象的內(nèi)容超過(guò)其指定高度時(shí)如何管理內(nèi)容;?overflow-x ?: 設(shè)置當(dāng)對(duì)象的內(nèi)容超過(guò)其指定寬度時(shí)如何管理內(nèi)容。

參數(shù):
?visible?:擴(kuò)大面積以顯示所有內(nèi)容

?auto?:僅當(dāng)內(nèi)容超出限定值時(shí)添加滾動(dòng)條

?hidden?:總是隱藏滾動(dòng)條

?scroll?:總是顯示滾動(dòng)條

2、?height? : 設(shè)置滾動(dòng)條的高度(修改其后數(shù)值即可)。

3、滾動(dòng)條顏色參數(shù)設(shè)置:

?scrollbar-3d-light-color ?設(shè)置或檢索滾動(dòng)條亮邊框顏色

?scrollbar-highlight-color ?設(shè)置或檢索滾動(dòng)條3D界面的亮邊(ThreedHighlight)顏色

?scrollbar-face-color?  設(shè)置或檢索滾動(dòng)條3D表面(ThreedFace)的顏色

?scrollbar-arrow-color ? 設(shè)置或檢索滾動(dòng)條方向箭頭的顏色

?scrollbar-shadow-color?  設(shè)置或檢索滾動(dòng)條3D界面的暗邊(ThreedShadow)顏色

?scrollbar-dark-shadow-color ?設(shè)置或檢索滾動(dòng)條暗邊框(ThreedDarkShadow)顏色

?scrollbar-base-color ? 設(shè)置或檢索滾動(dòng)條基準(zhǔn)顏色

設(shè)置滾動(dòng)條樣式

在原來(lái)的 html 的時(shí)候,我們可以這樣定義整個(gè)頁(yè)面的滾動(dòng)條
body{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
   scrollbar-highlight-color:#fff; /*- 左二 -*/
   scrollbar-face-color:#E4E4E4; /*- 面子 -*/
   scrollbar-arrow-color:#666; /*- 箭頭 -*/
   scrollbar-shadow-color:#808080; /*- 右二 -*/
   scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
   scrollbar-base-color:#D7DCE0; /*- 基色 -*/
   scrollbar-track-color:#;/*- 滑道 -*/
}

但是同樣的代碼,我們應(yīng)用在 xhtml 下就不起作用了,我相信好多朋友也遇到過(guò)同樣的問題
那么怎么才能在 xhtml 下應(yīng)用滾動(dòng)條樣式呢?看下列代碼
html{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
   scrollbar-highlight-color:#fff; /*- 左二 -*/
   scrollbar-face-color:#E4E4E4; /*- 面子 -*/
   scrollbar-arrow-color:#666; /*- 箭頭 -*/
   scrollbar-shadow-color:#808080; /*- 右二 -*/
   scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
   scrollbar-base-color:#D7DCE0; /*- 基色 -*/
   scrollbar-track-color:#;/*- 滑道 -*/
}

這段代碼和上一段唯一的不同就是在 CSS 定義的元素上,一個(gè)是 body 一個(gè)是 html。我們?cè)贉y(cè)試一下,把 html 頁(yè)面的"body"修改成"html"測(cè)試一下,發(fā)現(xiàn)依然可以實(shí)現(xiàn)效果。那到底是為什么呢?

從字面上來(lái)看,xhtml 比 html 多一個(gè) x,那么這個(gè) x 其實(shí)也就是 xml,為什么要加一個(gè) xml 在里面?其實(shí)最根本的原因就是要讓 html 更加結(jié)構(gòu)化標(biāo)準(zhǔn)化(因?yàn)?html 實(shí)在是太爛)。我們?cè)?html 里面定義的是 body,因?yàn)?html 不是很標(biāo)準(zhǔn)所以這樣可以生效,而在xhtml里面這樣就不行了,我看看那個(gè)圖很明顯,body 標(biāo)簽本身不是根元素,只有 html 才是根元素,而頁(yè)面的滾動(dòng)條也是屬于根元素的,所以這就是我們?yōu)槭裁炊x body 沒有效果的原因,因?yàn)槲覀兌x的只是一個(gè)子原素。ok,我們知道了原理,來(lái)做一個(gè)試驗(yàn)如果把定義"body"或"xhtml"換成?*?,
*{
scrollbar-3dlight-color:#D4D0C8; 
   scrollbar-highlight-color:#fff; 
   scrollbar-face-color:#E4E4E4; 
   scrollbar-arrow-color:#666; 
   scrollbar-shadow-color:#808080; 
   scrollbar-darkshadow-color:#D7DCE0; 
   scrollbar-base-color:#D7DCE0; 
   scrollbar-track-color:#;
}

在html和xhtml都通過(guò),因?yàn)?就是定義頁(yè)面上的任何標(biāo)簽當(dāng)然也包括了“html”這個(gè)標(biāo)簽。

(ps:其實(shí)與其說(shuō)是 html 與 xhtml 的區(qū)別到不如說(shuō)是有無(wú) XHTML 1.0 transitional doctype的區(qū)別,但是如果你把頁(yè)面的 XHTML 1.0 transitional doctype 去掉的話,那么這個(gè)頁(yè)面就沒有 doctype,默認(rèn)的顯示方式就是html4.01,不過(guò)你要把XHTML 1.0 transitional doctype 修改成 HTML 4.01 doctype 同樣頁(yè)面定義 body 也不會(huì)有效果的,雖然這個(gè)頁(yè)面的標(biāo)準(zhǔn)是html 4.01) 

CSS 隱藏滾動(dòng)條(橫向,堅(jiān)向)

網(wǎng)上都說(shuō)使用 ?overflow-y:hidden可以隱藏滾動(dòng)條,但是只能針對(duì) div 元素,并不能隱藏瀏覽器,而一些資料說(shuō) <boby>里加入?scroll="no"?,可隱藏滾動(dòng)條;在<boby>里加入?style="overflow-x:hidden"?,可隱藏水平滾動(dòng)條;加入?style="overflow-y:hidden"?,可隱藏垂直滾動(dòng)條。

1、完全隱藏

  在里加入?scroll="no"?,可隱藏滾動(dòng)條;

2、在不需要時(shí)隱藏

  指當(dāng)瀏覽器窗口寬度或高度大于頁(yè)面的寬或高時(shí),不顯示滾動(dòng)條;反之,則顯示;

3、樣式表方法

  在里加入?style="overflow-x:hidden"?,可隱藏水平滾動(dòng)條;

  加入?style="overflow-y:hidden"?,可隱藏垂直滾動(dòng)條。

body{ overflow-x:hidden; } 在標(biāo)準(zhǔn) DTD 下是不可以的

html { overflow: scroll; }

  • 強(qiáng)制隱藏滾動(dòng)條:html { overflow: hidden; }
  • 隱藏IE的水平滾動(dòng)條:html { overflow-x: hidden; }
  • 隱藏IE的垂直滾動(dòng)條:html { overflow-y: hidden; }
  • 強(qiáng)制顯示IE的水平滾動(dòng)條:html { overflow-x: scroll; }
  • 強(qiáng)制顯示IE的垂直滾動(dòng)條:html { overflow-y: scroll; }
  • 強(qiáng)制顯示Mozilla的水平滾動(dòng)條:html { overflow:-moz-scrollbars-horizontal; }
  • 注意: 僅僅強(qiáng)制顯示水平滾動(dòng)條. 也就是說(shuō), 即使需要顯示垂直滾動(dòng)條時(shí), 垂直滾動(dòng)條也不會(huì)出現(xiàn).
  • 強(qiáng)制顯示Mozilla的垂直滾動(dòng)條:html { overflow:-moz-scrollbars-vertical; }
  • 注意: 僅僅強(qiáng)制顯示垂直滾動(dòng)條. 也就是說(shuō), 即使需要顯示水平滾動(dòng)條時(shí), 水平滾動(dòng)條也不會(huì)出現(xiàn).


最終的解決辦法:

在頁(yè)面添加:

<style>

html { overflow-x:hidden; //隱藏水平滾動(dòng)條overflow-y:hidden;//隱藏垂直滾動(dòng)條}

</style>


CSS怎么美化滾動(dòng)條

各種瀏覽器對(duì)CSS滾動(dòng)條的支持情況:

這里說(shuō)的 Webkit 瀏覽器包括谷歌瀏覽器,蘋果公司的 Safari 瀏覽器,以及最新的 Opera 瀏覽器。這些瀏覽器加起來(lái)占有超過(guò)半數(shù)的桌面瀏覽器市場(chǎng)份額。對(duì)于移動(dòng)端瀏覽器,基本上是谷歌瀏覽器和 Safari 瀏覽器的天下。唯一的遺憾是火狐瀏覽器,至今沒有對(duì)CSS滾動(dòng)條屬性做任何的改進(jìn)。至于IE瀏覽器,我們期待吧。

鑒于目前瀏覽器市場(chǎng)的格局,我們很有信心相信 CSS 滾動(dòng)條美化功能會(huì)有很好的很光明的前景。

很多年前谷歌瀏覽器就已經(jīng)開始支持對(duì)滾動(dòng)條的 CSS 美化。這些 Webkit 瀏覽器專屬的CSS屬性需要使用 -webkit- 瀏覽器引擎前綴,我們?cè)谶@里將只會(huì)使用一些基本的CSS滾動(dòng)條屬性,在代碼里會(huì)增加一些必要的解釋說(shuō)明。

::-webkit-scrollbar {

  width: 15px;

} /* 這是針對(duì)缺省樣式 (必須的) */

當(dāng) CSS 中出現(xiàn)偽元素樣式時(shí),Webkit 引擎將會(huì)關(guān)閉它的缺省滾動(dòng)條樣式輸出,只使用CSS里提供的樣式信息。

這里是其它一些偽元素樣式:

::-webkit-scrollbar-track {

  background-color: #b46868;

} /* 滾動(dòng)條的滑軌背景顏色 */

::-webkit-scrollbar-thumb {

  background-color: rgba(0, 0, 0, 0.2); 

} /* 滑塊顏色 */

::-webkit-scrollbar-button {

  background-color: #7c2929;

} /* 滑軌兩頭的監(jiān)聽按鈕顏色 */

::-webkit-scrollbar-corner {

  background-color: black;

} /* 橫向滾動(dòng)條和縱向滾動(dòng)條相交處尖角的顏色 */

加上了這些 CSS 屬性,你將會(huì)看到下面的效果(再次提醒:你需要使用 Webkit 瀏覽器,比如谷歌瀏覽器才能看到效果)。


谷歌瀏覽器的用戶是最幸福的。但我們也不能放棄火狐瀏覽器和IE瀏覽器用戶。對(duì)于這些瀏覽器,有一個(gè)非常有效的補(bǔ)救方案,就是使用 javascript 插件。網(wǎng)上有不少人推薦一個(gè)由 Kelvin Luck 開發(fā)的一個(gè) jQuery 插件:jScrollPane。但也有人評(píng)論這個(gè)插件是“PITA”,我翻了一下字典,發(fā)現(xiàn)“PITA”中文意思是“讓人蛋疼”。經(jīng)過(guò)試用,感到它的確是讓人蛋疼。不推薦使用它。我發(fā)現(xiàn)了另外一個(gè)插件 malihu-custom-scrollbar-plugin,感覺相當(dāng)不錯(cuò),它的用法是:

<link rel="stylesheet" href="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.min.css">

<!-- latest jQuery direct from google's CDN -->

<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>

<script type="text/javascript" src="js/jquery-migrate-1.2.1.min.js"></script>

<script src="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js"></script>

<script>

if (!$.browser.webkit) {

$.mCustomScrollbar.defaults.scrollButtons.enable=true; //enable scrolling buttons by default

$.mCustomScrollbar.defaults.axis="yx"; //enable 2 axis scrollbars by default

$(".container").mCustomScrollbar({theme:"dark"});

}

</script>

火狐瀏覽器中的效果截圖:

火狐瀏覽器

已經(jīng)有很多網(wǎng)站都使用了這些滾動(dòng)條的 CSS 美化技巧,特別是谷歌的一些應(yīng)用和網(wǎng)站上,比如 Gmail 和 Google+。相信很快火狐瀏覽器和IE瀏覽器也會(huì)提供自己的解決方案。

用CSS調(diào)整滾動(dòng)條配色

IE瀏覽器可以通過(guò)調(diào)整CSS的方式,來(lái)給滾動(dòng)條換色。

代碼如下:

.uicss-cn

{

height:580px;overflow-y: scroll;

scrollbar-face-color:#EAEAEA;

scrollbar-shadow-color:#EAEAEA;

scrollbar-highlight-color:#EAEAEA;

scrollbar-3dlight-color:#EAEAEA;

scrollbar-darkshadow-color:#697074;

scrollbar-track-color:#F7F7F7;

scrollbar-arrow-color:#666666;

}

具體樣式對(duì)應(yīng)的滾動(dòng)條區(qū)域如圖所示:

滾動(dòng)條變色


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)