<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"
,而后再加入如下代码:
关于此插件的详细介绍,你能够访问官网,里面讲的至关详细,我就再也不此多赘述