分別用css3、JS實現圖片簡單的無縫輪播功效


本文主要介紹分別使用CSS3、JS實現圖片簡單無縫輪播功效;

一、使用CSS3實現:利用animation屬性

(實現一張一張的輪播,肉眼只看見一張圖片)

HTML部分比較簡單,兩個div下包着幾個img標簽;為了實現無縫輪播,注意第一張圖片要與最后一張圖片相同;

<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;使得其運動相對父元素而言;

CSS代碼如下:

 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 } 

這樣我們的輪播效果就出來啦;

效果圖什么的也懶得貼了;

二、使用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實現圖片輪播的效果也就完成了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM