純CSS3實現(xiàn)圖片無間斷輪播效果

前言:圖片輪播效果現(xiàn)在在各大網(wǎng)站都是非常普遍的,以前我們都是通過postion的left or right來控制dom的移動,這里我要說的是利用css3來制作輪播!相比以前通過postion來移動dom來說,css3的實現(xiàn)方式更為優(yōu)雅!
我相信使用過css3的童鞋們應(yīng)該都知道我們是用css哪個大哥屬性了吧!嗯,對的,就是translate3d我在前幾天還特地寫過一篇文章來介紹它,不熟悉的童鞋可以點(diǎn)擊關(guān)鍵字鏈接過去看看!知道的童鞋們,那我們繼續(xù)往下看!
效果圖如下所示:
首先,我們先說下思路
非無限循環(huán): 直接設(shè)置每次移動的位移數(shù)值,然后根據(jù)時間段執(zhí)行,比如索引從0-10,直接判斷是否到0了,最后是否到10了,然后到了0或者10的時候直接將索引設(shè)置我相反的索引數(shù)就可以了。
無限循環(huán): 無限循環(huán)的就需要考慮前后的銜接了,比如第一張圖跟最后一張圖,在執(zhí)行的最后一張圖的時候應(yīng)該會出現(xiàn)第一張圖,那么相反之下出現(xiàn)第一張圖然后往右翻的時候就應(yīng)該出現(xiàn)最后一張圖。那么這是這么做到的呢?其實很簡單,那就是clone克隆最后一個dom到第一個dom的前面,然后clone第一個dom到最后一個dom的后面,可能我這么說,大家聽起來有點(diǎn)暈。那么我們直接看看下面的代碼就知道原理了!
HTML:
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
- <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0,minimal-ui">
- <meta content="yes" name="apple-mobile-web-app-capable" />
- <meta content="black" name="apple-mobile-web-app-status-bar-style" />
- <meta content="telephone=no" name="format-detection" />
- <title>輪播DEMO | 科博網(wǎng)-鐘科的個人博客</title>
- <style>
- *{ padding:0; margin:0; border:0; }
- .wrap{ position: relative; height: 500px; width:360px; overflow:hidden; border:1px solid #ccc; margin:10px auto; }
- .wrap-list{ width:9999px; transform:translate3d(-360px,0,0); transition-delay: .3s; transition:ease; }
- .wrap-list img{ float:left; width:360px; height: 500px; }
- .btns{ text-align:center; }
- .btns button{ width:100px; height: 30px; }
- </style>
- </head>
- <body>
- <div class="wrap">
- <div class="wrap-list">
- <!--這里需要clone-->
- <img src="http://img.mrco.cn/PKUgbaXooTzIz4TZQl7heAGF.jpg">
- <img src="http://img.mrco.cn/VQeqlUbGMLcGqpy-QnDjzyZn.jpg">
- <img src="http://img.mrco.cn/E32rcqdZn0uMt9JbXr0w0K95.jpg">
- <img src="http://img.mrco.cn/uWHhrhupbMphjzsYtS7IRSD_.jpg">
- <img src="http://img.mrco.cn/k2wZVNRo0YNU7i-wuC_-84Du.jpg">
- <img src="http://img.mrco.cn/PKUgbaXooTzIz4TZQl7heAGF.jpg">
- <!--這里需要clone-->
- <img src="http://img.mrco.cn/VQeqlUbGMLcGqpy-QnDjzyZn.jpg">
- </div>
- </div>
- <div class="btns">
- <button id="btnLeft">左</button>
- <button id="btnRight">右</button>
- </div>
- <script src="http://s.mrco.cn/scripts/libs/zepto/zepto.min.js?0.0.1"></script>
- <script src="http://s.mrco.cn/scripts/libs/zepto/selector.js?0.0.1"></script>
- <script src="http://s.mrco.cn/scripts//libs/zepto/touch.js?0.0.1"></script>
- </body>
- </html>
JavaScript:
- $(function(){
- var index = 1, //默認(rèn)的當(dāng)前索引為1,因為clone了最有一個dom在第一個前面做銜接
- moveWidth = 360; //每次需要移動的像素值
- //左移動
- $('#btnLeft').on('click',function(){
- //每次+1
- index++;
- //通過索引乘以移動像素值,那么就得到了移動的步位
- $('.wrap-list').css({ transform:'translate3d(-'+ (index * moveWidth) +'px,0,0);transition-duration: 0.3s;' });
- //這里的判斷是銜接的關(guān)鍵所在,如果當(dāng)前索引已經(jīng)是最后一個dom了,也就是我們clone好的這個dom了,那就說明已經(jīng)需要開始重新開始新的一輪了
- if(index == $('.wrap-list img').size() - 1){
- //css3的動畫有一個300毫秒的執(zhí)行時間,所以我們這里也需要等待300毫秒后再進(jìn)行重置操作
- setTimeout(function () {
- //重置索引為1,相當(dāng)于重頭開始
- index = 1;
- //重置wrap盒子為默認(rèn)的其實位置開始,這里的css3的效果被去除了,所以看不出來有移動的效果,我們注意看transition-duration:0s;
- $('.wrap-list').css({transform: 'translate3d(-' + (index * moveWidth) + 'px,0,0);transition-duration: 0s;'})
- }, 300);
- }
- });
- //右移動
- $('#btnRight').on('click',function(){
- //每次減一
- index--;
- //通過索引乘以移動像素值,那么就得到了移動的步位
- $('.wrap-list').css({ transform:'translate3d(-'+ (index * moveWidth) +'px,0,0);transition-duration: 0.3s;' });
- //這里的判斷是銜接的關(guān)鍵所在,跟向右移是一個意思,等于0的時候就是到了clone的dom了,也就需要重新開始新的一輪了
- if(index === 0) {
- //css3的動畫有一個300毫秒的執(zhí)行時間,所以我們這里也需要等待300毫秒后再進(jìn)行重置操作
- setTimeout(function () {
- //這里就需要設(shè)置到除去兩個clone的dom之外的最后一個dom索引來
- index = $('.wrap-list img').size() - 2;
- //重置wrap盒子為默認(rèn)的其實位置開始,這里的css3的效果被去除了,所以看不出來有移動的效果,我們注意看transition-duration:0s;
- $('.wrap-list').css({transform: 'translate3d(-' + (index * moveWidth) + 'px,0,0);transition-duration: 0s;'})
- }, 300);
- }
- });
- });
以上所述是小編給大家介紹的純CSS3實現(xiàn)圖片無間斷輪播效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
CSS3實現(xiàn)帶視差背景漸變效果的平滑圖片輪播幻燈片特效源碼
這是一款基于CSS3實現(xiàn)帶視差背景漸變效果的平滑圖片輪播幻燈片特效源碼。畫面中心的幻燈片點(diǎn)擊左右切換按鈕、或底部的焦點(diǎn)即可實現(xiàn)畫面的切換。且圖片平滑輪播切換過程中伴2019-12-04- 今天我們學(xué)習(xí)如何使用CSS創(chuàng)建一個炫酷的圖片輪播組件。感興趣的朋友跟隨小編一起看看吧2019-05-24
html5+css3制作全屏響應(yīng)式圖片滑動輪播預(yù)覽特效源碼
html5 css3制作全屏響應(yīng)式圖片輪播布局,按鈕控制圖片水平滑動預(yù)覽查看,圖片支持鼠標(biāo)懸停文字動畫展示特效。有需要的朋友可以直接下載使用2018-08-15html5+css3實現(xiàn)的3D傾斜圖片輪播切換特效源碼
這是一款基于html5+css3實現(xiàn)的3D傾斜圖片輪播切換特效源碼。各個海報圖片可定時切換,也可點(diǎn)擊右下角的next按鈕切換顯示下一張圖片。右上角的滑塊可調(diào)整顯示圖片的傾斜角度2018-01-08- 這是一款js和CSS3的3D輪播圖特效。6種輪播圖效果,點(diǎn)擊按鈕即可實現(xiàn)3D翻轉(zhuǎn)輪播特效,歡迎下載2017-08-08
- 本篇文章主要介紹了純css3實現(xiàn)輪播圖效果實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-04
基于jquery+css3實現(xiàn)的通欄響應(yīng)式圖片輪播動畫特效源碼
基于jquery+css3實現(xiàn)的通欄響應(yīng)式圖片輪播動畫特效源碼是一段實用的產(chǎn)品展示代碼,運(yùn)行流暢,反應(yīng)速度靈敏,是一段非常優(yōu)秀的特效源碼,需要的朋友們可以前來下載使用2014-10-23- 今天給大家分享一款使用純 CSS 實現(xiàn)的圖片輪播/幻燈片,切換方式為淡入淡出效果,感興趣的朋友下載源碼吧2020-07-15