zoukankan      html  css  js  c++  java
  • 移动端移动图制作

    制作过程中容易发生错误的地方:

    1.在制作轮播是需要在展示的图片前后都多加一张图,比如你要放1,2,3号图,那么需要再加2张图3,1,2,3,1.

    2.图片打开看的是1号图,需要直接给它设置一个margin-left盒子宽度负值。如果在js中直接给一个translate宽度,会出现问题;

    3.注意需要添加window.addEventListener('load', function() {}),等页面执行完毕之后再加载js

    window.addEventListener('load', function() {
        var focus = document.querySelector('.focus');
        var focus_ul = focus.querySelector('ul')
        var focus_ol = focus.querySelector('ol')
        var focus_width = focus.offsetWidth
    
        // 给ol自动生成小圆圈
        for (var i = 0; i < focus_ul.children.length; i++) {
            var li = document.createElement('li')
            li.setAttribute('index', i)
            focus_ol.appendChild(li)
        }
        var first = focus_ul.children[0].cloneNode(true);
        var last = focus_ul.children[focus_ul.children.length - 1].cloneNode(true);
        // 为了做轮播图,把第一张图和最后一张图复制分别放在前后
        focus_ul.insertBefore(last, focus_ul.children[0]);
        focus_ul.appendChild(first)
            // 默认第一个小圆圈是选中的
        focus_ol.children[0].classList.add('current');
        var index = 0;
        var timer = setInterval(function() {
            index++;
            var translatex = -index * focus_width;
            focus_ul.style.transition = 'all .3s';
            focus_ul.style.transform = 'translateX(' + translatex + 'px)';
        }, 2000);
        // 等着我们过渡完成之后,再去判断 监听过渡完成的事件 transitionend 
        focus_ul.addEventListener('transitionend', function() {
            // 无缝滚动
            if (index >= 3) {
                index = 0;
                // console.log(index);
                // 去掉过渡效果 这样让我们的ul 快速的跳到目标位置
                focus_ul.style.transition = 'none';
                // 利用最新的索引号乘以宽度 去滚动图片
                var translatex = -index * focus_width;
                focus_ul.style.transform = 'translateX(' + translatex + 'px)';
            } else if (index < 0) {
                index = 2;
                focus_ul.style.transition = 'none';
                // 利用最新的索引号乘以宽度 去滚动图片
                var translatex = -index * focus_width;
                focus_ul.style.transform = 'translateX(' + translatex + 'px)';
            }
            // 3. 小圆点跟随变化
            // 把ol里面li带有current类名的选出来去掉类名 remove
            focus_ol.querySelector('.current').classList.remove('current');
            // 让当前索引号 的小li 加上 current   add
            focus_ol.children[index].classList.add('current');
        });
        // 给图片设置move事件
        var startX = 0;
        var moveX = 0;
        var flag = false;
        focus_ul.addEventListener('touchstart', function(e) {
            startX = e.targetTouches[0].pageX;
            clearInterval(timer);
        })
        focus_ul.addEventListener('touchmove', function(e) {
    
            moveX = e.targetTouches[0].pageX - startX;
            var translatex = -index * focus_width + moveX;
            this.style.transition = 'none';
            focus_ul.style.transform = 'translateX(' + translatex + 'px)';
            e.preventDefault()
            flag = true;
        })
        focus_ul.addEventListener('touchend', function(e) {
            if (flag) {
                if (Math.abs(moveX) > 50) {
                    if (moveX > 0) {
                        index--;
                    } else {
                        index++;
                    }
                    var translatex = -index * focus_width;
                    focus_ul.style.transition = 'all .3s';
                    focus_ul.style.transform = 'translateX(' + translatex + 'px)';
                } else {
                    var translatex = -index * focus_width;
                    focus_ul.style.transform = 'translateX(' + translatex + 'px)';
                }
            }
            clearInterval(timer)
            timer = setInterval(function() {
                index++;
                var translatex = -index * focus_width;
                focus_ul.style.transition = 'all .3s';
                focus_ul.style.transform = 'translateX(' + translatex + 'px)';
            }, 2000);
        })
    })
  • 相关阅读:
    第四章:Django模型——添加 Event发布会的表 报错
    第四章:Django模型——admin后台管理
    第四章:Django 模型 —— 设计系统表
    第三章:3.9 清除 Google 浏览器中的缓存
    第三章:3.9 关上窗户
    第三章:3.9 引用Django 认证登陆
    第三章:3.8 登陆 Django 默认后台
    降脂食物
    决定孩子人生高度的,不是知识而是这个!
    百万保险
  • 原文地址:https://www.cnblogs.com/rainbowupdate/p/12568637.html
Copyright © 2011-2022 走看看