css改变滚动条样式兼容火狐_css滚动条样式如何兼容IE以及火狐浏览器的示例

css滚动条样式如何兼容IE以及火狐浏览器的示例

图片与JavaScript配合做出个性滚动条

* { margin:0; padding:0; }

body { margin:20px 0 400px 20px; font:12px Arial; }

h1 { font-size:14px; }

ol { margin:20px; line-height:160%; }

#out {

position:relative;

width:500px;

height:300px;

margin:100px 0 100px 80px;

border:1px solid #369;

overflow:hidden;

}

#content {

width:520px;

height:100%;

overflow:auto;

-moz-user-select:none;

}

#scrollBar,#scrollBarHandle,.scroll_bar_top,.scroll_bar_top_a,.scroll_bar_bottom,.scroll_bar_bottom_a {

background-image:url(http://www.codefans.net/jscss/demoimg/200910/un_bg_scrollBar.gif);

}

#scrollBar {

position:absolute;

top:0;

right:0;

z-index:9;

width:14px;

height:100%;

background-repeat:repeat-y;

background-position:-42px 0;

float:left;

}

#scrollBarTop,#scrollBarHandle,#scrollBarBottom {

position:absolute;

left:0;

cursor:default;

}

#scrollBarTop,#scrollBarBottom {

width:100%;

height:14px;

color:#fff;

text-align:center;

}

#scrollBarTop { top:0; }

#scrollBarBottom { bottom:0; }

#scrollBarHandle { width:100%; background-repeat:repeat-y; background-position:-28px 0; }

.scroll_bar_top { background-position:0 0; }

.scroll_bar_top_a { background-position:-14px 0; }

.scroll_bar_bottom { background-position:-56px 0; }

.scroll_bar_bottom_a { background-position:-70px 0; }

fsdfs
fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs
11111111
fsdfs
fsdfs
11111111
fsdfs


11111111
fsdfs
11111111
fsdfs
11111111
fsdfs


11111111
fsdfs
11111111
fsdfs
11111111
fsdfs


11111111
fsdfs
11111111
fsdfs
11111111
fsdfs


11111111
fsdfs
11111111
fsdfs
11111111
fsdfs


fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs
11111111
fsdfs
11111111
fsdfs
11111111


fsdfs

var ximen = {

$:function(o){ return document.getElementByIdx_x(o); },

getStyle:function(o) { return o.currentStyle||document.defaultView.getComputedStyle(o,null); },

getOffset:function(o) {

var t = o.offsetTop,h = o.offsetHeight;

while(o = o.offsetParent) { t += o.offsetTop; }

return { top:t, height:h };

},

bind:function(o,eType,fn) {

if(o.addEventListener) { o.addEventListener(eType,fn,false); }

else if(o.attachEvent) { o.attachEvent("on" + eType,fn); }

else { o["on" + eType] = fn; }

},

unbind:function(o,eType,fn) {

if(o.removeEventListener) { o.removeEventListener(eType,fn,false); }

else if(o.detachEvent) { o.detachEvent("on" + eType,fn); }

else { o["on" + eType] = fn; }

},

stopPropagate:function(e) {

if(e && e.stopPropagation) { e.stopPropagation(); }

else { window.event.cancelBubble = true; }

return false;

},

stopDefault:function(e) {

e = e || window.event;

e.stopPropagation && (e.preventDefault(),e.stopPropagation()) || (e.cancelBubble = true,e.returnValue = false);

}

};

(function(){

var myScrollDown,myScrollUp,scrollBarMouseDown,scrollBarMouseUp,relY,

out = ximen.$("out"),

content = ximen.$("content"),

scrollBar = ximen.$("scrollBar"),

scrollBarTop = ximen.$("scrollBarTop"),

scrollBarHandle = ximen.$("scrollBarHandle"),

scrollBarBottom = ximen.$("scrollBarBottom"),

scrollBarUpHeight = parseInt(ximen.getStyle(scrollBarTop).height),

scrollBarBottomHeight = parseInt(ximen.getStyle(scrollBarBottom).height),

contentScrollHeight = content.scrollHeight,//将content.scrollHeight赋一次值,解决IE6下scrollHeight需调用两次的bug

scrollBarHandleHeight = parseInt(content.offsetHeight/content.scrollHeight * (scrollBar.offsetHeight - scrollBarUpHeight - scrollBarBottomHeight)),

setScrollBarHandle = function() {//当内容超多时设置拖拽条子的最小高度

scrollBarHandle.style.top = scrollBarUpHeight + "px";

if(scrollBarHandleHeight > 15) { scrollBarHandle.style.height = scrollBarHandleHeight + "px"; }

else { scrollBarHandleHeight = 15; scrollBarHandle.style.height = "15px"; }

},

clearAllInterval = function() { clearInterval(myScrollDown); clearInterval(myScrollUp); clearInterval(scrollBarMouseDown); },

forMousemove = function(e) {

var e = e || window.event;

content.scrollTop = (e.clientY - relY - scrollBarUpHeight)/(scrollBar.offsetHeight - scrollBarHandleHeight - scrollBarUpHeight - scrollBarBottomHeight)*(content.scrollHeight - content.offsetHeight);

},

forMouseDown = function(event){

var et = event.target || event.srcElement;

relY = event.clientY - et.offsetTop;

ximen.bind(document,"mousemove",forMousemove);

},

scrollDir = function(e) {

var e = e || window.event,eDir; //设置滚轮事件,e.wheelDelta与e.detail分别兼容IE、W3C,根据返回值的正负来判断滚动方向

if(e.wheelDelta) { eDir = e.wheelDelta/120; }

else if(e.detail) { eDir = -e.detail/3; }

if(eDir > 0) { content.scrollTop -= 80; } //步长设80像素a比较接近window滚动条的滚动速度

else { content.scrollTop += 80; }

ximen.stopDefault(e);

},

scrollBarClick = function(e) {

var e = e || window.event,

mStep = scrollBar.offsetHeight,

documentScrollTop = document.documentElement.scrollTop,

hOffset = ximen.getOffset(scrollBarHandle);

if(documentScrollTop + e.clientY < hOffset.top) { scrollBarMouseDown = setInterval(function(){ content.scrollTop -= 15; },10); }

else if(documentScrollTop + e.clientY > hOffset.top + hOffset.height) { scrollBarMouseDown = setInterval(function(){ content.scrollTop += 15; },10); }

};

setScrollBarHandle();

ximen.bind(content,"scroll",function(){

scrollBarHandle.style.top = content.scrollTop/(content.scrollHeight - content.offsetHeight) * (scrollBar.offsetHeight - scrollBarHandleHeight - scrollBarUpHeight - scrollBarBottomHeight) + scrollBarUpHeight + "px";

});

ximen.bind(scrollBarBottom,"mousedown",function(){ myScrollDown = setInterval(function(){ content.scrollTop += 15; },10); });

ximen.bind(scrollBarTop,"mousedown",function(){ myScrollUp = setInterval(function(){ content.scrollTop -= 15; },10); });

ximen.bind(scrollBarBottom,"mouseup",clearAllInterval);

ximen.bind(scrollBarBottom,"mouseout",clearAllInterval);

ximen.bind(scrollBarTop,"mouseup",clearAllInterval);

ximen.bind(scrollBarTop,"mouseout",clearAllInterval);

ximen.bind(scrollBarHandle,"mousedown",forMouseDown);

ximen.bind(document,"mouseup",function(){

ximen.unbind(document,"mousemove",forMousemove);

ximen.unbind(scrollBarHandle,"mousemove",forMousemove);

});

ximen.bind(out,"selectstart",function(){ return false; });

ximen.bind(out,"select",function(){ document.selection.empty(); });

ximen.bind(out,"mousewheel",scrollDir);

ximen.bind(out,"DOMMouseScroll",scrollDir);

ximen.bind(scrollBar,"mousedown",scrollBarClick);

ximen.bind(scrollBar,"mouseup",clearAllInterval);

ximen.bind(scrollBarTop,"click",function(event){ ximen.stopPropagate(event); });

ximen.bind(scrollBarTop,"mousedown",function(){ scrollBarTop.className = "scroll_bar_top_a"; });

ximen.bind(scrollBarTop,"mouseup",function(){ scrollBarTop.className = "scroll_bar_top"; });

ximen.bind(scrollBarTop,"mouseout",function(){ scrollBarTop.className = "scroll_bar_top"; });

ximen.bind(scrollBarBottom,"click",function(event){ ximen.stopPropagate(event); });

ximen.bind(scrollBarBottom,"mousedown",function(){ scrollBarBottom.className = "scroll_bar_bottom_a"; });

ximen.bind(scrollBarBottom,"mouseup",function(){ scrollBarBottom.className = "scroll_bar_bottom"; });

ximen.bind(scrollBarBottom,"mouseout",function(){ scrollBarBottom.className = "scroll_bar_bottom"; });

})();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值