图解js图片轮播效果

本文实例讲解了js图片轮播效果的实现原理,分享给大家供大家参考,具体内容如下

两种图片轮播实现方案,先来看效果对比:

方案一:

原理:将图片摆成一行,从左到右依次滚动进入视野,当滚动到最后一张时,从右到左滚动回到第一张。这么做的缺点是,滚动到最后一张时,会有一个反向,导致整个滚动过程不连贯。

方案二:

实现原理示意图

原理:

1.轮播过程中,有几个关键元素:一个舞台(绿框)、候场区(黑框)、排队区(红框)和两个数组A和B。A用来保存正在展示和下一个将要展示的图片,如:图片1、2;B用来保存排队等候出场的图片,如图片5、4、3。

2.每一步轮播时,要做的事情如下:

A要做的事情是把它的第一个元素向左移走,把第二个元素向左移进展示区域;然后把刚才的第一个元素从A中shift出去,并splice进B的第一个位置上。

B要做的事情是把它的最后一个元素,移到候场区(即目前图2所在的位置)等候;然后把刚才的最后一个元素从B中pop出去,并push到A中。

Code:

图片轮播-v2
  • /** * 图片轮播 * @type {Element} */ var btn = document.getElementById("next"); var dom = document.getElementById("slider"); var liArr = dom.getElementsByTagName("li");

    var curWidth = 200;
    var ulWidth = curWidth * liArr.length;
    var show = [];
    var circle = [];

    var goAway = "translate(-" + curWidth +"px,0) translateZ(0px)";
    var goIn = "translate(0,0) translateZ(0px)";
    var goPre = "translate(" + curWidth +"px,0) translateZ(0px)";

    //保证所有li在ul中能在一行内放下
    dom.style.width = ulWidth + "px";

    for(var i = 0,len = liArr.length; i < len; i++){
    var curLi = liArr[i];

    curLi.setAttribute("data-index",i);
    curLi.style.width = curWidth + "px";

    if(i == 0){
    curLi.style.left = 0;
    show.push(curLi);
    }else{
    curLi.style.left = - curWidth * i + "px";
    if(i > 1){
    translate(curLi,goAway,'')
    circle.push(curLi);
    }else{
    show.push(curLi);
    translate(curLi,goPre,'');
    }
    }

    }

    circle.reverse();

    btn.onclick = function(){
    //已展示的图片滚粗
    var showFirst = show.shift();
    translate(showFirst,"300ms");

    //正在展示的图片
    translate(show[0],goIn,"300ms");
    circle.splice(0,showFirst);

    //准备好下一个将要展示的图片
    var nextPre = circle.pop();
    translate(nextPre,"0ms");
    show.push(nextPre);

    };

    function translate(dom,goType,time){
    dom.style.transform =
    dom.style.webkitTransform =
    dom.style.mozTransform =
    dom.style.msTransform =
    dom.style.oTransform = goType;

    dom.style.transitionDuration =
    dom.style.webkitTransitionDuration =
    dom.style.mozTransitionDuration =
    dom.style.msTransitionDuration =
    dom.oTransitionDuration = time;

    }

    精彩专题分享:

    以上就是js图片轮播效果的实现原理以及详细代码,希望对大家学习javascript程序设计有所帮助。

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
    这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
    js如何实现弹出form提交表单?(图文+视频)
    js怎么获取复选框选中的值
    js如何实现倒计时跳转页面
    如何用js控制图片放大缩小
    JS怎么获取当前时间戳
    JS如何判断对象是否为数组
    JS怎么获取图片当前宽高
    JS对象如何转为json格式字符串
    JS怎么获取图片原始宽高
    怎么在click事件中调用多个js函数
    js如何往数组中添加新元素
    js如何拆分字符串
    JS怎么对数组内元素进行求和
    JS如何判断屏幕大小
    js怎么解析json数据
    js如何实时获取浏览器窗口大小
    原生JS实现别踩白块小游戏(五)
    原生JS实现别踩白块小游戏(一)