这段代码主要是用于实现在触屏手机上用手指切换图片的功能,现在有一个问题,当我点击第二张图片的时候,本应该跳转到一个链接,但是图片却滑动了,第一张和第三张都是好的,请问怎么解决,代码是哪出了问题?
<!doctype html>
<html lang="zh-cn">
<head>
<style>
.focusPic{margin:1px auto 0;width:320px;overflow:hidden;height:160px;position:relative;}
.focusPic>div{height:160px;width:300%;-webkit-transition-property:-webkit-transform;-ms-transition-property:-ms-transform;}
.focusPic>div>div{float:left;position:relative;}
.desc{position:absolute;height:30px;width:100%;background:rgba(0,0,0,0.5);bottom:0;left:0;color:#ffffff;text-align:center;line-height:30px;}
</style>
</head>
<body>
<div id="scroll" class="focusPic">
<div style="left:0"> </div>
</div>
<script type="text/javascript">
function Focus(obj){
C = this;
C.arg = obj;
C.id = C.arg.id;
C.innerWarp=C.id.getElementsByTagName(obj.tag)['0'];
C.inhtml=[];
C.creatHTML();
C.current=0; //当前展示的图片
//测试添加事件
/*C.arg.left.addEventListener('click',function(e){
e.preventDefault();
C.scroll('l');
},false);
C.arg.right.addEventListener('click',function(e){
e.preventDefault();
C.scroll('r')
},false);*/
} Focus.prototype={
creatHTML:function(){
objData= C.arg.data;
C.innerWarp.style.width = objData.length+'00%';
for(var i=0;i<objData.length;i++){
C.inhtml.push('<div><a href=\''+objData[i]['link']+'\'><img width="320" height="160" alt="" src=\''+objData[i]['url']+'\' /></a></div>');
}
C.innerWarp.innerHTML = C.inhtml.join('');
C.touchFN();
},
applyStyle:function(node, properties){
var p, s = node.style;
for (p in properties){
s[p] = properties[p];
}
},
animal:function(){
warpLeft = parseInt(C.current)*320;
C.applyStyle(C.innerWarp, {
"-webkit-transition-duration": '150ms',
"-webkit-transition-timing-function": 'ease-out'
});
C.innerWarp.style['-webkit-transform']='translate3d('+warpLeft+'px,0,0)';
},
scroll:function(dir){
if(dir =='r' && Math.abs(C.current) > 0){
C.current++;
}else if(dir=='l' && Math.abs(C.current) < C.arg.data.length-1){
C.current--;
}else{
//alert('出错了')
}
C.animal();
},
touchFN:function(){
var startPos,moverPos,divStartpos;
C.innerWarp.addEventListener('touchstart',function(e){
startTime = +new Date();
//触摸开始位置
startPos = parseInt(e.targetTouches[0].pageX);
var transform = C.innerWarp.style['-webkit-transform'] ? C.innerWarp.style['-webkit-transform'] : 'translate3d(0px,0,0)';
var translate3dLeft = transform.substring(transform.indexOf('(')+1,transform.indexOf(',')) ;
//将动画效果清除为无;
C.applyStyle(C.innerWarp, {
"-webkit-transition-duration": '',
"-webkit-transition-timing-function": ''
});
divStartpos = parseInt(translate3dLeft);
},false);
C.innerWarp.addEventListener('touchmove',function(e){
//触摸移动位置
moverPos = startPos - parseInt(e.targetTouches[0].pageX);
C.innerWarp.style['-webkit-transform']='translate3d('+(divStartpos - moverPos)+'px,0,0)';
e.preventDefault();
},false);
C.innerWarp.addEventListener('touchend',function(e){
if(Math.abs(moverPos) > 50){
C.scroll(moverPos > 0 ? 'l' : 'r');
}else{
C.animal();
}
},false);
}
};
var config ={
id:document.querySelector('#scroll'),
tag:'div',
left:document.querySelector('#leftnav'),
right:document.querySelector('#rightnav'),
data:[
{
'url':'http://auto.ce.cn/main/csjj/cspl/200804/18/W020080418369508593848.jpg',
'link':'http://www.baidu.com',
'alt':'美海岸警卫队击沉日本鬼船'
},
{
'url':'http://pic1.xcarimg.com/img/news_photo/2013/10/16/2ZmpbWmSGo5918.jpg',
'link':'http://www.google.com',
'alt':'安东尼19+8尼克斯送魔术5连败'
},
{
'url':'http://img2.cache.netease.com/auto/2013/10/9/2013100910213365c3c.jpg',
'link':'http://www.qq.com',
'alt':'美海岸警卫队击沉日本鬼船'
}
]
};
new Focus(config);
</script>
</body>
</html>
js图片滑动
<!doctype html>
<html lang="zh-cn">
<head>
<style>
.focusPic{margin:1px auto 0;width:320px;overflow:hidden;height:160px;position:relative;}
.focusPic>div{height:160px;width:300%;-webkit-transition-property:-webkit-transform;-ms-transition-property:-ms-transform;}
.focusPic>div>div{float:left;position:relative;}
.desc{position:absolute;height:30px;width:100%;background:rgba(0,0,0,0.5);bottom:0;left:0;color:#ffffff;text-align:center;line-height:30px;}
</style>
</head>
<body>
<div id="scroll" class="focusPic">
<div style="left:0"> </div>
</div>
<script type="text/javascript">
function Focus(obj){
C = this;
C.arg = obj;
C.id = C.arg.id;
C.innerWarp=C.id.getElementsByTagName(obj.tag)['0'];
C.inhtml=[];
C.creatHTML();
C.current=0; //当前展示的图片
//测试添加事件
/*C.arg.left.addEventListener('click',function(e){
e.preventDefault();
C.scroll('l');
},false);
C.arg.right.addEventListener('click',function(e){
e.preventDefault();
C.scroll('r')
},false);*/
} Focus.prototype={
creatHTML:function(){
objData= C.arg.data;
C.innerWarp.style.width = objData.length+'00%';
for(var i=0;i<objData.length;i++){
C.inhtml.push('<div><a href=\''+objData[i]['link']+'\'><img width="320" height="160" alt="" src=\''+objData[i]['url']+'\' /></a></div>');
}
C.innerWarp.innerHTML = C.inhtml.join('');
C.touchFN();
},
applyStyle:function(node, properties){
var p, s = node.style;
for (p in properties){
s[p] = properties[p];
}
},
animal:function(){
warpLeft = parseInt(C.current)*320;
C.applyStyle(C.innerWarp, {
"-webkit-transition-duration": '150ms',
"-webkit-transition-timing-function": 'ease-out'
});
C.innerWarp.style['-webkit-transform']='translate3d('+warpLeft+'px,0,0)';
},
scroll:function(dir){
if(dir =='r' && Math.abs(C.current) > 0){
C.current++;
}else if(dir=='l' && Math.abs(C.current) < C.arg.data.length-1){
C.current--;
}else{
//alert('出错了')
}
C.animal();
},
touchFN:function(){
var startPos,moverPos,divStartpos;
C.innerWarp.addEventListener('touchstart',function(e){
startTime = +new Date();
//触摸开始位置
startPos = parseInt(e.targetTouches[0].pageX);
var transform = C.innerWarp.style['-webkit-transform'] ? C.innerWarp.style['-webkit-transform'] : 'translate3d(0px,0,0)';
var translate3dLeft = transform.substring(transform.indexOf('(')+1,transform.indexOf(',')) ;
//将动画效果清除为无;
C.applyStyle(C.innerWarp, {
"-webkit-transition-duration": '',
"-webkit-transition-timing-function": ''
});
divStartpos = parseInt(translate3dLeft);
},false);
C.innerWarp.addEventListener('touchmove',function(e){
//触摸移动位置
moverPos = startPos - parseInt(e.targetTouches[0].pageX);
C.innerWarp.style['-webkit-transform']='translate3d('+(divStartpos - moverPos)+'px,0,0)';
e.preventDefault();
},false);
C.innerWarp.addEventListener('touchend',function(e){
if(Math.abs(moverPos) > 50){
C.scroll(moverPos > 0 ? 'l' : 'r');
}else{
C.animal();
}
},false);
}
};
var config ={
id:document.querySelector('#scroll'),
tag:'div',
left:document.querySelector('#leftnav'),
right:document.querySelector('#rightnav'),
data:[
{
'url':'http://auto.ce.cn/main/csjj/cspl/200804/18/W020080418369508593848.jpg',
'link':'http://www.baidu.com',
'alt':'美海岸警卫队击沉日本鬼船'
},
{
'url':'http://pic1.xcarimg.com/img/news_photo/2013/10/16/2ZmpbWmSGo5918.jpg',
'link':'http://www.google.com',
'alt':'安东尼19+8尼克斯送魔术5连败'
},
{
'url':'http://img2.cache.netease.com/auto/2013/10/9/2013100910213365c3c.jpg',
'link':'http://www.qq.com',
'alt':'美海岸警卫队击沉日本鬼船'
}
]
};
new Focus(config);
</script>
</body>
</html>
js图片滑动
解决方案 »
- 谁能详细解释下下面的代码含义
- JQUERY的表单判断问题,求围观,百分百结贴
- 将DIV对象封装到自己的一个类里面,如何继续使用这个DIV本身固有的方法?
- 有什么js函数可以获取和操作文本节点,注释节点
- js script标签
- javascript如何调用web service???上网搜了很多,但都是关于.net的!
- 论坛发图片的问题,高手帮忙
- 给select的option赋值???
- Dreamweaver里的中文链接怎么都成了乱码:<a href="%B8%DF%D0%CB.html">高兴</a>
- 一个很简单的网页问题
- java web中火狐浏览器如何自定义右键菜单栏功能
- 关于js replace 过滤网址中的汉字问题
//是由于 moverPos 没清空上次的值导致的。C.innerWarp.addEventListener('touchstart', function (e) {
moverPos = 0;//这里!!!!!!!!!!!!!
startTime = +new Date();
//触摸开始位置
startPos = parseInt(e.targetTouches[0].pageX);
var transform = C.innerWarp.style['-webkit-transform'] ? C.innerWarp.style['-webkit-transform'] : 'translate3d(0px,0,0)';
var translate3dLeft = transform.substring(transform.indexOf('(') + 1, transform.indexOf(','));
//将动画效果清除为无;
C.applyStyle(C.innerWarp, {
"-webkit-transition-duration": '',
"-webkit-transition-timing-function": ''
});
divStartpos = parseInt(translate3dLeft);
}, false);
如果你弄成 4张图 应该就能看出来为什么了。比如说。你操作的顺序。1 -> 2 -> 3 在第二张单击时,肯定会跳转到第三张。 当单击第三张时,应该是向第四张移动,但是没第四
1 <- 2 <- 3 在第二张单击时,肯定会跳转到第一张。同理