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


    第一部分是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>
    

      

  • 相关阅读:
    程序设计课程技巧小总结
    《大学之路》读后感(1)
    《世界是数字的》读后感(4)
    《世界是数字的》读后感(3)
    《世界是数字的》读后感(2)
    《世界是数字的》读后感(1)——第一部分 硬件
    独立思考的能力——《不要等到毕业以后》读后感(2)
    迷茫且鉴定——《不要等到毕业以后》读后感(1)
    HashTable HashMap区分
    使用media query 来实现响应式设计
  • 原文地址:https://www.cnblogs.com/shentao11023/p/7919021.html
Copyright © 2020-2023  润新知