用jQuery實現優酷首頁輪播圖

来源:http://www.cnblogs.com/qqandfqr/archive/2017/01/08/6262692.html
-Advertisement-
Play Games

▓▓▓▓▓▓ 大致介紹 看到了一個輪播圖的思路,就想的自己動手實踐一下,總體來說用jQuery實現起來簡單多了 如果對代碼中使用的方法有疑問,可以參考我的jQuery學習之路(持續更新),裡面有講解;或者你和我一樣學習jQuery不久,那你可以看看我的jQuery小案例(持續更新),互相學習! 預覽 ...


▓▓▓▓▓▓ 大致介紹

  看到了一個輪播圖的思路,就想的自己動手實踐一下,總體來說用jQuery實現起來簡單多了

  如果對代碼中使用的方法有疑問,可以參考我的jQuery學習之路(持續更新),裡面有講解;或者你和我一樣學習jQuery不久,那你可以看看我的jQuery小案例(持續更新),互相學習!

  預覽:優酷首頁輪播圖

 

▓▓▓▓▓▓ 思路

  思路其實非常簡單,就是當點擊圖片下麵的圓點或者圖片兩邊的箭頭時,讓想要看到的圖片走到它的位置,然後當前的圖片和想要看到的圖片按照一個方向運動就可以了

  例如:我們點擊第五個小圓點,讓第五個圖片跑到當前圖片的後面,然後一起向左運動

  

   當然了,如果你想要看前面的圖片,讓圖片先跑到當前圖片的左邊,然後和當前圖片一起向右運動

 

▓▓▓▓▓▓ 基本結構與樣式

  

 1     <div class="lunbo">
 2         <div class="picture">
 3             <ul>
 4                 <li><img src="img/1.jpg"></li>
 5                 <li><img src="img/2.jpg"></li>
 6                 <li><img src="img/3.jpg"></li>
 7                 <li><img src="img/4.jpg"></li>
 8                 <li><img src="img/5.jpg"></li>
 9             </ul>
10         </div>
11         <ul class="btn">
12             <li id="active"><div></div></li>
13             <li><div></div></li>
14             <li><div></div></li>
15             <li><div></div></li>
16             <li><div></div></li>
17         </ul>
18         <div id="left"><img src="img/left.png"></div>
19         <div id="right"><img src="img/right.png"></div>
20     </div>
View Code
 1 *{
 2     margin: 0;
 3     padding: 0;
 4 }
 5 .lunbo{
 6     width: 100%;
 7     height: 410px;
 8     position: relative;
 9     text-align: center;
10 
11 }
12 .picture{
13     width: 1190px;
14     height: 480px;
15     position: absolute;
16     top: 0;
17     left: 88px;
18     overflow: hidden;
19 }
20 .picture li{
21     width: 1190px;
22     height: 410px;
23     margin: 0 auto;
24     list-style-type: none;
25     margin-top: 70px;
26     position: absolute;
27     overflow: hidden;
28     top: ;
29     left: ;
30 
31 }
32 .picture  img{
33     cursor: pointer;
34 }
35 .btn{
36     display: block;
37     width: 150px;
38     height: 30px;
39     position: absolute;
40     top: 460px;
41     left: 130px;
42 }
43 
44 .btn li{
45     display: block;
46     width: 10px;
47     height: 10px;
48     background-color:white;
49     list-style-type: none;
50     position: absolute;
51     top: 0px;
52     left: 0px;
53     border-radius: 10px;
54     cursor: pointer;
55 }
56 #active{
57     background-color: #03A9F4;
58 }
59 .btn li:hover{
60     background-color:#9e9e9e;
61 }
62 
63 #left{
64     position: absolute;
65     top: 240px;
66     left: 90px;
67     cursor: pointer;
68 }
69 #right{
70     position: absolute;
71     top: 240px;
72     left: 1220px;
73     cursor: pointer;
74 }
View Code

 

  然後我們用jQuery來設置初始圖片的位置和小圓點的位置

 1     function setCirPos(){
 2         // 設置圓點的位置
 3         $cir.each(function(){
 4             $(this).css({
 5                 left:$(this).index()*25 + 500
 6             })
 7         });
 8         // 設置剛開始不顯示的圖片的位置
 9         $pic.slice(1).each(function(){
10             $(this).css({
11                 left:$picW
12             })
13         })
14     }
View Code

 

▓▓▓▓▓▓ 自動輪播

  先來看看定義的全局變數

 1     var $cir = $('.btn li');
 2     var $pic = $('.picture li');
 3     var $picW = $pic.width();
 4     var $oLeft = $('#left');
 5     var $oRight = $('#right');
 6 
 7     // 當前圖片
 8     var nowPic = 0;
 9     // 防止用戶連續的點擊
10     var canClick = true;
11     // 定時器
12     var timer = null;
View Code

  

  設置nowPic是為了記錄當前顯示的圖片,因為這個輪播圖一共有三種觸發圖片切換的方法,所以這個變數是三個方法要共用的

  設置canClick變數是為了防止用戶在圖片切換動畫效果還未完成的時候在進行點擊

 

 1     // 設置定時器自動切換
 2     timer = setInterval(function(){
 3         auto();
 4     },2000);
 5 
 6     //自動切換 
 7     function auto(){
 8         var index = nowPic + 1;
 9         if(index < 0){
10             index = 4;
11         }else if(index > 4){
12             index = 0;
13         }
14         $pic.eq(index).css('left',$picW);
15         $pic.eq(nowPic).animate({left:-$picW}, 400);
16         $pic.eq(index).animate({left:0}, 400);
17 
18         nowPic = index;
19         // 設置當前圖片的圓點的樣式
20         $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
21     }
View Code

 

▓▓▓▓▓▓ 點擊小圓點

  圖片切換的方法都是一樣的但是要註意,當點擊小圓點時要清楚圖片自動切換的定時器,在圖片切換完成後,在設置自動切換的定時器

 1     function lunbo(){
 2         $cir.click(function(){
 3             clearInterval(timer);
 4             var index = $(this).index();
 5 
 6             if(index > nowPic){
 7                 // 點擊的值大於當前的值
 8                 $pic.eq(index).css('left',$picW);
 9                 $pic.eq(nowPic).animate({left:-$picW},400);
10             }else if(index < nowPic){
11                 // 點擊的值小於當前的值
12                 $pic.eq(index).css('left',-$picW);
13                 $pic.eq(nowPic).animate({left:$picW},400);
14             }
15 
16             $pic.eq(index).animate({left:0},400,function(){
17                 timer = setInterval(function(){
18                     auto();
19                 },3000);
20             });
21             nowPic = index;
22             // 設置當前圖片的圓點的樣式
23             $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
24         });
25     }
View Code

 

 

▓▓▓▓▓▓ 點擊箭頭

  當點擊箭頭時,我們為了防止用戶多次連續的點擊,所以設置了canClick這個全局變數,當點擊了箭頭時,要首先判斷是否有為完成的動畫即canClick是否為true,如果為true,就將canCilck設置為false,防止再次點擊箭頭,然後進行圖片切換的動畫,同樣不要忘了清楚定時器,最後當切換圖片的動畫完成時,animate()方法的回調函數執行,將canClick設置為true

 1     // 點擊左箭頭
 2     $oLeft.click(function(){
 3 
 4         if(canClick){
 5             clearInterval(timer);
 6             canClick = false;
 7             var index = nowPic - 1;
 8             if(index < 0){
 9                 index = 4;
10             }else if(index > 4){
11                 index = 0;
12             }
13             $pic.eq(index).css('left',-$picW);
14             $pic.eq(nowPic).animate({left:$picW}, 400);
15             $pic.eq(index).animate({left:0}, 400,function(){
16                 canClick = true;
17                 timer = setInterval(function(){
18                     auto();
19                 },3000);
20             });
21 
22             nowPic = index;
23             // 設置當前圖片的圓點的樣式
24             $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
25         }
26     })
View Code
 1     // 點擊右箭頭
 2     $oRight.click(function(){
 3 
 4         if(canClick){
 5             clearInterval(timer);
 6             canClick = false;
 7             var index = nowPic + 1;
 8             if(index < 0){
 9                 index = 4;
10             }else if(index > 4){
11                 index = 0;
12             }
13             $pic.eq(index).css('left',$picW);
14             $pic.eq(nowPic).animate({left:-$picW}, 400);
15             $pic.eq(index).animate({left:0}, 400,function(){
16                 canClick = true;
17                 timer = setInterval(function(){
18                     auto();
19                 },3000);
20             });
21 
22             nowPic = index;
23             // 設置當前圖片的圓點的樣式
24             $cir.eq(nowPic).attr('id','active').siblings().attr('id','');
25         }
26     })
View Code

 

 

▓▓▓▓▓▓ 總結

  這個效果實現起來很簡單,就是剛開始沒有想到實現的思路(笨)。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 背景與邊框第一部分 背景與邊框第二部分 形狀 視覺效果 字體排印 用戶體驗 結構與佈局 過渡與動畫 源碼下載 一、緩動效果 學習和利用貝塞爾曲線,預設支持ease,ease-in,ease-out,ease-in-out和linear等 還提供一個cubic-beizer自定義貝塞爾曲線的起點 ...
  • 歷經一年的等待後,小程式在2017年1月9日凌晨終於揭開神秘面紗,正式上線。 ...
  • 正則表達式 一、正則表達式定義 JavaScript 正則表達式 正則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)使用單個字元串來描述、匹配一系列符合某個句法規則的字元串搜索模式。 搜索模式可用於文本搜索和文本替換。 簡單的說就是一個有規則的表 ...
  • 對於數據結構“樹”,想必大家都熟悉,今兒,我們就再來回顧一下數據結構中的二叉樹與樹,並用JavaScript實現它們。 ...
  • 背景 我相信很多朋友跟我一樣,初次聽到什麼Flux, Redux, Vuex,狀態管理的時候是一臉懵逼的。因為在外面之前前端大部分開發的時候,根本沒有那麼多的概念。自從ReactJS火爆後,什麼Flux, Redux,React全家桶是一套一套接踵而來。搞的很多開發者甚是頭大。所謂的ReactJS全 ...
  • 1 掘金 新標簽預設打開,每日熱門前端內容,Github熱門star數,讓你不out 2 谷歌訪問助手 你懂的 3 react developer tools react代碼調試工具,查看state和props 4 Vue.js devtools 同上 5 WEB前端助手(FeHelper)* 百度 ...
  • 0.float與margin 兩個相鄰的浮動元素,當第一個浮動元素(不論是左浮動還是右浮動)的寬度為100%時,第二個浮動元素會被擠到下麵,通過添加負margin-right值(絕對值最少等於它自身的寬度),可以使它回到第一行。 在書寫html代碼時,我們通常的習慣根據UI樣式,從左往右來寫代碼,但 ...
  • 源於前段時候微信小程式最初火爆公測時段,把以前用 Canvas 實現的大轉盤抽獎移植成微信小程式,無奈當時小程式對 Canvas 支持不夠完善,只好降低用 CSS3 實現。雖然比不上 Canvas 繪圖的絢麗,但也總算完成了一個抽獎的 Demo,詳見: "https://github.com/giv ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...