美文网首页
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 - 网易轮播图

    网易轮播图一款业内相比较而言比较好的轮播图 HTML结构 Css样式 Js代码 ** PS:这个包之前有分享过的地...

  • iOS14 UIPageControl变化

    问题 项目中使用到了SDCycleScrollView来显示轮播图,升级到iOS 14后发现轮播图上的UIPage...

  • 无标题文章

    轮播图分为:传统轮播图、间歇轮播图、呼吸轮播图、无缝滚动轮播图等。它们各具特色,各有用处。 1.传统轮播图 第一步...

  • 轮播图

    轮播图分为:传统轮播图、间歇轮播图、呼吸轮播图、无缝滚动轮播图等。 1.传统轮播图 第一步,得到元素 第二步,设置...

  • 前端基本功:JS(十二)网易轮播图/ 旋转轮播图

    网易轮播图: 案例素材及源码:链接:http://pan.baidu.com/s/1pLgzkVp 密码:9buw...

  • 现金红包

    每日红包 轮播图 详情图 周末红包 轮播图 详情图 圣诞红包 轮播图 详情图

  • day7_作业

    轮播图1 轮播图2

  • [iOS]定制性强的广告轮播图--SCAdView

    @[无限轮播图] @[3D轮播图] @[广告轮播图] SCAdView Statement If my code ...

  • ScrollView 两个控件复用, ScrollView 的极

    通常的 scrollView 用来进行轮播图的展示.网易新闻中标签对应的页面切换展示 举个栗子: 分析: 创建容器...

  • 普通奖品

    卡西欧小方块 轮播图 详情图 三只松鼠大礼包 轮播图 详情图 天猫精灵 轮播图 详情图 小米蓝牙无线耳机 轮播图 ...

网友评论

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

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