用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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...