美文网首页
无缝轮播

无缝轮播

作者: 那麽快樂 | 来源:发表于2019-06-04 23:14 被阅读0次
无缝轮播简单构思.png

代码

//封装获取id函数
function $(id) {
    return document.getElementById(id);
}
var banner = $('banner');
var ul = banner.getElementsByTagName('ul')[0];
var imgs = ul.getElementsByTagName('li');
var xiaBiao = document.querySelectorAll('.square>ul>li')
    //克隆第一个和最后一个
ul.appendChild(imgs[0].cloneNode(true));
ul.insertBefore(imgs[imgs.length - 2].cloneNode(true), imgs[0]);
var rBtn = $("rbtn"),
    lBtn = $("lbtn");
//获取图片的宽度值
var imgw = imgs[0].offsetWidth;
//var imgw = parseInt(window.getComputedStyle(imgs[0], null).width);
//重置ul的宽度
ul.style.width = imgs.length * imgw + 'px';
ul.style.left = -imgw + 'px';
//设置下标初始值
var idx = 1;
rBtn.onclick = function() {
    // if (timer) return;
    if (idx >= imgs.length - 1) {
        idx = 1;
        ul.style.left = -imgw * idx + 'px';
    }
    //下个图片的下标
    idx++;
    move()
        //重置ul的宽度
        //ul.style.left = -imgw * idx + 'px';
}
lBtn.onclick = function() {
    // if (timer) return;
    if (idx <= 0) {
        idx = imgs.length - 2;
        ul.style.left = -imgw * idx + 'px';
    }
    //下个图片的下标
    idx--;
    move()
        //重置ul的宽度
        // ul.style.left = -imgw * idx + 'px';

}
var times = null;
//自动播放
times = setInterval(function() {
        rBtn.onclick()
    }, 2000)
    //鼠标划过暂停自动播放
banner.onmouseover = function() {
    clearInterval(times);
}
//鼠标划出开启自动播放
banner.onmouseout = function() {
        times = setInterval(function() {
            rBtn.onclick()
        }, 2000)
    }
    // 点击下标对应的图片
for (var i = 0; i < xiaBiao.length; i++) {
    (function(k) {
        xiaBiao[k].onclick = function() {
            idx = k + 1;
            move();
        }
    })(i)
}
var timer = null;
//移动一个图片距离
function move() {
    timer = setInterval(function() {
        mubiao = idx * imgw;
        curr = -parseInt(ul.style.left);
        shengyu = mubiao > curr;
        shengyuTwo = mubiao - curr
        step = Math.ceil(Math.abs(shengyuTwo) / 20)
        if (shengyu) {
            curr += step;
        } else {
            curr -= step;
        }
        if (shengyu ? mubiao <= curr : curr <= mubiao) {
            clearInterval(timer)
        }
        ul.style.left = -curr + 'px'
  }, 17)
  //小白条随下标移动
    for (var i = 0; i < xiaBiao.length; i++) {
        xiaBiao[i].className = "";
    }
    xiaBiao[(idx - 1) % 3].className = 'active'
}

相关文章

  • 无缝轮播

    无缝细解过程 html css js 无缝轮播js切换动画 css代码 JS代码 循环无缝轮播 CSS js1.首...

  • JS中常见的几种轮播

    轮播图 1.无缝不停轮播 ​ 1. body布局: ​ 2. css样式: 3. JS代码: 2.无缝停顿...

  • 无缝轮播

    轮播图大家都写过,但是怎么做到无缝切换对初学者来说是个难点。曾经也困惑了我很久,一直在研究,方法也很多,但是总是没...

  • 无缝轮播

    给大家讲哈无缝轮播吧~ 首先说一下布局~~ 然后加个隐藏 如图 如图 如图,就可以切换了 如图,都可以切换出来啦

  • 无缝轮播

    无缝轮播原理 DOM events 1.历史 2.例子 类型是程序员要注重2队列 先进先出一次事件 .one() ...

  • 无缝轮播

    代码

  • 轮播图的制作

    这是渐变方法的无限轮播哈哈,附带autoPlay无缝无限轮播多个carouselcarousel-fullscreen

  • jQuery实现轮播图无缝(无回滚)滚动切换效果

    HTML 无缝切换轮播图