jQuery實現3D圖片輪播詳解
本章節分享一段程式碼例項,它實現了3D效果的圖片輪播。
下面就詳細介紹一下它的實現過程,需要的朋友可以做一下參考。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .wrap { width: 1200px; height: 460px; overflow: hidden; position: relative; margin: 0 auto; } .wrap li { transition: all ease 0.6s; -webkit-transition: all ease 0.6s; -moz-transition: all ease 0.6s; -o-transition: all ease 0.6s; position: absolute; left: 50%; list-style: none; -webkit-filter: brightness(0.5); } .wrap li img { width: 100%; } .wrap li.current { top: 0; -webkit-filter: brightness(1.0); margin-left: -390px; z-index: 5; } .wrap li.next,.wrap li.pre { width: 640px; top: 25px; z-index: 3; } .wrap li.next-r,.wrap li.pre-l { width: 560px; top: 48px; z-index: 1; } .wrap li.next { margin-left: -260px; } .wrap li.next-r { margin-left: -135px; } .wrap li.pre { margin-left: -435px; } .wrap li.pre-l { margin-left: -480px; } .wrap a { width: 35px; height: 35px; top: 50%; margin-top: -16px; display: block; position: absolute; background: url(demo/jQuery/img/graduation_dir.png) no-repeat; } .wrap a.pre-btn { left: 0; background-position: 0 0; } .wrap a.next-btn { right: 0; background-position: 0 -33px; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript"> $(function () { $('.btn').click(function () { var btnIndex = $(this).index(), picElement = $('.wrap ul li'), picNum = picElement.length, lastPic = picElement.eq(picNum - 1).attr('class'), firstPic = picElement.eq(0).attr('class'), temp; if (btnIndex == 0) { //下一張 for (var index = picNum; index >= 0; index--) { temp = picElement.eq(index - 1).attr('class'); if (index == 0) { picElement.eq(index).attr('class', lastPic); } else { picElement.eq(index).attr('class', temp); } } } else { //上一張 for (var j = 0; j < picNum; j++) { temp = picElement.eq(j + 1).attr('class'); if (j == picNum - 1) { picElement.eq(j).attr('class', firstPic); } else { picElement.eq(j).attr('class', temp); } } } }) }) </script> </head> <body> <div class="wrap"> <a href="javascript:;" class="btn next-btn"></a> <a href="javascript:;" class="btn pre-btn"></a> <ul style="position:relative"> <li class="current"><img src="demo/jQuery/img/img1.jpg"/></li> <li class="next"><img src="demo/jQuery/img/img2.jpg"/></li> <li class="next-r"><img src="demo/jQuery/img/img3.jpg"/></li> <li class="pre-l"><img src="demo/jQuery/img/img5.jpg"/></li> <li class="pre"><img src="demo/jQuery/img/img4.jpg"/></li> </ul> </div> </body> </html>
上面的程式碼實現了3D輪播效果,下面介紹一下它的實現過程。
一.程式碼註釋:
[CSS] 純文字檢視 複製程式碼.wrap li { transition: all ease 0.6s; -webkit-transition: all ease 0.6s; -moz-transition: all ease 0.6s; -o-transition: all ease 0.6s; position: absolute; left: 50%; list-style: none; -webkit-filter: brightness(0.5); }
設定動畫的過渡效果。
li元素都是絕對定位,並且left屬性值為50%,然後再挨個設定5個li上下前後左右的順序。
[HTML] 純文字檢視 複製程式碼<ul style="position:relative"> <li class="current"><img src="img/img1.jpg"/></li> <li class="next"><img src="img/img2.jpg"/></li> <li class="next-r"><img src="img/img3.jpg"/></li> <li class="pre-l"><img src="img/img5.jpg"/></li> <li class="pre"><img src="img/img4.jpg"/></li> </ul>
上面設定圖片的順序也很講究的。
可以認為ul中li元素是環形的,假設current是當前元素,那麼以此向下類推到pre形成一個環形閉合。
[CSS] 純文字檢視 複製程式碼.wrap a { width: 35px; height: 35px; top: 50%; margin-top: -16px; display: block; position: absolute; background: url(img/graduation_dir.png) no-repeat; } .wrap a.pre-btn { left: 0; background-position: 0 0; } .wrap a.next-btn { right: 0; background-position: 0 -33px; }
這是設定左右兩個箭頭,原理可以參閱CSS background-position定位詳解一章節。
$(function () {}),當文件結構完全載入完畢再去執行函式中的程式碼。
$('.btn').click(function () {}),為按鈕註冊click事件處理函式。
var btnIndex = $(this).index(),獲取按鈕的索引值。
picElement = $('.wrap ul li'),獲取li元素列表集合物件。
picNum = picElement.length,獲取li元素的數目。
lastPic = picElement.eq(picNum - 1).attr('class'),獲取最後一個li元素class屬性值。
firstPic = picElement.eq(0).attr('class'),獲取第一個li元素的class屬性值。
temp,這是一個儲存臨時值的變數,後面會用到。
if (btnIndex == 0) {},如果是點選的右側按鈕。
for (var index= picNum; index >= 0; index--) {
temp = picElement.eq(index- 1).attr('class');
if (index== 0) {
picElement.eq(i).attr('class', lastPic);
} else {
picElement.eq(i).attr('class', temp);
}
}
當點選下一張的時候,就會將依次將小索引元素的class屬性值替換到大索引元素的class屬性值。
因為元素的位置是通過class控制的,這樣實現了旋轉一下的效果。
上面if判斷語句的作用是,因為如果當前索引為0的元素它沒有索引為-1的前一個元素。
二.相關閱讀:
(1).index()方法可以參閱jQuery index()方法一章節。
(2).eq()方法可以參閱jQuery eq()方法一章節。
(3).attr()方法可以參閱jQuery attr()方法一章節。
相關文章
- (轉)jquery實現圖片輪播jQuery
- JQuery實現圖片輪播無縫滾動jQuery
- jQuery Mobile圖片輪轉輪播jQuery
- 圖片輪播元件實現元件
- java學習---前端---使用JavaScript和jQuery實現圖片輪播圖前端JavaScriptjQuery
- jQuery實現輪播效果jQuery
- jQuery輪播圖之上下輪播jQuery
- 藉助 :has 實現3d輪播圖3D
- javascript實現的焦點圖輪播效果詳解JavaScript
- Vue封裝Swiper實現圖片輪播Vue封裝
- 用原生js實現圖片輪播器JS
- 高效圖片輪播,兩個ImageView實現View
- 使用jQuery實現的平滑滾動輪播圖jQuery
- 直播app原始碼,HTML + jQuery 實現輪播圖APP原始碼HTMLjQuery
- 微信小程式實現類3D輪播圖微信小程式3D
- ViewPage實現輪播圖View
- Banner實現輪播圖
- js實現輪播圖JS
- 實現簡單的輪播圖(單張圖片、多張圖片)
- 用原生JS實現 圖片輪播切換 功能JS
- 圖片輪播--純cssCSS
- 原生js實現輪播圖JS
- JS實現輪播圖效果(有詳細註釋)JS
- 原生JS實現輪播圖--第一章圖片展示JS
- 文字輪播與圖片輪播?CSS 不在話下CSS
- JavaScript焦點圖輪播效果詳解JavaScript
- 【jquery前端開發】可調整的幻燈片(圖片輪播)薦jQuery前端
- iOS無限輪播圖片iOS
- ViewFlipper探索與使用——順便實現Android圖片輪播ViewAndroid
- 直播平臺搭建原始碼,bootstrap實現圖片輪播效果原始碼boot
- 一個基於Vue的圖片輪播元件的實現Vue元件
- 兩種方式實現輪播圖
- 造輪子之圖片輪播元件(swiper)元件
- 直播平臺製作,依靠C語言實現圖片輪播C語言
- iOS開發之ImageView複用實現圖片無限輪播iOSView
- Android 和 iOS 圖片輪播AndroidiOS
- vue元件之輪播圖的實現Vue元件
- [分享會]只用CSS實現輪播圖CSS