原生js写轮播图


作为一个javaweb工程师既要写的了后端代码也要写的了前端页面,所有轮播图这种基本的要会。

下面就介绍一下原生js写轮播图

一、这是写在jsp里的

<div class="wrap" id="wrap">  
        <ul id="pic">  
             <li><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt=""></li>  
             <li><img src="http://img.mukewang.com/54111dac000118af04900170.jpg" alt=""></li>  
             <li><img src="http://img.mukewang.com/54111d9c0001998204900170.jpg" alt=""></li>  
             <li><img src="http://img.mukewang.com/54111d8a0001f41704900170.jpg" alt=""></li>    
        </ul>  
        <ol id="list">  
            <li class="active">1</li>  
            <li>2</li>  
            <li>3</li>  
            <li>4</li>  
        </ol>  
    </div>  

二、javascrpt设置事件

这也是写在jsp里的

<script type="text/javascript">  
    window.οnlοad=function(){  
    var wrap=document.getElementById('wrap'),  
        pic=document.getElementById('pic'),  
        list=document.getElementById('list').getElementsByTagName('li'),  
        index=0,  
        timer=null;  
  
      // 定义并调用自动播放函数  
      if(timer){  
            
          clearInterval(timer);  
          timer=null;  
      }  
timer=setInterval(autoplay,2000);  
      // 定义图片切换函数  
      function autoplay(){  
          index++;  
          if(index>=list.length){  
              index=0;  
          }  
         changeoptions(index);            
      }  
       
     // 鼠标划过整个容器时停止自动播放  
wrap.οnmοuseοver=function(){       
    clearInterval(timer);  
      
}  
     // 鼠标离开整个容器时继续播放至下一张  
    wrap.οnmοuseοut=function(){      
    timer=setInterval(autoplay,2000);  
}  
     // 遍历所有数字导航实现划过切换至对应的图片  
     for(var i=0;i<list.length;i++){  
         list[i].id=i;  
         list[i].οnmοuseοver=function(){  
             clearInterval(timer);  
             changeoptions(this.id);               
             }  
         }  
        function changeoptions(curindex){  
            for(var j=0;j<list.length;j++){  
              list[j].className='';  
              pic.style.top=0;                
          }  
          list[curindex].className='active';  
          pic.style.top=-curindex*170+'px';  
          index=curindex;  
            }      
   }  
   </script>  

三、css样式

<style type="text/css">  
        /*重置样式*/  
        *{margin: 0;padding: 0; list-style: none;}  
        /*wrap的轮播图和切换按钮样式*/  
        .wrap{height: 170px;width: 500px;margin: 100px auto; overflow: hidden;position: relative;}  
        .wrap ul{position: absolute;}  
        .wrap ul li{height: 170px;}  
        .wrap ol{position: absolute;right: 10px;bottom: 10px;}  
        .wrap ol li{height: 20px;width: 20px;  background-color:#fff;border: 1px solid #eee; margin-left: 10px;float:left; line-height: 20px; text-align: center;}  
        .wrap ol li.active{background-color: #330099; color: #fff; border: 2px solid green;}  
    </style> 

css里*{margin:0;padding:0;}这一句很重要,要解释一下。

*是重置所有样式,因为ul这个元素在不同浏览器默认值不一样,重置是为了适应不同的浏览器来实现轮播图的效果,这是一定要重置的。

如果你因为别的样式影响,不能对*所有重置,就重置ul就可以了。

ul{margin:0;padding:0;}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值