<div id="showDiv"> <script type="text/javascript"> window.onload=function(){ var obj=document.getElementById("showDiv"); if(obj.scrollHeight>obj.clientHeight||obj.offsetHeight>obj.clientHeight){ document.getElementById("hiddenDiv").style.height="15pt"; } } </script> <div id="hiddenDiv" style="height:"></div> </div> --------------------- 當可視區域小於頁面的實際高度時,斷定爲出現滾動條,即: if (document.documentElement.clientHeight < document.documentElement.offsetHeight) scroll = true; 要使用 document.documentElement ,必須在頁面頭部加入聲明: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 其實,這段代碼是不起做用的,由於他沒考慮到一個問題,就是瀏覽器的邊框,當咱們在獲取頁面的offsetHeight高度時是包括了瀏覽器的邊框的,瀏覽器的邊框是2個像素,因此這時不管在任何狀況下clientHeight 始終是小於offsetHeight的,這就使得即便沒有滾動條它也爲true,所以咱們要修正這個錯誤,代碼應該這樣改,在offsetHeight上減去4個像素,即: if (document.documentElement.clientHeight < document.documentElement.offsetHeight-4){ //執行相關腳本。 } 還有,這裏要搞清楚,上面這代碼是判斷橫向滾動條的,咱們通常要判斷的是縱向滾動,代碼以下: if (document.documentElement.clientWidth < document.documentElement.offsetWidth-4){ //執行相關腳本。 }
前段時間,到網上找素材時,看到了一個很個性的滾動條式,打開Chrome的調試工具看了一下,發現不是用JavaScript來模擬實現的,以爲有必要折騰一下。因而在各大瀏覽器中對比了一下,發現只用Chrome適用,也就是說這個用的是Chrome的私有CSS屬性。便百之谷以後,發現原來不只僅只用Chrome,其它的瀏覽器在不一樣程度上支持自定義滾動條樣式的。下面是我不斷測試的結果,如有錯誤或不全,請在評論裏面給出,我會立馬更正;如有更好的方案,你能夠留言,讓你們都開開眼界。。。。。。javascript
追溯瀏覽器對滾動條的自定義,恐怕最先的就是IE瀏覽器了(好像最開始支持的版本是IE5.5)。下面列出了多個版本的支持性況:css
滾動條樣式 | 支持狀況 | 支持瀏覽器版本 | 能否繼承 | 描述 |
---|---|---|---|---|
scrollbar-3dlight-color | IE特有屬性 | IE5.5+ | y | 設置滾動框的和滾動條箭頭左上邊緣的顏色 |
scrollbar-highlight-color | IE特有屬性 | IE5.5+ | y | 設置滾動框的和滾動條箭頭左上邊緣的顏色 |
scrollbar-face-color | IE特有屬性 | IE5.5+ | y | 設置滾動框和滾動條箭頭的顏色 |
scrollbar-arrow-color | IE特有屬性 | IE5.5+ | y | 設置滾動條箭頭的顏色 |
scrollbar-shadow-color | IE特有屬性 | IE5.5+ | y | 設置滾動框的和滾動條箭頭右下邊緣的顏色 |
scrollbar-dark-shadow-color | IE特有屬性 | IE5.5+ | y | 設置滾動條槽的顏色 |
scrollbar-base-color | IE特有屬性 | IE5.5+ | y | 設置滾動條主要構成部分的顏色 |
scrollbar-track-color | IE特有屬性 | IE5.5+ | y | 設置滾動條軌跡組成部分的顏色 |
爲了有助於理解IE中滾動條樣式的控制,你能夠查看以下的圖片:html
通過不斷的測試發現,在Win8 下面,有一部分樣式都起着相同的做用。估計是由於在Win8中扁平化的界面設計而從新定議了系統中滾動條!如下是Win 8下面的滾動條樣式,並寫出了和CSS支持的狀況:前端
以上所寫的幾個四個CSS屬性,足以控制Win 8系統下,IE瀏覽器的滾動條樣式了。但通過測試,發現,其它的四個屬性仍然支持(主要是在以上幾個屬性空缺時,就會體現其做用)。具體以下:java
感受IE瀏覽器滾動條自定製功能並非很強,只能控制同樣顯示各個部分的顏色而已,像寬度,結構等都沒法控制,要靠出個性點的滾動條,很難!很難!!!jquery
在網上找了不少關於Firfox自定義瀏覽器滾動條的方法,發現firefox中卻實是不支持的。發現了幾篇說能夠更改,自已也跟着代碼寫了幾回(不知是我錯了仍是。。。),發現倒是不起做用。如下是一點小的收穫:web
實測以上代碼並不起做用。但也多是個人瀏覽器的版本不對吧!你能夠試試,要是有效的話,你能夠把你的FF版本發表在文章評論裏面。ajax
下面給兩個關於FF滾動條的討論(你多少web開發者但願FF可以像webkit內核瀏覽器同樣程度的來支持滾動條自定義):api
在全部瀏覽器,滾動條可定製性最強的當屬webkit內核的瀏覽器了。由於源代碼開放的緣由,市面上基於webkit內核的瀏覽器也是很難窮舉完。例若有:Google Chrome、Opera(opera最近宣佈使用webkit內核了)、360極速瀏覽器,獵豹瀏覽器等,搜狗瀏覽器······瀏覽器
下面咱們來看一下webkit瀏覽器是如何強大的吧!
以上CSS代碼所管轄的區域對就關係:以上註釋中的數字與下圖中數字相對應。
上圖正如以下所言:
注意:對以上各個部分定義width,height時。有以下功能:如果水平滾動條,則width屬性不起做用,height屬性用來控制滾動條相應部分豎直方向高度;如果豎直滾動條,則height屬性不起做用,width屬性用來控制相應部分的寬度。
能過上面的不斷的測試。在Chrome中,滾動條中的各個部分和DOM中塊級元素是同樣的。經過::-webkit-scrollbar等就相似於原來所說的CSS中的選擇器。而{}中的屬性,你就像控制通常塊級元素同樣簡單(強大啊)。
請選擇Webkit內核的瀏覽器才能夠正常的看到滾動條的變化。小天地,大世界是一個Web前端的技術博客。 主要是關於HTML 5,CSS 3,JavaScript,JQuery等。除此以外,還包含一些PHP語言等的實用例子。
請選擇Webkit內核的瀏覽器才能夠正常的看到滾動條的變化。小天地,大世界是一個Web前端的技術博客。 主要是關於HTML 5,CSS 3,JavaScript,JQuery等。除此以外,還包含一些PHP語言等的實用例子。
請選擇Webkit內核的瀏覽器才能夠正常的看到滾動條的變化。小天地,大世界是一個Web前端的技術博客。 主要是關於HTML 5,CSS 3,JavaScript,JQuery等。除此以外,還包含一些PHP語言等的實用例子。
請選擇Webkit內核的瀏覽器才能夠正常的看到滾動條的變化。小天地,大世界是一個Web前端的技術博客。 主要是關於HTML 5,CSS 3,JavaScript,JQuery等。除此以外,還包含一些PHP語言等的實用例子。
對應的源代碼以下:
CSS部分代碼:
HTML結構:
經過以上,咱們幾乎就能夠來重寫網站的滾動條了,可是webkit提供的還有更多的僞類,能夠定製更豐富滾動條樣式。本文如下內容參考:https://www.webkit.org/blog/363/styling-scrollbars/
另外,:enabled、:disabled、:hover、和:active等僞類一樣在滾動條中適用。
看了這些僞類,怎麼也沒有明白是什麼意思,仍是自已得寫的試試。實踐出真知嘛!你能夠擊接如下連接到官方演示DEMO(感受能夠學到不少東西的):http://trac.webkit.org/export/41842/trunk/LayoutTests/scrollbars/overflow-scrollbar-combinations.html
下面我自已嘗試着去寫的DEMO,不要嫌它太醜就好。
爲了一致的用戶體驗,有時咱們就不得不放棄使用部分瀏覽器提供的CSS接口來定製滾動條,轉而尋求更佳的代替方案。
其中的一中方案是使用jQuery插件,jquery-custom-content-scroller。使用插件的好處是顯而易見的,可是壞處也多得去了。要是您想了解jQuery-custom-content-scroller的具體使用方法,請移步到:http://manos.malihu.gr/jquery-custom-content-scroller/
下面我就jQuery滾動條插件的使用做一下簡單介紹:
第一步:在內容的頂部引入滾動條相應的樣式表文件和jquery的庫文件,jquery插件jquery.mcustomscrollbar文件。代碼以下:
第二步:在要顯示滾動條的元素(元素內容中必需要有溢出的塊,不然就不會出現滾動條)上面,加入class="content"
,而後再加入如下代碼:
關於此插件的詳細介紹,你能夠訪問官網,裏面講的至關詳細,我就再也不此多贅述