js实现使用鼠标拖拽切换图片的方法
本文实例讲述了js实现使用鼠标拖拽切换图片的方法。分享给大家供大家参考。具体实现方法如下:
<scripttype="text/javascript"src="js/jquery.min.js"></script>
<styletype="text/css">
*{margin:0;padding:0;}
.m-slider{width:600px;margin:0auto10px!important;}
#slider{width:100%;overflow:hidden;}
.m-slider.cnt{position:relative;left:0;width:2000%;}
.m-slider.cntli{float:left;width:5%;height:450px;
overflow:hidden;
}
.m-slider.cntimg{
display:block;width:100%;height:450px;
vertical-align:top;
}
.m-slider.cntp{margin:10px0;}
.m-slider.icons{text-align:center;color:#000;
position:relative;z-index:999;margin-top:-20px;
}
.m-slider.iconsspan{
background:#fff;border-radius:5px;
box-shadow:002px#b0b0b0inset;display:inline-block;
height:10px;margin:05px;overflow:hidden;
text-indent:-99em;width:10px;
}
.m-slider.icons.curr{
background:#f80;box-shadow:002px#f60inset
}
</style>
<divclass="m-slider">
<divid="slider">
<ulid="m-slider"class="cnt">
<li><ahref="#1"><imgsrc="images/mofe.jpg"alt=""/></a></li>
<li><ahref="#2"><imgsrc="images/9hll.jpg"alt=""/></a></li>
<li><ahref="#3"><imgsrc="images/p2bb.jpg"alt=""/></a></li>
<li><ahref="#4"><imgsrc="images/3srp.jpg"alt=""/></a></li>
<li><ahref="#1"><imgsrc="images/ft9s.jpg"alt=""/></a></li>
</ul>
</div>
<divid="icons"class="icons"><spanclass="curr">1</span>
<span>2</span><span>3</span><span>4</span><span>5</span>
</div>
</div>
<scripttype="text/javascript">
jQuery(document).ready(function($){
var$slider=$('#m-slider');
var$icons=$('#icons');
var$li=$slider.children('li');
varWIDTH=$li.width();
varSIZE=$li.size();
$slider.append($li.first().clone());
//console.log(WIDTH+'-'+SIZE);
varox,mx,ux,sumx,scroll,i=0,bool=false,staut=true;
$li.find('a').click(function(){
//阻止轮播元素的默认点击事件
returnfalse;
});
$slider.mousedown(function(e){
//鼠标左键轮播区域
if(e.target.tagName=='IMG'&&e.button==0){
//左键图片
staut=true;
//初始化拖拽,状态为true,可以触发点击事件
sumx=0;
//初始化鼠标偏移为0
bool=true;
//记录左键状态
ox=e.pageX;
//记录鼠标初始坐标
scroll=$slider.parent().scrollLeft();
//记录初始轮播水平滚动偏移
e.preventDefault();
//阻止鼠标点击默认事件
}
});
$slider.mousemove(function(e){
//鼠标在轮播区域移动
if(bool){//左键状态
staut=false;
//已经拖拽,状态为false,不再触发点击事件
mx=e.pageX;
//记录鼠标实时坐标
sumx=ox-mx;
//记录鼠标坐标偏移
$slider.parent().scrollLeft(scroll+sumx);
}
});
$slider.mouseout(function(e){
//鼠标离开轮播区域
if(bool){
//左键状态
staut=true;
//已经拖拽,但是离开了轮播区域,
//状态为true,可以触发点击事件
bool=false;//释放左键状态
sumx>0&&i<SIZE&&i++;//下一个
sumx<0&&i>0&&i--;//上一个
$slider.parent().stop().animate({scrollLeft:i*WIDTH},300,function(){
if(i==SIZE){
i=0;
$slider.parent().scrollLeft(0);
}
$icons.find('.curr').removeClass('curr').end().children().eq(i).addClass('curr');
});//完成拖拽
}
});
$slider.mouseup(function(e){
//鼠标释放,完成click事件
bool=false;
//释放左键状态
if(staut&&e.button==0){
//没有拖拽或者拖拽失效,且是左键,触发点击事件
window.location.href=$(e.target).parent().attr('href');
//触发点击事件
}elseif(!staut&&e.button==0){
//成功拖拽,且是左键
sumx>0&&i<SIZE&&i++;//下一个
sumx<0&&i>0&&i--;//上一个
$slider.parent().stop().animate({scrollLeft:i*WIDTH},300,function(){
if(i==SIZE){
//最后一个
i=0;
$slider.parent().scrollLeft(0);//归位
}
$icons.find('.curr').removeClass('curr').end().children().eq(i).addClass('curr');
});//完成拖拽
}
});
functionsetSlider(){
i<SIZE&&i++;//下一个
$slider.parent().stop().animate({scrollLeft:i*WIDTH},300,function(){
if(i==SIZE){//最后一个
i=0;
$slider.parent().scrollLeft(0);
}
$icons.find('.curr').removeClass('curr').end().children().eq(i).addClass('curr');
});//完成拖拽
}
vartimer=setInterval(function(){
setSlider();
},3000);
$slider.hover(function(){
if(timer){
clearInterval(timer);
timer=null;
}
},function(){
timer=setInterval(function(){
setSlider();
},3000);
});
$(window).resize(function(){
WIDTH=$li.width();
$slider.parent().scrollLeft(i*WIDTH);//归位
//console.log(WIDTH+'-'+i);
});
});
</script>
希望本文所述对大家的javascript程序设计有所帮助。