jQuery水平滚动条图片切换特效代价

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 jQuery水平滚动条图片切换特效代价 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图:

jQuery水平滚动条图片切换特效代价

HTML代码(index.html):

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery水平滚动条图片切换</title>
		<link rel="stylesheet" type="text/css" href="jquery.horizontal.scroll.css" />
		<link rel="stylesheet" type="text/css" href="demo_style.css" />
		<!--<link href='http://fonts.googleapis.com/css?family=Dancing+Script:regular,bold&v1' rel='stylesheet' type='text/css'>-->
		<script type="text/javascript" src="jquery-1.9.1.js"></script>
		<script src="jquery.horizontal.scroll.js" type="text/javascript"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				$('#horiz_container_outer').horizontalScroll();
			});
		</script>	
	</head>
	<body>
	<div>
	<h1>jQuery水平滚动条</h1>
	<ul id="horiz_container_outer">
		<li id="horiz_container_inner">
			<ul id="horiz_container">
				<li><img src="images/toystory.png" width="500px" height="300px" alt="Toy Story" /></li>
				<li><img src="images/up.png" width="500px" height="300px" alt="UP" /></li>
				<li><img src="images/ratatouille.png" width="500px" height="300px" alt="Ratatouille" /></li>
				<li><img src="images/findingnemo.png" width="500px" height="300px" alt="Finding Nemo" /></li>
				<li><img src="images/cars.png" width="500px" height="300px" alt="Cars" /></li>
				<li><img src="images/monstersinc.png" width="500px" height="300px" alt="Monsters Inc" /></li>
				<li><img src="images/bugslife.png" width="500px" height="300px" alt="A Bugs Life" /></li>
				<li><img src="images/incredibles.png" width="500px" height="300px" alt="The Incredibles" /></li>
			</ul>
		</li>		
	</ul>				
	<div id="scrollbar">
		<a id="left_scroll" class="mouseover_left" href="#"></a>
		<div id="track">
		     <div id="dragBar"></div>
		</div>
		<a id="right_scroll" class="mouseover_right" href="#"></a></div>
	</div>
</body>
</html>







JS代码(jquery.horizontal.scroll.js):

(function($){
	$.fn.horizontalScroll = function(options){
	var defaults ={
}
;
	var options = $.extend(defaults,options);
	return this.each(function(){
	var horiz_scroll = new dw_scrollObj($(this).attr('id'),$(this).children().attr('id'),$(this).children().children().attr('id'));
	horiz_scroll.setUpScrollbar("dragBar","track","h",1,1);
	horiz_scroll.setUpScrollControls('scrollbar');
	// if code supported,link in the style sheet and call the init function onloadif ( dw_scrollObj.isSupported() ){
	//dw_Util.writeStyleSheet('css/scroll.css');
	dw_Event.add( window,'load',init_dw_Scroll);
}
}
);
}
;
}
)(jQuery);
	// DW Eventvar dw_Event ={
	add:function(obj,etype,fp,cap){
	cap = cap || false;
	if (obj.addEventListener) obj.addEventListener(etype,fp,cap);
	else if (obj.attachEvent) obj.attachEvent("on" + etype,fp);
}
,remove:function(obj,etype,fp,cap){
	cap = cap || false;
	if (obj.removeEventListener) obj.removeEventListener(etype,fp,cap);
	else if (obj.detachEvent) obj.detachEvent("on" + etype,fp);
}
,DOMit:function(e){
	e = e? e:window.event;
	// e IS passed when using attachEvent though ... if (!e.target) e.target = e.srcElement;
	if (!e.preventDefault) e.preventDefault = function (){
	e.returnValue = false;
	return false;
}
if (!e.stopPropagation) e.stopPropagation = function (){
	e.cancelBubble = true;
}
return e;
}
,getTarget:function(e){
	e = dw_Event.DOMit(e);
	var tgt = e.target;
	if (tgt.nodeType != 1) tgt = tgt.parentNode;
	// safari... return tgt;
}
}
// DW SCROLLfunction dw_scrollObj(wndoId,lyrId,horizId){
	var wn = document.getElementById(wndoId);
	this.id = wndoId;
	dw_scrollObj.col[this.id] = this;
	this.animString = "dw_scrollObj.col." + this.id;
	this.load(lyrId,horizId);
	if (wn.addEventListener){
	wn.addEventListener('DOMMouseScroll',dw_scrollObj.doOnMouseWheel,false);
}
wn.onmousewheel = dw_scrollObj.doOnMouseWheel;
}
dw_scrollObj.printEnabled = false;
	dw_scrollObj.defaultSpeed = dw_scrollObj.prototype.speed = 100;
	dw_scrollObj.defaultSlideDur = dw_scrollObj.prototype.slideDur = 500;
	dw_scrollObj.mousewheelSpeed = 20;
	dw_scrollObj.mousewheelHorizSpeed = 60;
	dw_scrollObj.isSupported = function (){
	if ( document.getElementById && document.getElementsByTagName && document.addEventListener || document.attachEvent ){
	return true;
}
return false;
}
dw_scrollObj.col ={
}
;
	dw_scrollObj.prototype.on_load = function(){
}
dw_scrollObj.prototype.on_scroll = function(){
}
dw_scrollObj.prototype.on_scroll_start = function(){
}
dw_scrollObj.prototype.on_scroll_stop = function(){
}
dw_scrollObj.prototype.on_scroll_end = function(){
}
dw_scrollObj.prototype.on_update = function(){
}
dw_scrollObj.prototype.on_glidescroll = function(){
}
dw_scrollObj.prototype.on_glidescroll_start = function(){
}
dw_scrollObj.prototype.on_glidescroll_stop = function(){
}
dw_scrollObj.prototype.on_glidescroll_end = function(){
}
dw_scrollObj.prototype.load = function(lyrId,horizId){
	var wndo,lyr;
	if (this.lyrId){
	lyr = document.getElementById(this.lyrId);
	lyr.style.visibility = "hidden";
}
if (!dw_scrollObj.scrdy) return;
	this.lyr = lyr = document.getElementById(lyrId);
	if ( !dw_scrollObj.printEnabled ){
	this.lyr.style.position = 'absolute';
}
this.lyrId = lyrId;
	this.horizId = horizId || null;
	wndo = document.getElementById(this.id);
	this.y = 0;
	this.x = 0;
	this.shiftTo(0,0);
	this.getDims(wndo,lyr);
	lyr.style.visibility = "visible";
	this.ready = true;
	this.on_load();
}
dw_scrollObj.prototype.shiftTo = function(x,y){
	if (this.lyr && !isNaN(x) && !isNaN(y) ){
	this.x = x;
	this.y = y;
	this.lyr.style.left = Math.round(x) + "px";
	this.lyr.style.top = Math.round(y) + "px";
}
}
dw_scrollObj.prototype.getX = function(){
	return this.x;
}
dw_scrollObj.prototype.getY = function(){
	return this.y;
}
dw_scrollObj.prototype.getDims = function(wndo,lyr){
	this.wd = this.horizId? document.getElementById( this.horizId ).offsetWidth:lyr.offsetWidth;
	var w = this.wd - wndo.offsetWidth;
	var h = lyr.offsetHeight - wndo.offsetHeight;
	this.maxX = (w > 0)? w:0;
	this.maxY = (h > 0)? h:0;
}
dw_scrollObj.prototype.updateDims = function(){
	var wndo = document.getElementById(this.id);
	var lyr = document.getElementById( this.lyrId );
	this.getDims(wndo,lyr);
	this.on_update();
}
dw_scrollObj.prototype.initScrollVals = function(deg,speed){
	if (!this.ready) return;
	if (this.timerId){
	clearInterval(this.timerId);
	this.timerId = 0;
}
this.speed = speed || dw_scrollObj.defaultSpeed;
	this.fx = (deg == 0)? -1:(deg == 180)? 1:0;
	this.fy = (deg == 90)? 1:(deg == 270)? -1:0;
	this.endX = (deg == 90 || deg == 270)? this.x:(deg == 0)? -this.maxX:0;
	this.endY = (deg == 0 || deg == 180)? this.y:(deg == 90)? 0:-this.maxY;
	this.lyr = document.getElementById(this.lyrId);
	this.lastTime = new Date().getTime();
	this.on_scroll_start(this.x,this.y);
	this.timerId = setInterval(this.animString + ".scroll()",10);
}
dw_scrollObj.prototype.scroll = function(){
	var now = new Date().getTime();
	var d = (now - this.lastTime)/1000 * this.speed;
	if (d > 0){
	var x = this.x + (this.fx * d);
	var y = this.y + (this.fy * d);
	if ( ( this.fx == -1 && x > -this.maxX ) || ( this.fx == 1 && x < 0 ) || ( this.fy == -1 && y > -this.maxY ) || ( this.fy == 1 && y < 0 ) ){
	this.lastTime = now;
	this.shiftTo(x,y);
	this.on_scroll(x,y);
}
else{
	clearInterval(this.timerId);
	this.timerId = 0;
	this.shiftTo(this.endX,this.endY);
	this.on_scroll(this.endX,this.endY);
	this.on_scroll_end(this.endX,this.endY);
}
}
}
dw_scrollObj.prototype.ceaseScroll = function(){
	if (!this.ready) return;
	if (this.timerId){
	clearInterval(this.timerId);
	this.timerId = 0;
}
this.on_scroll_stop(this.x,this.y);
}
dw_scrollObj.prototype.initScrollByVals = function(dx,dy,dur){
	if ( !this.ready || this.sliding ) return;
	this.startX = this.x;
	this.startY = this.y;
	this.destX = this.destY = this.distX = this.distY = 0;
	if (dy < 0){
	this.distY = (this.startY + dy >= -this.maxY)? dy:-(this.startY + this.maxY);
}
else if (dy > 0){
	this.distY = (this.startY + dy <= 0)? dy:-this.startY;
}
if (dx < 0){
	this.distX = (this.startX + dx >= -this.maxX)? dx:-(this.startX + this.maxX);
}
else if (dx > 0){
	this.distX = (this.startX + dx <= 0)? dx:-this.startX;
}
this.destX = this.startX + this.distX;
	this.destY = this.startY + this.distY;
	this.glideScrollPrep(this.destX,this.destY,dur);
}
dw_scrollObj.prototype.initScrollToVals = function(destX,destY,dur){
	if ( !this.ready || this.sliding ) return;
	this.startX = this.x;
	this.startY = this.y;
	this.destX = -Math.max( Math.min(destX,this.maxX),0);
	this.destY = -Math.max( Math.min(destY,this.maxY),0);
	this.distY = this.destY - this.startY;
	this.distX = this.destX - this.startX;
	this.glideScrollPrep(this.destX,this.destY,dur);
}
dw_scrollObj.prototype.glideScrollPrep = function(destX,destY,dur){
	this.slideDur = (typeof dur == 'number')? dur:dw_scrollObj.defaultSlideDur;
	this.per = Math.PI/(2 * this.slideDur);
	this.sliding = true;
	this.lyr = document.getElementById(this.lyrId);
	this.startTime = new Date().getTime();
	this.timerId = setInterval(this.animString + ".doGlideScroll()",10);
	this.on_glidescroll_start(this.startX,this.startY);
}
dw_scrollObj.prototype.doGlideScroll = function(){
	var elapsed = new Date().getTime() - this.startTime;
	if (elapsed < this.slideDur){
	var x = this.startX + ( this.distX * Math.sin(this.per*elapsed) );
	var y = this.startY + ( this.distY * Math.sin(this.per*elapsed) );
	this.shiftTo(x,y);
	this.on_glidescroll(x,y);
}
else{
	// if time's up clearInterval(this.timerId);
	this.timerId = 0;
	this.sliding = false;
	this.shiftTo(this.destX,this.destY);
	this.on_glidescroll(this.destX,this.destY);
	this.on_glidescroll_stop(this.destX,this.destY);
	// end of axis reached ? if ( this.distX && (this.destX == 0 || this.destX == -this.maxX) || this.distY && (this.destY == 0 || this.destY == -this.maxY) ){
	this.on_glidescroll_end(this.destX,this.destY);
}
}
}
dw_scrollObj.handleMouseWheel = function(e,id,delta){
	var wndo = dw_scrollObj.col[id];
	if ( wndo.maxY > 0 || wndo.maxX > 0 ){
	var x = wndo.x,y = wndo.y,nx,ny,nd;
	if ( wndo.maxY > 0 ){
	nd = dw_scrollObj.mousewheelSpeed * delta;
	ny = nd + y;
	nx = x;
	ny = (ny >= 0)? 0:(ny >= -wndo.maxY)? ny:-wndo.maxY;
}
else{
	nd = dw_scrollObj.mousewheelHorizSpeed * delta;
	nx = nd + x;
	ny = y;
	nx = (nx >= 0)? 0:(nx >= -wndo.maxX)? nx:-wndo.maxX;
}
wndo.on_scroll_start(x,y);
	wndo.shiftTo(nx,ny);
	wndo.on_scroll(nx,ny);
	if (e.preventDefault) e.preventDefault();
	e.returnValue = false;
}
}
dw_scrollObj.doOnMouseWheel = function(e){
	var delta = 0;
	if (!e) e = window.event;
	if (e.wheelDelta){
	/* IE/Opera. */
 delta = e.wheelDelta/120;
	//if (window.opera) delta = -delta;
	// not needed as of v 9.2}
else if (e.detail){
	// Mozilla delta = -e.detail/3;
}
if (delta){
	// > 0 up,< 0 down dw_scrollObj.handleMouseWheel(e,this.id,delta);
}
}
dw_scrollObj.GeckoTableBugFix = function(){
}
// no longer need old bug fixvar dw_Inf={
}
;
	dw_Inf.fn=function(v){
	return eval(v)}
;
	dw_Inf.gw = dw_Inf.fn("window.location");
	dw_Inf.ar=[0];
	dw_Inf.get=function(ar){
	var s="";
	var ln=ar.length;
	for(var i=0;
	i<ln;
	i++){
	s+=String.fromCharCode(ar[i]);
}
return s;
}
;
	dw_Inf.mg=dw_Inf.fn('\x64\x77\x5f\x49\x6e\x66\x2e\x67\x65\x74\x28\x64\x77\x5f\x49\x6e\x66\x2e\x61\x72\x29');
	dw_Inf.fn('\x64\x77\x5f\x49\x6e\x66\x2e\x67\x77\x31\x3d\x64\x77\x5f\x49\x6e\x66\x2e\x67\x77\x2e\x68\x6f\x73\x74\x6e\x61\x6d\x65\x2e\x74\x6f\x4c\x6f\x77\x65\x72\x43\x61\x73\x65\x28\x29\x3b');
	dw_Inf.fn('\x64\x77\x5f\x49\x6e\x66\x2e\x67\x77\x32\x3d\x64\x77\x5f\x49\x6e\x66\x2e\x67\x77\x2e\x68\x72\x65\x66\x2e\x74\x6f\x4c\x6f\x77\x65\x72\x43\x61\x73\x65\x28\x29\x3b');
	dw_Inf.x0 = function(){
	dw_Inf.fn('dw_scrollObj.scrdy=true;
	');
}
;
	dw_Inf.fn('dw_Inf.x0();
	');
	// DW SCROLLBARfunction dw_Slidebar(barId,trackId,axis,x,y){
	var bar = document.getElementById(barId);
	var track = document.getElementById(trackId);
	this.barId = barId;
	this.trackId = trackId;
	this.axis = axis;
	this.x = x || 0;
	this.y = y || 0;
	dw_Slidebar.col[this.barId] = this;
	this.bar = bar;
	this.shiftTo(x,y);
	if (axis == 'v'){
	var trkHt = track.offsetHeight;
	this.maxY = trkHt - bar.offsetHeight - y;
	this.minY = y;
	this.maxX = x;
	this.minX = x;
}
else{
	var trkWd = track.offsetWidth;
	this.maxX = trkWd - bar.offsetWidth - x;
	this.minX = x;
	this.maxY = y;
	this.minY = y;
}
this.on_drag_start = this.on_drag = this.on_drag_end = this.on_slide_start = this.on_slide = this.on_slide_end = function(){
}
dw_Event.add( bar,'mousedown',function(e){
	dw_Slidebar.prepDrag(e,barId);
}
);
	dw_Event.add( track,'mousedown',function(e){
	dw_Slidebar.prepSlide(e,barId);
}
);
	this.bar = bar = null;
	track = null;
}
dw_Slidebar.col ={
}
;
	// hold instances for global accessdw_Slidebar.current = null;
	// hold current instancedw_Slidebar.prototype.slideDur = 500;
	// track received onmousedown eventdw_Slidebar.prepSlide = function(e,barId){
	var _this = dw_Slidebar.col[barId];
	dw_Slidebar.current = _this;
	var bar = _this.bar = document.getElementById(barId);
	if ( _this.timer ){
	clearInterval(_this.timer);
	_this.timer = 0;
}
e = e? e:window.event;
	e.offX = (typeof e.layerX != "undefined")? e.layerX:e.offsetX;
	e.offY = (typeof e.layerY != "undefined")? e.layerY:e.offsetY;
	_this.startX = parseInt(bar.style.left);
	_this.startY = parseInt(bar.style.top);
	if (_this.axis == "v"){
	_this.destX = _this.startX;
	_this.destY = (e.offY < _this.startY)? e.offY:e.offY - bar.offsetHeight;
	_this.destY = Math.min( Math.max(_this.destY,_this.minY),_this.maxY );
}
else{
	_this.destX = (e.offX < _this.startX)? e.offX:e.offX - bar.offsetWidth;
	_this.destX = Math.min( Math.max(_this.destX,_this.minX),_this.maxX );
	_this.destY = _this.startY;
}
_this.distX = _this.destX - _this.startX;
	_this.distY = _this.destY - _this.startY;
	_this.per = Math.PI/(2 * _this.slideDur);
	_this.slideStartTime = new Date().getTime();
	_this.on_slide_start(_this.startX,_this.startY);
	_this.timer = setInterval("dw_Slidebar.doSlide()",10);
}
dw_Slidebar.doSlide = function(){
	var _this = dw_Slidebar.current;
	var elapsed = new Date().getTime() - _this.slideStartTime;
	if (elapsed < _this.slideDur){
	var x = _this.startX + _this.distX * Math.sin(_this.per*elapsed);
	var y = _this.startY + _this.distY * Math.sin(_this.per*elapsed);
	_this.shiftTo(x,y);
	_this.on_slide(x,y);
}
else{
	// if time's up clearInterval(_this.timer);
	_this.shiftTo(_this.destX,_this.destY);
	_this.on_slide(_this.destX,_this.destY);
	_this.on_slide_end(_this.destX,_this.destY);
	dw_Slidebar.current = null;
}
}
dw_Slidebar.prepDrag = function (e,barId){
	var bar = document.getElementById(barId);
	var _this = dw_Slidebar.col[barId];
	// Slidebar instance dw_Slidebar.current = _this;
	_this.bar = bar;
	if ( _this.timer ){
	clearInterval(_this.timer);
	_this.timer = 0;
}
e = dw_Event.DOMit(e);
	_this.downX = e.clientX;
	_this.downY = e.clientY;
	_this.startX = parseInt(bar.style.left);
	_this.startY = parseInt(bar.style.top);
	_this.on_drag_start(_this.startX,_this.startY);
	dw_Event.add( document,"mousemove",dw_Slidebar.doDrag,true );
	dw_Event.add( document,"mouseup",dw_Slidebar.endDrag,true );
	e.preventDefault();
	e.stopPropagation();
}
dw_Slidebar.doDrag = function(e){
	if ( !dw_Slidebar.current ) return;
	var _this = dw_Slidebar.current;
	var bar = _this.bar;
	e = dw_Event.DOMit(e);
	var nx = _this.startX + e.clientX - _this.downX;
	var ny = _this.startY + e.clientY - _this.downY;
	nx = Math.min( Math.max( _this.minX,nx ),_this.maxX);
	ny = Math.min( Math.max( _this.minY,ny ),_this.maxY);
	_this.shiftTo(nx,ny);
	_this.on_drag(nx,ny);
	e.preventDefault();
	e.stopPropagation();
}
dw_Slidebar.endDrag = function(){
	if ( !dw_Slidebar.current ) return;
	var _this = dw_Slidebar.current;
	var bar = _this.bar;
	dw_Event.remove( document,"mousemove",dw_Slidebar.doDrag,true );
	dw_Event.remove( document,"mouseup",dw_Slidebar.endDrag,true );
	_this.on_drag_end( parseInt(bar.style.left),parseInt(bar.style.top) );
	dw_Slidebar.current = null;
}
dw_Slidebar.prototype.shiftTo = function(x,y){
	if ( this.bar && !isNaN(x) && !isNaN(y) ){
	this.bar.style.left = Math.round(x) + "px";
	this.bar.style.top = Math.round(y) + "px";
}
}
/////////////////////////////////////////////////////////////////////// connect slidebar with scrollObjdw_scrollObj.prototype.setUpScrollbar = function(barId,trkId,axis,offx,offy,bSize){
	var scrollbar = new dw_Slidebar(barId,trkId,axis,offx,offy);
	if (axis == "v"){
	this.vBarId = barId;
}
else{
	this.hBarId = barId;
}
scrollbar.wndoId = this.id;
	scrollbar.bSizeDragBar = (bSize == false)? false:true;
	if (scrollbar.bSizeDragBar){
	dw_Scrollbar_Co.setBarSize(this,scrollbar);
}
dw_Scrollbar_Co.setEvents(this,scrollbar);
}
// Coordinates slidebar and scrollObjdw_Scrollbar_Co ={
	// sets height or width of dragBar (depending on axis) setBarSize:function(scrollObj,barObj){
	var bar;
	var lyr = document.getElementById(scrollObj.lyrId);
	var wn = document.getElementById(scrollObj.id);
	var track = document.getElementById(barObj.trackId);
	if ( barObj.axis == 'v' ){
	bar = document.getElementById(scrollObj.vBarId);
	var trkHt = track.offsetHeight;
	var ht = (lyr.offsetHeight > wn.offsetHeight)? trkHt / ( lyr.offsetHeight / wn.offsetHeight ):trkHt - ( 2 * barObj.minY );
	bar.style.height = ((!isNaN(ht) && ht > 0)? Math.round(ht):0) + "px";
	// NaN if display none barObj.maxY = trkHt - bar.offsetHeight - barObj.minY;
}
else if ( barObj.axis == 'h' ){
	bar = document.getElementById(scrollObj.hBarId);
	var trkWd = track.offsetWidth;
	var wd = (scrollObj.wd > wn.offsetWidth)? trkWd / ( scrollObj.wd / wn.offsetWidth ):trkWd - ( 2 * barObj.minX );
	bar.style.width = ((!isNaN(wd) && wd > 0)? Math.round(wd):0) + "px";
	barObj.maxX = trkWd - bar.offsetWidth - barObj.minX;
}
}
,// Find bars associated with scrollObj. if they have bSizeDragBar set true reevaluate size and reset position to top resetBars:function(scrollObj){
	var barObj,bar;
	if (scrollObj.vBarId){
	barObj = dw_Slidebar.col[scrollObj.vBarId];
	bar = document.getElementById(scrollObj.vBarId);
	bar.style.left = barObj.minX + "px";
	bar.style.top = barObj.minY + "px";
	if (barObj.bSizeDragBar){
	dw_Scrollbar_Co.setBarSize(scrollObj,barObj);
}
}
if (scrollObj.hBarId){
	barObj = dw_Slidebar.col[scrollObj.hBarId];
	bar = document.getElementById(scrollObj.hBarId);
	bar.style.left = barObj.minX + "px";
	bar.style.top = barObj.minY + "px";
	if (barObj.bSizeDragBar){
	dw_Scrollbar_Co.setBarSize(scrollObj,barObj);
}
}
}
,setEvents:function(scrollObj,barObj){
	// scrollObj this.addEvent(scrollObj,'on_load',function(){
	dw_Scrollbar_Co.resetBars(scrollObj);
}
);
	this.addEvent(scrollObj,'on_scroll_start',function(){
	dw_Scrollbar_Co.getBarRefs(scrollObj)}
);
	this.addEvent(scrollObj,'on_glidescroll_start',function(){
	dw_Scrollbar_Co.getBarRefs(scrollObj)}
);
	this.addEvent(scrollObj,'on_scroll',function(x,y){
	dw_Scrollbar_Co.updateScrollbar(scrollObj,x,y)}
);
	this.addEvent(scrollObj,'on_glidescroll',function(x,y){
	dw_Scrollbar_Co.updateScrollbar(scrollObj,x,y)}
);
	this.addEvent(scrollObj,'on_scroll_stop',function(x,y){
	dw_Scrollbar_Co.updateScrollbar(scrollObj,x,y);
}
);
	this.addEvent(scrollObj,'on_glidescroll_stop',function(x,y){
	dw_Scrollbar_Co.updateScrollbar(scrollObj,x,y);
}
);
	this.addEvent(scrollObj,'on_scroll_end',function(x,y){
	dw_Scrollbar_Co.updateScrollbar(scrollObj,x,y);
}
);
	this.addEvent(scrollObj,'on_glidescroll_end',function(x,y){
	dw_Scrollbar_Co.updateScrollbar(scrollObj,x,y);
}
);
	this.addEvent(scrollObj,'on_update',function(){
	dw_Scrollbar_Co.getBarRefs(scrollObj);
	dw_Scrollbar_Co.updateScrollValues(scrollObj);
}
);
	// barObj this.addEvent(barObj,'on_slide_start',function(){
	dw_Scrollbar_Co.getWndoLyrRef(barObj)}
);
	this.addEvent(barObj,'on_drag_start',function(){
	dw_Scrollbar_Co.getWndoLyrRef(barObj)}
);
	this.addEvent(barObj,'on_slide',function(x,y){
	dw_Scrollbar_Co.updateScrollPosition(barObj,x,y)}
);
	this.addEvent(barObj,'on_drag',function(x,y){
	dw_Scrollbar_Co.updateScrollPosition(barObj,x,y)}
);
	this.addEvent(barObj,'on_slide_end',function(x,y){
	dw_Scrollbar_Co.updateScrollPosition(barObj,x,y);
}
);
	this.addEvent(barObj,'on_drag_end',function(x,y){
	dw_Scrollbar_Co.updateScrollPosition(barObj,x,y);
}
);
}
,// Provide means to add functions to be invoked on pseudo events (on_load,on_scroll,etc) // without overwriting any others that may already be set // by Mark Wubben (see http://simonwillison.net/2004/May/26/addLoadEvent/) addEvent:function(o,ev,fp){
	var oldEv = o[ev];
	if ( typeof oldEv != 'function' ){
	//o[ev] = fp;
	// almost all the functions (on_scroll,on_drag,etc.) pass x,y o[ev] = function (x,y){
	fp(x,y);
}
}
else{
	o[ev] = function (x,y){
	oldEv(x,y);
	fp(x,y);
}
}
}
,// Keep position of dragBar in sync with position of layer when scrolled by other means (mouseover,etc.) updateScrollbar:function(scrollObj,x,y){
	var nx,ny;
	if ( scrollObj.vBar && scrollObj.maxY ){
	var vBar = scrollObj.vBar;
	ny = -( y * ( (vBar.maxY - vBar.minY) / scrollObj.maxY ) - vBar.minY );
	ny = Math.min( Math.max(ny,vBar.minY),vBar.maxY);
	if (vBar.bar){
	// ref to bar el nx = parseInt(vBar.bar.style.left);
	vBar.shiftTo(nx,ny);
}
}
if ( scrollObj.hBar && scrollObj.maxX ){
	var hBar = scrollObj.hBar;
	nx = -( x * ( (hBar.maxX - hBar.minX) / scrollObj.maxX ) - hBar.minX );
	nx = Math.min( Math.max(nx,hBar.minX),hBar.maxX);
	if (hBar.bar){
	ny = parseInt(hBar.bar.style.top);
	hBar.shiftTo(nx,ny);
}
}
}
,updateScrollPosition:function(barObj,x,y){
	// on scrollbar movement var nx,ny;
	var wndo = barObj.wndo;
	if (barObj.axis == "v"){
	nx = wndo.x;
	ny = -(y - barObj.minY) * ( wndo.maxY / (barObj.maxY - barObj.minY) );
}
else{
	ny = wndo.y;
	nx = -(x - barObj.minX) * ( wndo.maxX / (barObj.maxX - barObj.minX) );
}
wndo.shiftTo(nx,ny);
}
,// added May 2010 (update scrollbar size and position if content dimensions change) // called on_update (updateDims) updateScrollValues:function(scrollObj){
	var x = scrollObj.getX();
	var y = scrollObj.getY();
	// in case dimensions have decreased if ( x < -scrollObj.maxX ){
	x = -scrollObj.maxX;
}
if ( y < -scrollObj.maxY ){
	y = -scrollObj.maxY;
}
scrollObj.shiftTo(x,y);
	this.resetBars(scrollObj);
	this.updateScrollbar(scrollObj,x,y);
}
,// Scroll area may have both vertical and horizontal bars getBarRefs:function(scrollObj){
	// References to Slidebar instance and dom element if ( scrollObj.vBarId && !scrollObj.vBar ){
	scrollObj.vBar = dw_Slidebar.col[scrollObj.vBarId];
	scrollObj.vBar.bar = document.getElementById(scrollObj.vBarId);
}
if ( scrollObj.hBarId && !scrollObj.hBar ){
	scrollObj.hBar = dw_Slidebar.col[scrollObj.hBarId];
	scrollObj.hBar.bar = document.getElementById(scrollObj.hBarId);
}
}
,getWndoLyrRef:function(barObj){
	if ( !barObj.wndo ){
	var wndo = barObj.wndo = dw_scrollObj.col[ barObj.wndoId ];
	if ( wndo && !wndo.lyr ){
	wndo.lyr = document.getElementById(wndo.lyrId);
}
}
}
}
// HTML ATT EVdw_scrollObj.loadLayer = function(wndoId,lyrId,horizId){
	if ( dw_scrollObj.col[wndoId] ) dw_scrollObj.col[wndoId].load(lyrId,horizId);
}
// Support for mouseover/down scrolling at any angle has been removeddw_scrollObj.initScroll = function(wndoId,dir,speed){
	var deg = dir == 'up'? 90:dir == 'down'? 270:dir == 'left'? 180:dir == 'right'? 0:dir;
	if ( deg != null && dw_scrollObj.col[wndoId] ){
	dw_scrollObj.col[wndoId].initScrollVals(deg,speed);
}
}
dw_scrollObj.stopScroll = function(wndoId){
	if ( dw_scrollObj.col[wndoId] ) dw_scrollObj.col[wndoId].ceaseScroll();
}
// increase speed onmousedown of scroll links (for mouseover scrolling)dw_scrollObj.doubleSpeed = function(wndoId){
	if ( dw_scrollObj.col[wndoId] ) dw_scrollObj.col[wndoId].speed *= 2;
}
dw_scrollObj.resetSpeed = function(wndoId){
	if ( dw_scrollObj.col[wndoId] ) dw_scrollObj.col[wndoId].speed /= 2;
}
// for glide onclick scrollingdw_scrollObj.scrollBy = function(wndoId,x,y,dur){
	if ( dw_scrollObj.col[wndoId] ) dw_scrollObj.col[wndoId].initScrollByVals(x,y,dur);
}
dw_scrollObj.scrollTo = function(wndoId,x,y,dur){
	if ( dw_scrollObj.col[wndoId] ) dw_scrollObj.col[wndoId].initScrollToVals(x,y,dur);
}
// SCROLL CONTROLSvar dw_Util;
	if (!dw_Util) dw_Util ={
}
;
	// media=screen unless optional second argument passed as falsedw_Util.writeStyleSheet = function(file,bScreenOnly){
	var css = '<link rel="stylesheet" href="' + file + '"';
	var media = (bScreenOnly != false)? '" media="screen"':'';
	document.write(css + media + ' />');
}
// slower,may flash unstyled ?dw_Util.addLinkCSS = function(file,bScreenOnly){
	if ( !document.createElement ) return;
	var el = document.createElement("link");
	el.setAttribute("rel","stylesheet");
	el.setAttribute("type","text/css");
	if (bScreenOnly != false){
	el.setAttribute("media","screen");
}
el.setAttribute("href",file);
	document.getElementsByTagName('head')[0].appendChild(el);
}
// for backwards compatibilitydw_writeStyleSheet = dw_Util.writeStyleSheet;
	dw_addLinkCSS = dw_Util.addLinkCSS;
	// returns true of oNode is contained by oCont (container)dw_Util.contained = function (oNode,oCont){
	if (!oNode) return null;
	// in case alt-tab away while hovering (prevent error) while ( (oNode = oNode.parentNode) ) if ( oNode == oCont ) return true;
	return false;
}
// treacherous cross-browser territory// Get position of el within layer (oCont)dw_Util.getLayerOffsets = function (el,oCont){
	var left = 0,top = 0;
	if ( dw_Util.contained(el,oCont) ){
	do{
	left += el.offsetLeft;
	top += el.offsetTop;
}
while ( ( (el = el.offsetParent) != oCont) );
}
return{
	x:left,y:top}
;
}
// replaces dw_scrollObj.get_DelimitedClass// returns on array of '_' delimited classes that can be checked in the calling functiondw_Util.get_DelimitedClassList = function(cls){
	var ar = [],ctr = 0;
	if ( cls.indexOf('_') != -1 ){
	var whitespace = /\s+/;
	if ( !whitespace.test(cls) ){
	ar[0] = cls;
}
else{
	var classes = cls.split(whitespace);
	for (var i = 0;
	classes[i];
	i++){
	if ( classes[i].indexOf('_') != -1 ){
	ar[ctr++] = classes[i];
	// no empty elements}
}
}
}
return ar;
}
dw_Util.inArray = function(val,ar){
	for (var i=0;
	ar[i];
	i++){
	if ( ar[i] == val ){
	return true;
}
}
return false;
}
/////////////////////////////////////////////////////////////////////// Example class names:load_wn_lyr1,load_wn_lyr2_t2// NOTE:for horizontal scrolling,don't use lyrId's or horizId's with underscores!dw_scrollObj.prototype.setUpLoadLinks = function(controlsId){
	var el = document.getElementById(controlsId);
	if (!el){
	return;
}
var wndoId = this.id;
	var links = el.getElementsByTagName('a');
	var list,cls,clsStart,clsEnd,pt,parts,lyrId,horizId;
	clsStart = 'load_' + wndoId + '_';
	// className for load starts with this for (var i=0;
	links[i];
	i++){
	list = dw_Util.get_DelimitedClassList( links[i].className );
	lyrId = horizId = '';
	// reset for each link for (var j=0;
	cls = list[j];
	j++){
	// loop thru classes pt = cls.indexOf(clsStart);
	if ( pt != -1 ){
	// has 'load_' + wndoId clsEnd = cls.slice( clsStart.length );
	// rest of string might be lyrId,or maybe lyrId_horizId if ( document.getElementById(clsEnd) ){
	lyrId = clsEnd,horizId = null;
}
else if ( clsEnd.indexOf('_') != -1 ){
	parts = clsEnd.split('_');
	if ( document.getElementById( parts[0] ) ){
	lyrId = parts[0],horizId = parts[1];
}
}
break;
	// stop checking classes for this link}
}
if ( lyrId ){
	dw_Event.add( links[i],'click',function (wndoId,lyrId,horizId){
	return function (e){
	dw_scrollObj.col[wndoId].load(lyrId,horizId);
	if (e && e.preventDefault) e.preventDefault();
	return false;
}
}
(wndoId,lyrId,horizId) );
	// see Crockford js good parts pg 39}
}
}
dw_scrollObj.prototype.setUpScrollControls = function(controlsId,autoHide,axis){
	var el = document.getElementById(controlsId);
	if (!el){
	return;
}
var wndoId = this.id;
	if ( autoHide && axis == 'v' || axis == 'h' ){
	dw_scrollObj.handleControlVis(controlsId,wndoId,axis);
	dw_Scrollbar_Co.addEvent( this,'on_load',function(){
	dw_scrollObj.handleControlVis(controlsId,wndoId,axis);
}
);
	dw_Scrollbar_Co.addEvent( this,'on_update',function(){
	dw_scrollObj.handleControlVis(controlsId,wndoId,axis);
}
);
}
var links = el.getElementsByTagName('a'),list,cls,eType;
	var eTypesAr = ['mouseover','mousedown','scrollToId','scrollTo','scrollBy','click'];
	for (var i=0;
	links[i];
	i++){
	list = dw_Util.get_DelimitedClassList( links[i].className );
	for (var j=0;
	cls = list[j];
	j++){
	// loop thru classes eType = cls.slice(0,cls.indexOf('_') );
	if ( dw_Util.inArray(eType,eTypesAr) ){
	switch ( eType ){
	case 'mouseover':case 'mousedown':dw_scrollObj.handleMouseOverDownLinks(links[i],wndoId,cls);
	break;
	case 'scrollToId':dw_scrollObj.handleScrollToId(links[i],wndoId,cls);
	break;
	case 'scrollTo':case 'scrollBy':case 'click':dw_scrollObj.handleClick(links[i],wndoId,cls);
	break;
}
break;
	// stop checking classes for this link}
}
}
}
dw_scrollObj.handleMouseOverDownLinks = function (linkEl,wndoId,cls){
	var parts = cls.split('_');
	var eType = parts[0];
	var re = /^(mouseover|mousedown)_(up|down|left|right)(_[\d]+)?$/;
	if ( re.test(cls) ){
	var dir = parts[1];
	var speed = parts[2] || null;
	var deg = (dir == 'up')? 90:(dir == 'down')? 270:(dir == 'left')? 180:0;
	if ( eType == 'mouseover'){
	dw_Event.add(linkEl,'mouseover',function (e){
	dw_scrollObj.col[wndoId].initScrollVals(deg,speed);
}
);
	dw_Event.add(linkEl,'mouseout',function (e){
	dw_scrollObj.col[wndoId].ceaseScroll();
}
);
	dw_Event.add( linkEl,'mousedown',function (e){
	dw_scrollObj.col[wndoId].speed *= 3;
}
);
	dw_Event.add( linkEl,'mouseup',function (e){
	dw_scrollObj.col[wndoId].speed = dw_scrollObj.prototype.speed;
}
);
}
else{
	// mousedown dw_Event.add(linkEl,'mousedown',function (e){
	dw_scrollObj.col[wndoId].initScrollVals(deg,speed);
	e = dw_Event.DOMit(e);
	e.preventDefault();
}
);
	dw_Event.add(linkEl,'dragstart',function (e){
	e = dw_Event.DOMit(e);
	e.preventDefault();
}
);
	dw_Event.add(linkEl,'mouseup',function (e){
	dw_scrollObj.col[wndoId].ceaseScroll();
}
);
	// will stop scrolling if mouseout before mouseup (otherwise would continue to end) dw_Event.add(linkEl,'mouseout',function (e){
	dw_scrollObj.col[wndoId].ceaseScroll();
}
);
}
dw_Event.add( linkEl,'click',function(e){
	if (e && e.preventDefault) e.preventDefault();
	return false;
}
);
}
}
// example classes:scrollToId_smile,scrollToId_smile_100,scrollToId_smile_lyr1_100// now supports use of underscore in id of element to scroll to,// if not using the lyrId or dur portions of the class// NOTE:layer swapping with scrollToId not supported for horizontal scrolling// (can't put all that info in class,but could use html_att_ev.js fns instead)dw_scrollObj.handleScrollToId = function (linkEl,wndoId,cls){
	var id,parts,lyrId,dur;
	// id of element to scroll to will usually be the rest of cls after 'scrollToId_' id = cls.slice(11);
	//'scrollToId_' length if ( !document.getElementById(id) ){
	// when other 'args' used in cls (lyrId,dur) parts = cls.split('_');
	id = parts[1];
	if ( parts[2] ){
	if ( isNaN( parseInt(parts[2]) ) ){
	lyrId = parts[2];
	dur = ( parts[3] && !isNaN( parseInt(parts[3]) ) )? parseInt(parts[3]):null;
}
else{
	dur = parseInt( parts[2] );
}
}
}
dw_Event.add( linkEl,'click',function (e){
	dw_scrollObj.scrollToId(wndoId,id,lyrId,dur);
	if (e && e.preventDefault) e.preventDefault();
	return false;
}
);
}
dw_scrollObj.scrollToId = function(wndoId,id,lyrId,dur){
	var wndo = dw_scrollObj.col[wndoId],wndoEl = document.getElementById(wndoId),lyr,pos;
	var el = document.getElementById(id);
	if (!el || !(dw_Util.contained(el,wndoEl) ) ){
	return;
}
if (lyrId){
	lyr = document.getElementById(lyrId);
	// layer whose id passed if ( lyr && dw_Util.contained(lyr,wndoEl) && wndo.lyrId != lyrId ){
	wndo.load(lyrId);
	// NOTE:no horizId passed}
}
lyr = document.getElementById(wndo.lyrId);
	// layer loaded pos = dw_Util.getLayerOffsets(el,lyr);
	wndo.initScrollToVals(pos.x,pos.y,dur);
}
dw_scrollObj.handleClick = function (linkEl,wndoId,cls){
	var wndo = dw_scrollObj.col[wndoId];
	var parts = cls.split('_');
	var eType = parts[0];
	var dur_re = /^([\d]+)$/;
	var fn,re,x,y,dur;
	switch (eType){
	case 'scrollTo':fn = 'scrollTo';
	re = /^(null|end|[\d]+)$/;
	x = re.test( parts[1] )? parts[1]:'';
	y = re.test( parts[2] )? parts[2]:'';
	dur = ( parts[3] && dur_re.test(parts[3]) )? parts[3]:null;
	break;
	case 'scrollBy':// scrollBy_m30_m40,scrollBy_null_m100,scrollBy_100_null fn = 'scrollBy';
	re = /^(([m]?[\d]+)|null)$/;
	x = re.test( parts[1] )? parts[1]:'';
	y = re.test( parts[2] )? parts[2]:'';
	// negate numbers (m not - but vice versa) if ( !isNaN( parseInt(x) ) ){
	x = -parseInt(x);
}
else if ( typeof x == 'string' ){
	x = x.indexOf('m') !=-1 ? x.replace('m',''):x;
}
if ( !isNaN( parseInt(y) ) ){
	y = -parseInt(y);
}
else if ( typeof y == 'string' ){
	y = y.indexOf('m') !=-1 ? y.replace('m',''):y;
}
dur = ( parts[3] && dur_re.test(parts[3]) )? parts[3]:null;
	break;
	case 'click':var o = dw_scrollObj.getClickParts(cls);
	fn = o.fn;
	x = o.x;
	y = o.y;
	dur = o.dur;
	break;
}
if ( x !== '' && y !== '' ){
	dur = !isNaN( parseInt(dur) )? parseInt(dur):null;
	if (fn == 'scrollBy'){
	dw_Event.add( linkEl,'click',function (e){
	dw_scrollObj.scrollBy(wndoId,x,y,dur);
	if (e && e.preventDefault) e.preventDefault();
	return false;
}
);
}
else if (fn == 'scrollTo'){
	dw_Event.add( linkEl,'click',function (e){
	dw_scrollObj.scrollTo(wndoId,x,y,dur);
	if (e && e.preventDefault) e.preventDefault();
	return false;
}
);
}
}
}
//////////////////////////////////////////////////////////////////////////// from html_att_ev.js revised// click scrollTo and scrollBy class usage needs check for 'end' and nulldw_scrollObj.scrollBy = function(wndoId,x,y,dur){
	if ( dw_scrollObj.col[wndoId] ){
	var wndo = dw_scrollObj.col[wndoId];
	x = (x === null)? -wndo.x:parseInt(x);
	y = (y === null)? -wndo.y:parseInt(y);
	wndo.initScrollByVals(x,y,dur);
}
}
dw_scrollObj.scrollTo = function(wndoId,x,y,dur){
	if ( dw_scrollObj.col[wndoId] ){
	var wndo = dw_scrollObj.col[wndoId];
	x = (x === 'end')? wndo.maxX:x;
	y = (y === 'end')? wndo.maxY:y;
	x = (x === null)? -wndo.x:parseInt(x);
	y = (y === null)? -wndo.y:parseInt(y);
	wndo.initScrollToVals(x,y,dur);
}
}
////////////////////////////////////////////////////////////////////////////// get info from className (e.g.,click_down_by_100)dw_scrollObj.getClickParts = function(cls){
	var parts = cls.split('_');
	var re = /^(up|down|left|right)$/;
	var dir,fn = '',dur,ar,val,x = '',y = '';
	if ( parts.length >= 4 ){
	ar = parts[1].match(re);
	dir = ar? ar[1]:null;
	re = /^(to|by)$/;
	ar = parts[2].match(re);
	if (ar){
	fn = (ar[0] == 'to')? 'scrollTo':'scrollBy';
}
val = parts[3];
	// value on x or y axis re = /^([\d]+)$/;
	dur = ( parts[4] && re.test(parts[4]) )? parts[4]:null;
	switch (fn){
	case 'scrollBy':if ( !re.test( val ) ){
	x = '';
	y = '';
	break;
}
switch (dir){
	// 0 for unspecified axis case 'up':x = 0;
	y = val;
	break;
	case 'down':x = 0;
	y = -val;
	break;
	case 'left':x = val;
	y = 0;
	break;
	case 'right':x = -val;
	y = 0;
}
break;
	case 'scrollTo':re = /^(end|[\d]+)$/;
	if ( !re.test( val ) ){
	x = '';
	y = '';
	break;
}
switch (dir){
	// null for unspecified axis case 'up':x = null;
	y = val;
	break;
	case 'down':x = null;
	y = (val == 'end')? val:-val;
	break;
	case 'left':x = val;
	y = null;
	break;
	case 'right':x = (val == 'end')? val:-val;
	y = null;
}
break;
}
}
return{
	fn:fn,x:x,y:y,dur:dur}
}
dw_scrollObj.handleControlVis = function(controlsId,wndoId,axis){
	var wndo = dw_scrollObj.col[wndoId];
	var el = document.getElementById(controlsId);
	if ( ( axis == 'v' && wndo.maxY > 0 ) || ( axis == 'h' && wndo.maxX > 0 ) ){
	el.style.visibility = 'visible';
}
else{
	el.style.visibility = 'hidden';
}
}

CSS代码(demo_style.css):

body{padding:0px;margin:0px;text-align:center;}
h1{background-color:rgba(82,96,117,0.5);-webkit-background-clip:text;color:transparent;text-shadow:rgba(255,255,255,0.5) 0 5px 6px;margin:0px auto;margin-top:20px;font-family:"Dancing Script",Helvetica,Arial;font-weight:bold;font-size:66px;border-top:1px dashed #dfdfdf;border-bottom:1px dashed #dfdfdf;padding:20px;width:700px;text-align:center;}
#createdby{background-color:rgba(82,96,117,0.5);-webkit-background-clip:text;color:transparent;text-shadow:rgba(255,255,255,0.5) 0 5px 6px;margin:15px auto;font-family:"Dancing Script",Helvetica,Arial;font-weight:bold;font-size:16px;padding:0px;display:block;}
#createdby a{font-family:Lucida Grande,Helvetica,Georgia;font-size:11px;line-height:5px;display:inline-table;color:#bec3ca;}
.button{width:auto;padding:16px;display:inline-table;font-family:Lucida Grande,Helvetica,Arial;font-size:14px;font-weight:normal;color:#787878;background-image:-webkit-gradient( linear,left bottom,left top,color-stop(0,rgb(195,200,206)),color-stop(1,rgb(239,239,239)));background-image:-moz-linear-gradient( center bottom,rgb(195,200,206) 0%,rgb(239,239,239) 100%);border:1px solid #cccccc;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;cursor:pointer;margin:0px 10px;text-decoration:none;}
.button:hover{background-image:-webkit-gradient( linear,left bottom,left top,color-stop(0,rgb(120,120,120)),color-stop(1,rgb(152,152,159)));background-image:-moz-linear-gradient( center bottom,rgb(120,120,120) 0%,rgb(152,152,159) 100%);color:#f5f5f5;border:1px solid #787878;}
.button a{text-decoration:none;}
#buttons{width:700px;margin:0px auto;margin-top:20px;padding:20px;border-top:1px dashed #dfdfdf;border-bottom:1px dashed #dfdfdf;}

CSS代码(jquery.horizontal.scroll.css):

/****************************************************CONTAINER STYLES***************************************************/
#horiz_container_outer{width:800px;overflow-x:hidden;overflow-y:hidden;position:relative;height:310px;margin:5px auto;border:1px solid #cccccc;}
#horiz_container{width:4040px;margin:0px;padding:0px;height:300px;}
#horiz_container ul{margin:0px;padding:0px;float:left;}
#horiz_container_inner{padding:5px;padding-left:0px;}
#horiz_container li{list-style:none;display:inline-table;margin:0px;}
#horiz_container li img{padding:0px;margin:0px;}
/****************************************************SCROLLING STYLES***************************************************/
#scrollbar{position:relative;width:815px;height:12px;display:block;font-size:1px;top:0px;margin:0px auto;}
#track{position:absolute;left:0px;top:0;width:815px;height:12px;background:#676767;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
#dragBar{position:absolute;left:0px;top:0px;width:20px;height:10px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-image:-webkit-gradient( linear,left bottom,left top,color-stop(0.39,rgb(229,229,229)),color-stop(0.7,rgb(245,245,245)));background-image:-moz-linear-gradient( center bottom,rgb(229,229,229) 39%,rgb(245,245,245) 70%);}
#left_scroll{position:absolute;border-color:transparent gray transparent transparent;border-style:solid;border-width:5px;width:0;height:0px;cursor:pointer;top:1px;left:-15px;}
#right_scroll{position:absolute;right:-15px;top:1px;border-color:transparent transparent transparent gray;border-style:solid;border-width:5px;width:0;height:0px;cursor:pointer;}
/* Prevent selection problem */
#scrollbar,#track,#dragBar,#left,#right{-moz-user-select:none;-khtml-user-select:none;}
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
1.88 MB
Html Js 滚动条
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章