滚动条控制的图片水平展示效果
个人感觉这个图片效果不错,用拖动滚动条的方法来控制图片滚动,这样用户的自由度更大些,操作舒适度也比较好,为了不影响网页加载,这里省略了图片地址,你可以自己加上,在IE8好像拖动条有点错位,火狐下正常。
个人感觉这个图片效果不错,用拖动滚动条的方法来控制图片滚动,这样用户的自由度更大些,操作舒适度也比较好,为了不影响网页加载,这里省略了图片地址,你可以自己加上,在IE8好像拖动条有点错位,火狐下正常。
答案:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>滚动条控制的图片水平展示效果</title>
<style>
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;font-size:12px}
table{border-collapse:collapse;border-spacing:0;}
fieldset,img{border:0;}
address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
ol,ul {list-style:none;}
caption,th {text-align:left;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
body{ font:12px/160% "宋体"}
#picBox{width:880px; height:100px; border:#ccc solid 1px; margin:10px auto; padding:10px; overflow:hidden; position:relative;}
#picBox ul{overflow:hidden;position:absolute; top:10px; left:0;}
#picBox li{ float:left; width:225px; height:100px; line-height:100px; text-align:center;}
#picBox li a{ display:block; width:200px; height:100%; margin:0 auto;text-align:center; background:#FF9900;}
#scrollBar{ width:900px; height:20px; border:#ccc solid 1px; margin:0 auto}
#scrollBar #dragObj{ width:100px; height:20px; text-align:center; cursor:pointer; background:#DDD}
</style>
</head>
<body>
<div id="picBox">
<ul id="picList">
<li><a href="#">图片地址1</a></li>
<li><a href="#">图片地址2</a></li>
<li><a href="#">图片地址3</a></li>
<li><a href="#">图片地址4</a></li>
<li><a href="#">图片地址5</a></li>
<li><a href="#">图片地址6</a></li>
<li><a href="#">图片地址7</a></li>
<li><a href="#">图片地址8</a></li>
<li><a href="#">图片地址9</a></li>
<li><a href="#">图片地址10</a></li>
</ul>
</div>
<div id="scrollBar"><div id="dragObj">拖动</div></div>
<script type="text/javascript">
(function(){
if(!window.zzc){window['zzc'] = {} };
function isIE(){ return (document.all) ? true : false;};
window['zzc']['isIE'] = isIE;
function $(id){return typeof id == 'string' ? document.getElementById(id) : id};
window['zzc']['$'] = $;
function $$(id,tag){return $(id).getElementsByTagName(tag);}
window['zzc']['$$'] = $$;
function getElementsByClassName(name,type){
var r=[];
var re=new RegExp("(^|\\s)"+name+"(\\s|$)");
var elem=document.getElementsByTagName(type||"*");
for(var i=0;i<elem.length;i++){
if(re.test(elem[i].className)) r.push(elem[i]);
}
return r;
}
window['zzc']['getElementsByClassName'] = getElementsByClassName;
function addEvent(eventTarget,eventType,fnHandler){
if(eventTarget.addEventListener){//for FF
eventTarget.addEventListener (eventType,fnHandler,false);
} else if(eventTarget.attachEvent){//for IE
eventTarget.attachEvent("on" + eventType,fnHandler);
} else{//for other
eventTarget["on" + eventType] = fnHandler;
}
};
window['zzc']['addEvent'] = addEvent;
function removeEvent(eventTarget,eventType,fnHandler){
if(eventTarget.removeEventListener){//for FF
eventTarget.removeEventListener (eventType,fnHandler,false);
} else if(eventTarget.detachEvent){//for IE
eventTarget.detachEvent("on" + eventType,fnHandler);
} else{//for other
eventTarget["on" + eventType] = null;
}
};
window['zzc']['removeEvent'] = removeEvent;
function getBrowerWindowSize(){
var de = document.documentElement;
return{
'width':(self.innerWidth||( de && de.offsetWidth )||document.body.offsetWidth),
'height':(self.innerHeight||(de && de.offsetHeight)||document.body.offsetHeight)
}
};
window['zzc']['getBrowerWindowSize'] = getBrowerWindowSize;
function getPageSize(){
var de=document.documentElement;
return{
'width':(document.body.scrollWidth||(de&&de.scrollWidth)),
'height':(document.body.scrollHeight||(de&&de.scrollHeight))
}
};
window['zzc']['getPageSize'] = getPageSize;
function pageX(elem){
return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft;
}
window['zzc']['pageX'] = pageX;
function pageY(elem){
return elem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop;
}
window['zzc']['pageY'] = pageY;
})();
function Drag(activeObj,dragObj,options){
var aObj = zzc.$(activeObj);//激活元素
var dObj = zzc.$(dragObj);//拖动元素
var iDiffX = 0;
var iDiffY = 0;
var Options = options || {};
var Limit = Options.Limit||false;
var mxLeft = parseInt(Options.mxLeft)||0;//左边限制
var mxRight = parseInt(Options.mxRight)||0;//右边限制
var mxTop = parseInt(Options.mxTop)||0;//上边限制
var mxBottom = parseInt(Options.mxBottom)||0;//下边限制
var onMove = Options.onMove||function(){};//移动时执行
(function start(){
zzc.addEvent(aObj,'mousedown',handleMouseDown);
})();
function handleMouseMove(oEvent){
var oEvent = window.event || arguments[0];
var iLeft = oEvent.clientX - iDiffX, iTop = oEvent.clientY - iDiffY;
if(Limit){
var iRight = iLeft + dObj.offsetWidth - mxRight, iBottom = iTop + dObj.offsetHeight - mxBottom;
if(iRight > 0) iLeft -= iRight;
if(iBottom > 0) iTop -= iBottom;
if(mxLeft > iLeft) iLeft = mxLeft;
if(mxTop > iTop) iTop = mxTop;
}
dObj.style.left = iLeft + 'px';
dObj.style.top = iTop + 'px';
onMove();
};
function handleMouseDown(oEvent){
//清除选择(ie设置捕获后默认带这个)
window.getSelection && window.getSelection().removeAllRanges();
var oEvent = window.event || arguments[0];
dObj.style.position = "absolute";
iDiffX = oEvent.clientX - dObj.offsetLeft;
iDiffY = oEvent.clientY - dObj.offsetTop;
zzc.addEvent(document,'mousemove',handleMouseMove);
zzc.addEvent(document,'mouseup',handleMouseUp);
if(zzc.isIE()){
zzc.addEvent(dObj, "losecapture", handleMouseUp);
dObj.setCapture();
}else{
zzc.addEvent(window, "blur", handleMouseUp);
}
};
function handleMouseUp(){
zzc.removeEvent(document,'mousemove',handleMouseMove);
zzc.removeEvent(document,'mouseup',handleMouseUp);
if(zzc.isIE()){
zzc.removeEvent(dObj, "losecapture", handleMouseUp);
dObj.releaseCapture();
}else{
zzc.removeEvent(window, "blur", handleMouseUp);
}
};
}
//使图片滚动。
function picSlideByDrag(picBox,picList,dragObj,options){
var Options = options || {};
var mxLeft = parseInt(Options.mxLeft)||0;//左边限制
var mxRight = parseInt(Options.mxRight)||0;//右边限制
var mxTop = parseInt(Options.mxTop)||0;//上边限制
var mxBottom = mxTop + dragObj.clientHeight;//下边限制
function init(){
var picListChild = zzc.$$(picList,'li');
var picListWidth = picListChild.length * picListChild[0].offsetWidth;
picList.style.width = picListWidth + 'px';
if(picListWidth <= picBox.clientWidth){
dragObj.style.display = "none";
}
};
function picSlide(){
picList.style.left = -(((zzc.pageX(dragObj) - mxLeft)/(mxRight-mxLeft-dragObj.clientWidth))*(picList.clientWidth-picBox.clientWidth)) + "px";
};
init();
Drag(dragObj,dragObj,{Limit:true,mxTop:mxTop,mxRight:mxRight,mxBottom:mxBottom,mxLeft:mxLeft,onMove:picSlide});
};
window.onload = function(){
var picBox = zzc.$("picBox");
var picList = zzc.$("picList");
var scrollBar = zzc.$("scrollBar");
var dragObj = zzc.$("dragObj");
var initTop = zzc.pageY(scrollBar) + 1;
var initLeft = zzc.pageX(scrollBar) + 1;
var initRight = initLeft + scrollBar.client
上一个:JavaScript 过河游戏
下一个:记忆力测试网页版,JS小游戏