美文网首页
14 - 网易轮播图

14 - 网易轮播图

作者: 西巴撸 | 来源:发表于2017-01-08 21:45 被阅读72次

    网易轮播图一款业内相比较而言比较好的轮播图

    HTML结构

    <!Doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>网易轮播图</title>
        // 引入Css外链样式文件
        <link rel="stylesheet" href="css/slider.css">
    </head>
    <body>
    <div class="slider" id="slider">
        <div class="slider-scroll" id="slider_scroll">
            <div class="slider-main" id="slider_main">
                <div class="slider-main-img">
                    <a href="">
                        ![](images/banner1.png)
                    </a>
                </div>
                <div class="slider-main-img">
                    <a href="">
                        ![](images/banner2.jpg)
                    </a>
                </div>
                <div class="slider-main-img">
                    <a href="">
                        ![](images/banner3.jpg)
                    </a>
                </div>
                <div class="slider-main-img">
                    <a href="">
                        ![](images/banner4.jpg)
                    </a>
                </div>
                <div class="slider-main-img">
                    <a href="">
                        ![](images/ad2.jpg)
                    </a>
                </div>
                <div class="slider-main-img">
                    <a href="">
                        ![](images/ad6.jpg)
                    </a>
                </div>
            </div>
        </div>
    
        <!-- 控制区域 -->
        <div class="slider-ctl" id="slider_ctl">
            <span class="slider-ctl-prev"></span>
            <span class="slider-ctl-next"></span>
        </div>
    </div>
    
    // 引入自己封装好函数的工具包
    <script src="js/MyPack.js"></script>
    // 引入Js外链文件
    <script src="js/slider.js"></script>
    </body>
    </html>
    

    Css样式

    *{
        margin: 0;
        padding: 0;
        border: 0;
    }
    
    img{
        vertical-align: top;
    }
    
    .slider{
        width: 310px;
        height: 260px;
        position: relative;
        margin: 100px auto;
        overflow: hidden;
    
    }
    
    .slider-scroll{
        width: 310px;
        height: 220px;
    
        position: relative;
    }
    
    .slider-main{
        width: 620px;
        height: 220px;
    
    }
    
    .slider-main-img{
        width: 310px;
        height: 220px;
        position: absolute;
    }
    
    .slider-main-img img{
        height: 100%;
        width: 100%;
    }
    
    .slider-ctl-prev, .slider-ctl-next{
        background: url("../images/icon.png");
        width: 20px;
        height: 34px;
        position: absolute;
        top: 50%;
        margin-top: -35px;
    }
    
    .slider-ctl-prev{
        left:5px;
    }
    
    .slider-ctl-next{
        background-position: -9px -45px;
        right:5px;
    }
    
    .slider-ctl-icon{
        width: 24px;
        height: 5px;
        background: url("../images/icon.png") no-repeat -24px -790px;
        display: inline-block;
        margin:5px;
        text-indent:20em;
        overflow: hidden;
    }
    
    .slider-ctl{
        text-align: center;
        cursor: pointer;
    }
    
    .current{
        background-position: 0 -770px;
    }
    

    Js代码

    window.onload = function () {
        // 1. 获取标签
        var slider = $('slider');
        var sliderMain = $('slider_main');
        var sliderMainImg = sliderMain.children;
        var sliderCtl = $('slider_ctl');
    
        // 记录全局索引
        var key = 0;
    
        // 2.动态创建span
        for (var i = 0; i < sliderMainImg.length; i++) {
            var span = document.createElement('span');
            span.setAttribute('class', 'slider-ctl-icon');
            span.innerHTML = sliderMainImg.length - i;
            sliderCtl.insertBefore(span, sliderCtl.children[1]);
        }
        // 2.1 第一个被选中
        sliderCtl.children[1].setAttribute('class', 'slider-ctl-icon current');
    
    
        // 3. 原始定位
        var scrollW = slider.offsetWidth;
        for (var i = 1; i < sliderMainImg.length; i++) {
            sliderMainImg[i].style.left = scrollW + 'px';
        }
    
        // 4. 监听鼠标点击
        var sliderCtlChildren = sliderCtl.children;
        for (var i = 0; i < sliderCtlChildren.length; i++) {
            var single = sliderCtlChildren[i];
            single.onmousedown = function () {
                if (this.className == 'slider-ctl-prev') {
                    // 点击左边
                    /*
                     1.当前的图片做动画右移
                     2.下一张图片快速出现在可视区域的左边
                     3.做动画进入
                     */
                    animate(sliderMainImg[key], {left: scrollW}, null);
                    key--;
                    if (key < 0) {
                        key = sliderMainImg.length - 1;
                    }
                    sliderMainImg[key].style.left = -scrollW + 'px';
                    animate(sliderMainImg[key], {left: 0}, null);
    
                }
                else if (this.className == 'slider-ctl-next') {
                    /*
                     * 点击右边
                     * 自动播放 就相当于一直点右边的按钮
                     * 直接调用
                     * */
                    autoPlay();
                }
                else {
                    /*
                     * 点击下边
                     * 用当前点击的索引和选中的序号做对比
                     * 点击的>选中的 右边
                     * 点击的<选中的 左边
                     * */
                    var index = this.innerHTML - 1;
                    alert(index);
                    // 对比 --- 序号和索引号
                    if (key > index) {
                        // 点击左边
                        /*
                         1.当前的图片做动画右移
                         2.下一张图片快速出现在可视区域的左边
                         3.做动画进入
                         */
                        animate(sliderMainImg[key], {left: scrollW}, null);
                        sliderMainImg[index].style.left = -scrollW + 'px';
                    }
                    // 对比 --- 序号和索引号
                    else if (key < index) {
                        // 点击右边
                        /*
                         1.当前的图片做动画左移
                         2.下一张图片快速出现在可视区域的右边
                         3.做动画进入
                         */
                        animate(sliderMainImg[key], {left: -scrollW}, null);
                        sliderMainImg[index].style.left = scrollW + 'px';
                    }
                    key = index;
                    animate(sliderMainImg[key], {left: 0}, null);
                }
                // 更新索引
                changeIndex();
            }
        }
        /*
         * 5.切换索引
         * */
        function changeIndex() {
            // 5.1 所有的都不被选中
            for (var i = 1; i < sliderCtlChildren.length - 1; i++) {
                sliderCtlChildren[i].className = 'slider-ctl-icon';
            }
            sliderCtlChildren[key + 1].className = 'slider-ctl-icon current';
        }
    
        // 6.自动播放
        var timer = setInterval(autoPlay, 1000);
    
        function autoPlay() {
            // 点击右边
            /*
             1.当前的图片做动画左移
             2.下一张图片快速出现在可视区域的右边
             3.做动画进入
             */
            animate(sliderMainImg[key], {left: -scrollW}, null);
            key++;
            if (key > sliderMainImg.length - 1) {
                key = 0;
            }
            sliderMainImg[key].style.left = scrollW + 'px';
            animate(sliderMainImg[key], {left: 0}, null);
            // 更新索引
            changeIndex();
        }
    
        // 7. 鼠标经过 清除定时器
        slider.onmouseover = function () {
            clearInterval(timer);
        }
        slider.onmouseout = function () {
            timer = setInterval(autoPlay, 1000);
        }
    
    }
    

    特效展示

    网易轮播图

    案例所需精灵图

    案例精灵图

    相关文章

      网友评论

          本文标题:14 - 网易轮播图

          本文链接:https://www.haomeiwen.com/subject/sahcbttx.html