教你如何用JS实现动态轮播图

轮播效果图如下:

1. 自动播放(鼠标划入显示区域时停止播放,鼠标划出显示区域时继续播放)
2. 点击左右箭头切换图片
3. 底下小圆圈点击切换对应的图片

下面是实现代码

css样式

<style>
    * {
        margin: 0px;
        padding: 0px;
        list-style: none;
    }

    div {
        width: 800px;
        height: 300px;
        border: solid 2px red;
        margin: 10% auto;
        position: relative;
    }

    ul li {
        display: none;
    }

    ul li img {
        width: 800px;
        height: 300px;  
    }

    ol {
        position: absolute;
        bottom: 20px;
    }

    ol li {
        width: 30px;
        height: 30px;
        border-radius: 50%;
        background: blue;
        font-size: 20px;
        line-height: 30px;
        text-align: center;
        float: left;
        margin: 0px 25px;
    }

    span {
        position: absolute;
        width: 60px;
        height: 50px;
        background: darksalmon;
        color: aliceblue;
        line-height: 50px;
        text-align: center;
        top: 50%;
        margin-top: -40px;
        font-size: 40px;
    }

    #left {
        left: 10px;
    }

    #right {
        right: 10px;
    }

    ul .love {
        display: block;
    }

    ol .love {
        background: blueviolet;
    }
</style>

HTML部分, 图片自己在网上随便找几张

<body>
<div>
    <ul>
        <li class="love"><img src="./img/movie1.jpg" alt=""></li>
        <li><img src="./img/movie2.jpg" alt=""></li>
        <li><img src="./img/movie3.jpg" alt=""></li>
        <li><img src="./img/movie4.jpg" alt=""></li>
        <li><img src="./img/movie5.jpg" alt=""></li>
        <li><img src="./img/movie6.jpg" alt=""></li>
        <li><img src="./img/movie7.jpg" alt=""></li>
        <li><img src="./img/movie8.jpg" alt=""></li>
        <li><img src="./img/movie9.jpg" alt=""></li>
        <li><img src="./img/movie10.jpg" alt=""></li>
    </ul>
    <ol>
        <li class="love">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
    </ol>
    <span id="left">
        &lt;
    </span>
    <span id="right">
        &gt;
    </span>
</div>
</body>

JS部分

<script>
var div = document.querySelector('div')  //获取大盒子
var ul_li = document.querySelectorAll('ul li') //获取ul下的所有li
var ol_li = document.querySelectorAll('ol li') //获取ol下的所有li
var left = document.querySelector('#left')    //获取左边的箭头
var right = document.querySelector('#right')  //获取右边的箭头
var index = 0, timer = null;
//函数封装点击右边
function auto() {
    index++
    if (index >= ul_li.length) {
        index = 0
    }
    getLed(index)
}
//点击右边
right.onclick = function () {
    auto()
}
//点击左边
left.onclick = function () {
    index--
    if (index < 0) {
        index = ul_li.length - 1
    }
    getLed(index)
}
function getLed(ind) {
    for (var j = 0; j < ul_li.length; j++) {
        ul_li[j].classList.remove('love')
        ol_li[j].classList.remove('love')
    }
    ul_li[index].classList.add('love')
    ol_li[index].classList.add('love')
}

//定时器自动播放
timer = setInterval(auto, 1000) //每隔1秒执行一次

//鼠标划入停止定时器
div.onmousemove = function () {
    clearInterval(timer)
    timer = null
}
//鼠标划出执行定时器
div.onmouseout = function () {
    timer = setInterval(auto, 1000)
}
//点击图片导航 切换图片
for (var i = 0; i < ol_li.length; i++) {
    (function (ind) {
        ol_li[ind].onclick = function () {
            getLed(index = ind)
        }
    })(i)
}
</script>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,635评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,543评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,083评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,640评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,640评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,262评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,833评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,736评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,280评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,369评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,503评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,870评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,340评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,460评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,909评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,512评论 2 359

推荐阅读更多精彩内容

  • 原理 图片轮播原理:将一系列大小相等的图片平铺,利用css布局只显示一张图片,其他图片隐藏,通过计算偏移量利用定时...
    黎贝卡beka阅读 2,259评论 1 2
  • 进入前端将近一年了,js还是很弱,突发奇想写一个轮播图,就找到了这个博主的材料,和大家分享。 轮播图的原理: 一系...
    FRRRR阅读 3,664评论 0 11
  • 通过学习,我理解了图片轮播原理,学习了setTimeout()、setInterval()函数设置定时器与清除定时...
    McRay阅读 2,166评论 0 7
  • 本文首发于我的博客,这是我的github,欢迎star。 这是一个轮播图组件,你可以直接下载使用,这里是代码地址,...
    空_城__阅读 1,559评论 2 5
  • 前端学习时间不长,最近看完了第一遍高设,想着试着写一点东西,于是有了这个还不算好的轮播效果。(学习出处为慕课网) ...
    JellyFive阅读 624评论 0 6