JavaScript实现轮播图

功能:

1、图片会自动播放,鼠标放上面会暂停播放

2、点击左右出现的箭头可以切换到上一张/下一张图片

3、点击序号会跳转到对应图片 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>当当网首页轮播图-By小黑</title>
    <style>
      *{
        padding: 0;
        margin: 0;
        list-style: none;
      }
      #wrap{
        margin: 50px auto;
        width: 800px;
        height: 330px;
        overflow: hidden;
        position: relative;
      }
      #list{
        position: absolute;
        bottom: 15px;
        right: 250px;
      }
      #list li{
        float: left;
        margin-right: 15px;
        cursor: pointer;
        width: 23px;
        height: 23px;
        line-height: 23px;
        text-align: center;
        background: #ADA79D;
        color: #FFF ;
        border-radius: 50%;
      }
      #list .on{
        background: red;
      }
      #bar_left,#bar_right{
        width: 33px;
        height: 80px;
        line-height: 80px;
        position: absolute;
        top: 130px;
        background: rgba(0, 0, 0, 0.3);
      }
      #bar_left{
        left: -33px;
      }
      #bar_right{
        right: -35px;
      }
      /*下面利用伪元素实现左侧和右侧的小箭头*/
      #bar_left:after,#bar_left:before,#bar_right:before,#bar_right:after{
        content: "";
        border-top: 15px solid transparent;
        border-bottom: 15px solid transparent;
        position: absolute;
        top: 25px;
      }
      /*左边箭头*/
      #bar_left:before{
        border-left: 15px solid transparent;
        border-right: 15px solid #FFF;
        right: 10px;
      }
      #bar_left:after{
        border-left: 15px solid transparent;
        border-right: 15px solid rgba(0, 0, 0, 0.3);
        right: 7px;
      }
      /*右边箭头*/
      #bar_right:before{
        border-right: 15px solid transparent;
        border-left: 15px solid #FFF;
        left: 10px;
      }
      #bar_right:after{
        border-right: 15px solid transparent;
        border-left: 15px solid rgba(0, 0, 0, 0.3);
        left: 7px;
      }
      #wrap:hover #bar_left{
        left: 0;
        cursor: pointer;
        transition: left 0.5s;
      }
      #wrap:hover #bar_right{
        /* display: block; */
        right: 5px;
        cursor: pointer;
        transition: right 0.5s;
      }
      .tex{
        margin: 20px auto;
        width: 400px;
      }
      .tex ul li{
        list-style-type:circle;
        color: red;
        font-weight: bold;
        margin-bottom: 5px;
      }
    </style>
</head>

<body>
  <div id="wrap">
    <ul id="pic">
      <li><img src="images/dang1.jpg" alt=""></li>
      <li><img src="images/dang2.jpg" alt=""></li>
      <li><img src="images/dang3.jpg" alt=""></li>
      <li><img src="images/dang4.jpg" alt=""></li>
      <li><img src="images/dang5.jpg" alt=""></li>
      <li><img src="images/dang6.jpg" alt=""></li>
      <li><img src="images/dang7.jpg" alt=""></li>
      <li><img src="images/dang8.jpg" alt=""></li>
    </ul>
    <div id="bar_left"></div>
    <div id="bar_right"></div>
    <ol id="list">
      <li class="on">1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
      <li>6</li>
      <li>7</li>
      <li>8</li>
    </ol>
  </div>
  <div class="tex">
    <ul>
      <li>功能如下:</li>
      <li>图片会自动播放,鼠标放上面会暂停播放</li>
      <li>点击左右出现的箭头可以切换到上一张/下一张图片</li>
      <li>点击序号会跳转到对应图片</li>
    </ul>
  </div>
  <script>
    var wrap=document.getElementById('wrap');
    var pics=document.getElementById('pic');
    var lists=document.getElementById('list').getElementsByTagName('li');
    var point_l=document.getElementById('bar_left');
    var point_r=document.getElementById('bar_right');
    var index=0;
    var counter=null;
    function change(){//计时器
      counter=setInterval(function(){
        index++;
        if(index===lists.length){
          index=0;
        }
        img(index);
      },2000)
    }
    change();
    function img(curIndex){//切换图片
      for (var i=0;i<lists.length;i++){
        if(curIndex===i){
          lists[i].className='on';
        }
        else{
          lists[i].className='';
        }
      }
      index=curIndex;
      pics.style.marginTop=-330*curIndex+'px';//图片上移
      wrap.onmouseover=function(){//鼠标放到图片上时图片停止播放
        pics.style.cursor="pointer";
        clearInterval(counter);//清除计时器
      }
      pics.onmouseout=change;
    }
    //鼠标放到指定序号切换到指定图片
    for (var i=0;i<lists.length;i++){
      lists[i].id=i;
      lists[i].onmouseover=function(){
        img(this.id);
        this.className='on';
      }
    }
    //当鼠标放在箭头上时,点击箭头切换到下一张图片
    point_l.onmousedown=function(){//点击左边箭头
      if(index<=0){
          index=lists.length;
      }
      img(index-1);
    }
    point_r.onmousedown=function(){//点击右边箭头
      if (index>=lists.length-1){
        index=-1;
      }
      img(index+1);
    }
  </script>
</body>

</html>

效果图

 

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员班长

感谢您的一路相伴

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值