旋转木马的实现支持移动端

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了旋转木马的实现支持移动端相关的知识,希望对你有一定的参考价值。

第一部分是html部分,外层父元素用相对定位,子元素用绝对顶对,通过改变top,left值改变他们的位置。
<div class="carousel">
<div class="img1">
<img src="images/f1.jpg" />
<p>旋转木马1</p>
</div>
<div class="img2">
<img src="images/f2.jpg" />
<p>旋转木马2</p>
</div>
<div class="img3">
<img src="images/f3.jpg" />
<p>旋转木马3</p>
</div>
<div class="img4">
<img src="images/f4.jpg" />
<p>旋转木马4</p>
</div>
<div class="img5">
<img src="images/f5.jpg" />
<p>旋转木马5</p>
</div>
<p class="prev"><img src="images/arrow1.png" alt="arrow"/></p>
<p class="next"><img src="images/arrow2.png" alt="arrow"/></p>
</div>

第二部分就是就是代码的实现

<script>
1.申明变量,保存获取的dom节点,定时器还有是否开启触摸。

var carousel=document.getElementsByClassName("carousel")[0]; 
var aitem=carousel.getElementsByTagName("div");
var prev=document.getElementsByClassName("prev")[0];
var next=document.getElementsByClassName("next")[0];
var autoplay=true;
var timer;
if(autoplay==true){
timer=setInterval(left,3000)
}
function right(){
var fn=new Array(); //创建一个新的数组
for(var i=0;i<aitem.length;i++){
fn.push(aitem[i].className) //遍历每个li的class类名,保存到一个新的数组里面
}
for(var j=0;j<aitem.length;j++){
if(j==aitem.length-1){
aitem[j].className=fn[0];
}
else{
aitem[j].className=fn[j+1];//向右切换时,遍历每个li,改变他们的class类名,逻辑上每个li的类名要变成原来类名的上一个,最后一个变成第一个类名
}
}
}
function left(){
var fn=new Array();//创建一个新的数组
for(var i=0;i<aitem.length;i++){
fn.push(aitem[i].className) //遍历每个li的class类名,保存到一个新的数组里面
}
for(var j=0;j<aitem.length;j++){
if(j==0){
aitem[0].className=fn[aitem.length-1];
}
else{
aitem[j].className=fn[j-1];//向右切换时,遍历每个li,改变他们的class类名,逻辑上每个li的类名要变成原来类名的上一个,第一个变成最后一个类名
}
}
}
prev.onclick=function(){
right(); //执行向右切换
}
next.onclick=function(){
left();//执行向左切换
}
function touch(){
var startx,movex;

绑定触摸的监听事件
carousel.addEventListener("touchstart",touchstart,false);
carousel.addEventListener("touchmove",touchmove,false);
carousel.addEventListener("touchend",touchend,false);
function touchstart(e){
clearInterval(timer)
sartx= e.changedTouches[0].clientX;//获取触摸开始时的x坐标

}
function touchmove(e){
movex= e.changedTouches[0].clientX-sartx; //获取触摸结束时手指移动的距离
}

判断手指移动的距离,执行向右切换或者向左切换
function touchend(){
if(movex>100){
right()           
}
if(movex<-100){
left()
}
timer=setInterval(left,3000)
}
}
touch()

</script>

以上是关于旋转木马的实现支持移动端的主要内容,如果未能解决你的问题,请参考以下文章

记录一个移动端图片预览(支持旋转),使用css强制旋转的坑

移动端证件识别支持iosandroid

前端压缩图片代码,支持移动端和pc 端,还有拍照后获取到的照片

移动端图片裁剪上传—jQuery.cropper.js

移动端图片操作——预览旋转合成

移动端双指旋转