if($(_self).children(".jscroll-c").height()==null){ //添加內(nèi)容框(div) $(_self).wrapInner("<div class='jscroll-c' style='top:0px;z-index:9999;zoom:1;position:relative;'></div>"); //添加豎向滾動(dòng)條 $(_self).append("<div class='jscroll-e' unselectable='on' style='height:97.5%;top:0px;right:0;-moz-user-select:none;position:absolute;overflow:hidden;z-index:10000;'><div class='jscroll-u' style='position:absolute;top:0px;width:100%;right:0;background:blue;overflow:hidden'></div><div class='jscroll-h' unselectable='on' style='background:green;position:absolute;left:0;-moz-user-select:none;border:1px solid'></div><div class='jscroll-d' style='position:absolute;bottom:0px;width:100%;left:0;background:blue;overflow:hidden'></div></div>"); //添加橫向滾動(dòng)條 $(_self).append("<div class='jscroll-s' unselectable='on' style='width:180px;bottom:0px;left:0;-moz-user-select:none;position:absolute;overflow:hidden;z-index:10000;'><div class='jscroll-l' style='position:absolute;bottom:0px;height:100%;left:0;background:blue;overflow:hidden'></div><div class='jscroll-g' unselectable='on' style='height:100%;background:green;position:absolute;left:0;-moz-user-select:none;border:1px solid'></div><div class='jscroll-r' style='position:absolute;bottom:0px;height:100%;right:0;background:blue;overflow:hidden'></div></div>"); }
前段時(shí)間,到網(wǎng)上找素材時(shí),看到了一個(gè)很個(gè)性的滾動(dòng)條式,打開(kāi)Chrome的調(diào)試工具看了一下,發(fā)現(xiàn)不是用JavaScript來(lái)模擬實(shí)現(xiàn)的,覺(jué)得有必要折騰一下。于是在各大瀏覽器中對(duì)比了一下,發(fā)現(xiàn)只用Chrome適用,也就是說(shuō)這個(gè)用的是Chrome的私有CSS屬性。便百之谷之后,發(fā)現(xiàn)原來(lái)不僅僅只用Chrome,其它的瀏覽器在不同程度上支持自定義滾動(dòng)條樣式的。下面是我不斷測(cè)試的結(jié)果,若有錯(cuò)誤或不全,請(qǐng)?jiān)谠u(píng)論里面給出,我會(huì)立馬更正;若有更好的方案,你可以留言,讓大家都開(kāi)開(kāi)眼界。。。。。。
追溯瀏覽器對(duì)滾動(dòng)條的自定義,恐怕最早的就是IE瀏覽器了(好像最開(kāi)始支持的版本是IE5.5)。下面列出了多個(gè)版本的支持性況:
滾動(dòng)條樣式 | 支持情況 | 支持瀏覽器版本 | 可否繼承 | 描述 |
---|---|---|---|---|
scrollbar-3dlight-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)框的和滾動(dòng)條箭頭左上邊緣的顏色 |
scrollbar-highlight-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)框的和滾動(dòng)條箭頭左上邊緣的顏色 |
scrollbar-face-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)框和滾動(dòng)條箭頭的顏色 |
scrollbar-arrow-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)條箭頭的顏色 |
scrollbar-shadow-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)框的和滾動(dòng)條箭頭右下邊緣的顏色 |
scrollbar-dark-shadow-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)條槽的顏色 |
scrollbar-base-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)條主要構(gòu)成部分的顏色 |
scrollbar-track-color | IE特有屬性 | IE5.5+ | y | 設(shè)置滾動(dòng)條軌跡組成部分的顏色 |
為了有助于理解IE中滾動(dòng)條樣式的控制,你可以查看如下的圖片:
以上所寫的幾個(gè)四個(gè)CSS屬性,足以控制Win 8系統(tǒng)下,IE瀏覽器的滾動(dòng)條樣式了。但經(jīng)過(guò)測(cè)試,發(fā)現(xiàn),其它的四個(gè)屬性仍然支持(主要是在以上幾個(gè)屬性空缺時(shí),就會(huì)體現(xiàn)其作用)。具體如下:
感覺(jué)IE瀏覽器滾動(dòng)條自定制功能并不是很強(qiáng),只能控制一樣顯示各個(gè)部分的顏色而已,像寬度,結(jié)構(gòu)等都無(wú)法控制,要靠出個(gè)性點(diǎn)的滾動(dòng)條,很難!很難?。?!
在網(wǎng)上找了很多關(guān)于Firfox自定義瀏覽器滾動(dòng)條的方法,發(fā)現(xiàn)firefox中卻實(shí)是不支持的。發(fā)現(xiàn)了幾篇說(shuō)可以更改,自已也跟著代碼寫了幾次(不知是我錯(cuò)了還是。。。),發(fā)現(xiàn)卻是不起作用。以下是一點(diǎn)小的收獲:
@-moz-document url-prefix(http://),url-prefix(https://) {/* 滾動(dòng)條顏色 */scrollbar {-moz-appearance: none !important;background: rgb(0,255,0) !important;}/* 滾動(dòng)條按鈕顏色 */thumb,scrollbarbutton {-moz-appearance: none !important;background-color: rgb(0,0,255) !important;}/* 鼠標(biāo)懸停時(shí)按鈕顏色 */thumb:hover,scrollbarbutton:hover {-moz-appearance: none !important;background-color: rgb(255,0,0) !important;}/* 隱藏上下箭頭 */scrollbarbutton {display: none !important;}/* 縱向滾動(dòng)條寬度 */scrollbar[orient="vertical"] {min-width: 15px !important;}}
實(shí)測(cè)以上代碼并不起作用。但也可能是我的瀏覽器的版本不對(duì)吧!你可以試試,要是有效的話,你可以把你的FF版本發(fā)表在文章評(píng)論里面。
下面給兩個(gè)關(guān)于FF滾動(dòng)條的討論(你多少web開(kāi)發(fā)者希望FF能夠像webkit內(nèi)核瀏覽器一樣程度的來(lái)支持滾動(dòng)條自定義):
在所有瀏覽器,滾動(dòng)條可定制性最強(qiáng)的當(dāng)屬webkit內(nèi)核的瀏覽器了。因?yàn)樵创a開(kāi)放的原因,市面上基于webkit內(nèi)核的瀏覽器也是很難窮舉完。例如有:Google Chrome、Opera(opera最近宣布使用webkit內(nèi)核了)、360極速瀏覽器,獵豹瀏覽器等,搜狗瀏覽器······
下面我們來(lái)看一下webkit瀏覽器是如何強(qiáng)大的吧!
CSS::-webkit-scrollbar { /* 1 */ }::-webkit-scrollbar-button { /* 2 */ }::-webkit-scrollbar-track { /* 3 */ }::-webkit-scrollbar-track-piece { /* 4 */ }::-webkit-scrollbar-thumb { /* 5 */ }::-webkit-scrollbar-corner { /* 6 */ }::-webkit-resizer { /* 7 */ }
以上CSS代碼所管轄的區(qū)域?qū)完P(guān)系:以上注釋中的數(shù)字與下圖中數(shù)字相對(duì)應(yīng)。
上圖正如如下所言:
注意:對(duì)以上各個(gè)部分定義width,height時(shí)。有如下功能:若是水平滾動(dòng)條,則width屬性不起作用,height屬性用來(lái)控制滾動(dòng)條相應(yīng)部分豎直方向高度;若是豎直滾動(dòng)條,則height屬性不起作用,width屬性用來(lái)控制相應(yīng)部分的寬度。
能過(guò)上面的不斷的測(cè)試。在Chrome中,滾動(dòng)條中的各個(gè)部分和DOM中塊級(jí)元素是一樣的。通過(guò)::-webkit-scrollbar等就類似于原來(lái)所說(shuō)的CSS中的選擇器。而{}中的屬性,你就像控制一般塊級(jí)元素一樣簡(jiǎn)單(強(qiáng)大啊)。
請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。
請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。
請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。
請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。
對(duì)應(yīng)的源代碼如下:
CSS部分代碼:
#scroll-1 {width:200px;height:200px;overflow:auto;}#scroll-1 div {width:400px;height:400px;} #scroll-1::-webkit-scrollbar {width:10px;height:10px;}#scroll-1::-webkit-scrollbar-button {background-color:#FF7677;}#scroll-1::-webkit-scrollbar-track {background:#FF66D5;}#scroll-1::-webkit-scrollbar-track-piece {background:url(http://www.lyblog.net/wp/wp-content/themes/mine/img/stripes_tiny_08.png);}#scroll-1::-webkit-scrollbar-thumb{background:#FFA711;border-radius:4px;}#scroll-1::-webkit-scrollbar-corner {background:#82AFFF;}#scroll-1::-webkit-scrollbar-resizer {background:#FF0BEE;}
HTML結(jié)構(gòu):
<div id='scroll-1'><div ><p>請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。</p><p>請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。</p><p>請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。</p><p>請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。</p><p>請(qǐng)選擇Webkit內(nèi)核的瀏覽器才可以正常的看到滾動(dòng)條的變化。小天地,大世界是一個(gè)Web前端的技術(shù)博客。 主要是關(guān)于HTML 5,CSS 3,JavaScript,JQuery等。除此之外,還包含一些PHP語(yǔ)言等的實(shí)用例子。</p></div></div>
通過(guò)以上,我們幾乎就可以來(lái)重寫網(wǎng)站的滾動(dòng)條了,但是webkit提供的還有更多的偽類,可以定制更豐富滾動(dòng)條樣式。本文以下內(nèi)容參考:https://www.webkit.org/blog/363/styling-scrollbars/
另外,:enabled、:disabled、:hover、和:active等偽類同樣在滾動(dòng)條中適用。
看了這些偽類,怎么也沒(méi)有明白是什么意思,還是自已得寫的試試。實(shí)踐出真知嘛!你可以擊接以下鏈接到官方演示DEMO(感覺(jué)可以學(xué)到很多東西的):http://trac.webkit.org/export/41842/trunk/LayoutTests/scrollbars/overflow-scrollbar-combinations.html
為了一致的用戶體驗(yàn),有時(shí)我們就不得不放棄使用部分瀏覽器提供的CSS接口來(lái)定制滾動(dòng)條,轉(zhuǎn)而尋求更佳的代替方案。
其中的一中方案是使用jQuery插件,jquery-custom-content-scroller。使用插件的好處是顯而易見(jiàn)的,但是壞處也多得去了。要是您想了解jQuery-custom-content-scroller的具體使用方法,請(qǐng)移步到:http://manos.malihu.gr/jquery-custom-content-scroller/
下面我就jQuery滾動(dòng)條插件的使用作一下簡(jiǎn)單介紹:
<link rel="stylesheet" type="text/css" href="jquery.mCustomScrollbar.css" ><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><script src="jquery.mCustomScrollbar.concat.min.js"></script>
第二步:在要顯示滾動(dòng)條的元素(元素內(nèi)容中必須要有溢出的塊,否則就不會(huì)出現(xiàn)滾動(dòng)條)上面,加入class="content"
,然后再加入以下代碼:
<script>(function($){$(window).load(function(){$(".content").mCustomScrollbar();});})(jQuery);</script>
關(guān)于此插件的詳細(xì)介紹,你可以訪問(wèn)官網(wǎng),里面講的相當(dāng)詳細(xì),我就不再此多贅述。
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答!! 點(diǎn)擊進(jìn)入論壇