页面滚动 和 幻灯片

var scroll = document.getElementById("scroll"); // 获得大盒子

    var ul = document.getElementById("ul"); // 获得ul

    var ulLis = ul.children;// 获得ul的盒子 以此来生成ol中li的个数

    var liWidth = ul.children[0].offsetWidth;// 获得每个li的宽度

    // 操作元素

    // 因为要做无缝滚动,所以要克隆第一张,放到最后一张后面

    // 1\. 克隆元素

    ul.appendChild(ul.children[0].cloneNode(true));

    // 2.创建ol 和li

    vaar ol = document.createElement("ol");//创建ol元素

    scroll.appendChild(ol);// 把ol放到scroll盒子里面去

    for (var i=0;i

        var li = document.createElement("li");// 创建li元素

        li.innerHTML = i + 1;// 给li里面添加文字  1 2 3 4 5

        ol.appendChild(li);// 将li元素添加到ol里面

    }

    ol.children[0].className = "current";// ol中的第一个li背景色为purple

此时ol li元素即小圆点创建完毕 我们接着用js做动画

动画部分包括:

1.鼠标经过第几个小圆点,就要展示第几张图片,并且小圆点的颜色也发生变化

2.图片自动轮播,(这需要一个定时器)

3.鼠标经过图片,图片停止自动播放(这需要清除定时器)

4.鼠标离开图片,图片继续自动轮播 (重新开始定时器)

这里我们封装了一个animate()动画函数

// 动画函数 第一个参数,代表谁动 第二个参数 动多少

    // 让图片做匀速运动,匀速动画的原理是 当前的位置 + 速度  即 offsetLeft + speed

    function animate(obj,target){

        // 首先清除掉定时器

        clearInterval(obj.timer);

        // 用来判断 是+ 还是 -  即说明向左走还是向右走

        var speed = obj.offsetLeft < target ? 15 : -15;

        obj.timer = setInterval(function(){

            var result = target - obj.offsetLeft;//它们的差值不会超过speed

            obj.style.left = obj.offsetLeft + speed + "px";

            // 有可能有小数的存在,所以在这里要做个判断             

            if (Math.abs(result) <= Math.abs(speed)) {

                clearInterval(obj.timer);

                obj.style.left = target + "px";

            }

        },10);

    }

定时器 函数

var timer = null; // 轮播图的定时器

    var key = 0;// 控制播放的张数

    var circle = 0;// 控制小圆点

    timer = setInterval(autoplay,1000);// 自动轮播

    function autoplay(){

        /*自动轮播时,要对播放的张数key进行一个判断,如果播放的张数超过ulLis.length-1,

        就要重头开始播放.  因为我们克隆了第一张并将其放在最后面,所以我们要从第二张图片开始播放*/

        key++; // 先++
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,827评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,097评论 1 10
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,009评论 3 119
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,591评论 8 265
  • 我们常以为灌肠是针对肠-----大肠,小肠等。原来不然,咖啡灌肠其实是针对肝脏的。 肝脏解毒的时候,需要一种称为G...
    璎珞有话说阅读 2,363评论 0 3