本文主要介绍分别使用CSS三、JS实现图片简单无缝轮播功效;函数
1、使用CSS3实现:利用animation属性动画
(实现一张一张的轮播,肉眼只看见一张图片)spa
HTML部分比较简单,两个div下包着几个img标签;为了实现无缝轮播,注意第一张图片要与最后一张图片相同;code
<div class="out"> <div class="imgs"> <img src="img/beatuy.jpg"/> <img src="img/child.jpg"/> <img src="img/girl.jpg"/> <img src="img/milk.jpg"/> <img src="img/cup.jpg"/> <img src="img/dog.jpg"/> <img src="img/beatuy.jpg"/> </div> </div>
最外层div设置ovflow:hidden;position: relative;既然最外层div设置了position: relative;因此内层div须要设置position: absolute;使得其运动相对父元素而言;blog
CSS代码以下:seo
1 .out{ 2 width: 200px; 3 height: 100px; 4 overflow: hidden; 5 position: relative; 6 } 7 .imgs{ 8 width: 1400px; 9 height: 100px; 10 position: absolute; 11 animation: ppt 10s linear infinite; 12 } 13 14 img{ 15 float: left; 16 width: 200px; 17 height: 100px; 18 } 19 @keyframes ppt{ 20 0%{left:0px} 21 20%{left:-250px} 22 40%{left:-500px} 23 60%{left:-750px} 24 80%{left:-1000px} 25 100%{left:-1200px} 26 }
这样图片就能够轮播了,可是鼠标放上去的时候图片仍是一直在轮播的,若是咱们想让鼠标放在图片上时,轮播中止,或者出现一些信息,咱们须要加上:hover;设置动画的状态,代码很简洁:以下事件
1 .out:hover .imgs{ 2 animation-play-state:paused 3 } 图片
这样咱们的轮播效果就出来啦;get
效果图什么的也懒得贴了;animation
2、使用JS实现:利用定时器setInterval
(多张图片轮播,肉眼能够看到多张图片)
一样HTML部分比较简单,须要设置外层DIV ovflow:hidden;之因此每一个div既有class,也有id,是由于样式我是经过class控制的,DOM是经过ID获取的
1 <div class="out" id="out"> 2 <div class="main" id='main'> 3 <div class="pic" id="pic"> 4 <img src="img/0.jpg"/> 5 <img src="img/6.jpg"/> 6 <img src="img/hehua2.2.png"/> 7 <img src="img/tupian1.png"/> 8 </div> 9 <div class="copyPic" id="copyPic"> 10 11 </div> 12 </div>
能够看到class="copyPic" 的DIV为空的,没有内容,不急,在JS部分会为他赋上内容,其内容与class="pic"的同样;固然咱们也能够直接在HTML中为其添加内容;如今为其加上一点CSS样式吧
1 .out{ 2 width: 820px; 3 overflow: hidden; 4 } 5 .main{ 6 width: 1650px; 7 height: 100px; 8 } 9 img{ 10 width: 200px; 11 height: 100px; 12 border: 0; 13 } 14 .pic,.copyPic{ 15 float: left; 16 }
这样,咱们的基本样式就完成了,下面就开始实现轮播效果吧:
首先,为了代码方便,先封装一个简单函数
1 function $(str){ 2 return document.getElementById(str) 3 }
而后为class="copyPic" 的DIV加上内容:
1 $('copyPic').innerHTML=$('pic').innerHTML;
好啦,开始写轮播函数:
1 function move(){ 2 if ($('out').scrollLeft-$('copyPic').offsetWidth>=0) { 3 $('out').scrollLeft-=$('out').offsetWidth; 4 } else{ 5 $('out').scrollLeft++; 6 } 7 }
var t=setInterval(move,10);
这样咱们的图片就能够轮播啦,一样的若是但愿鼠标放上去后轮播中止,还须要加上几句代码,使用鼠标事件,清除定时器
1 $('out').onmousemove=function(){ 2 clearInterval(t); 3 } 4 $('out').onmouseout=function(){ 5 t=setInterval(move,10); 6 }
OK,这样咱们使用JS实现图片轮播的效果也就完成了!