利用js实现轮播图小案例

具体思路如下:要得到图片滑动效果 就意味着几张图片并排摆放,为方便实现我在无序列表中添加图片,再将其旋转至水平,图片再转正,调整好长度宽度。再设置绝对定位就得到了一组并排的图片。接下来只需每隔一段时间修改ul的left的值,就能实现轮播滑动效果。滑动的速度是根据起点到目标点的位置进行动态调整。距离目标位置越近,速度越慢,越远速度越快。核心代码如下:

function move(obj,ita,attr){
 obj.timer = null;
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
 var cur = parseInt(getstyle(obj,attr));
 var speed = (ita-cur)/6;
 speed = speed>0?Math.ceil(speed):Math.floor(speed);
 
  if(ita==cur){
   
   clearInterval(obj.timer);
     }else{
     obj.style[attr] = speed+cur+'px';
  }
 },30);
ul{
    position: absolute;
    margin: 0 auto;
    list-style-type: none;
   }
   ul li{
    width: 600px;
    height: 600px;
    }
   ul li img{
    width: 600px;
    height: 400px;
    z-index: 0;
   
    transform:rotate(-90deg);
   }
   .btn {
    width: 60px;
    height: 50px;
    position: absolute;
    z-index: 3;
   }
   .btn img{
    width: 60px;
    height: 50px;
    opacity: 0.3;
   }
   .btn img:hover{
    opacity: 1;
   }
window.onload =function(){
    var aBTN = document.getElementsByClassName('btn');
    aBTN[0].style.top = '140px';
    aBTN[1].style.top = '140px';
    aBTN[1].style.left = '540px';
    var aIMG = document.getElementsByTagName('ul');
    var nr = document.getElementById('nr');
    now = 0;
    function tab(){
     ++now;
     if(now>2){
      now=0;
     }
     move(aIMG[0],480-600*now,'left');
    }
    //setInterval(tab,2000);自动滚动
    aBTN[0].onclick = function(){
     --now;
     alert("当前"+now);
     if(now<0){
      now=2;
     }
     move(aIMG[0],480-600*now,'left');
    }//点击展示前一个
    aBTN[1].onclick = function(){
     
     ++now;alert("当前"+now);
     if(now>2){
      now=0;
     }
     move(aIMG[0],480-600*now,'left');
    }//点击展示后一个
   }
   <div id="nr" style="position: relative;margin: 0 auto;width: 600px;height: 400px;overflow: hidden;">
  <div class="btn">
   <img src="../img/箭头左.jpg" />
  </div> 
  <div class="btn">
   <img src="../img/箭头右.jpeg">
  </div>
  <ul style="transform:rotate(90deg);top: -800px;left: 480px;">
  <li ><img  src="../img/年.jpg"></li>
  <li ><img src="../img/银装素裹.jpg"></li>
  <li ><img  src="../img/青城山.jpg"></li>
  </ul>
  </div>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值