亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery動畫效果圖片輪播特效

2019-11-20 10:48:57
字體:
來源:轉載
供稿:網友

從這一章節開始,我將會為大家陸續的介紹利用Jquery完成特效動畫。先來看看這一節所介紹的特效:傳統輪播。

一、需求分析

1. 提供很多尺寸相等的圖片,一排緊挨著顯示。

2. 左右有兩個切換按鈕,用來控制顯示上一張還是下一張。

3. 右下方有指示器"小圈圈",用來提示顯示到第幾個圖片;也可以點擊它,進行圖片的切換。

4. 每隔一個固定的時間,圖片會自動滾動。

5. 當鼠標放到圖片上面的時候,會停止自動滾動;當鼠標離開后,再經過固定間隔時間后,又會自動播放。

二、代碼剖析

1. 用html代碼搭建框架

<body>  <div id="container">   <ul id="content">    <li><a href="#"><img src="images/0.jpg"/></a></li>    <li><a href="#"><img src="images/1.jpg"/></a></li>    <li><a href="#"><img src="images/2.jpg"/></a></li>    <li><a href="#"><img src="images/3.jpg"/></a></li>    <li><a href="#"><img src="images/4.jpg"/></a></li>   </ul>   <div id="btn">    <div id="leftBtn"></div>    <div id="rightBtn"></div>   </div>   <ul id="indicator">    <li class="current"></li>    <li></li>    <li></li>    <li></li>    <li></li>   </ul>  </div> </body> 

1> id為container的div,是整個輪播效果的容器。
2> id為content的ul,里面存放的內容就是界面上面顯示的滾動的圖片。

3> id為btn的div,里面的兩個子元素就是用來切換上一張還是下一張的按鈕。

4> id為indicator的ul,用來顯示指示器。

2. CSS代碼改變顯示樣式

1> 下面兩句代碼,清除掉瀏覽器默認的間隙。

*{margin: 0; padding: 0;} 

2> 設置父容器的樣式。

#container {  width:560px;  height: 300px;  margin: 100px auto;  position: relative;  overflow: hidden; } 

由于顯示的圖片大小就是 560 X 300, 所以這里的父容器的大小也設置這么大,這里設置的margin,就是讓父容器水平居中,垂直距離頂部100px,overflow表示如果顯示的子元素超出了container的范圍,就隱藏掉(注:由于顯示的圖片是一排顯示的,如果不加上overflow: hidden這個屬性的話,就露餡了,去掉這個屬性的話,效果如下:)。

也就是說,如果不加上overflow: hidden 這個屬性的話,所有的圖片就會一排全部顯示出來了。

最后一個就是定位屬性 position: relative; 由于container是父容器,所以應該設置為relative,而它的所有的子元素要進行絕對定位的話,他們的position應該設置為absolute。這就是所謂的 "子絕父相" 原則。在絕對定位中都這么使用。

3> 設置content的樣式

#container #content {  list-style: none;  width: 10000px;  position: absolute;  left:0;  top:0; }  #container #content li {  float:left; }  #container #content li img {  border: 0; } 

注意到,content的width屬性設置為了10000px,這是為了保證它能夠存放足夠多的圖片。默認情況下,content中所有的li是塊級元素,也就是他們會上下排列;所以加了一句float:left;讓他們左右排列。而父級元素container設置了overflow: hidden, 所以這些左右排列的圖片只能看到第一個。
4> 設置左右切換按鈕的樣式

#container #leftBtn {  position: absolute;  width:45px;  height: 45px;  top:108px;  left: 20px;  background: url(images/icons.png) no-repeat 0 0;  cursor: pointer; }  #container #rightBtn {  position: absolute;  width:45px;  height: 45px;  top:108px;  right: 20px;  background: url(images/icons.png) no-repeat 0 -45px;  cursor: pointer; } 

注意到,在獲取左右按鈕的時候,他們是取自同一張圖片icons.png。只是圖片截取的位置不一致,這就是所謂的"精靈"。就是為了減小圖片占用大小,而把很多的小icon放置在一張圖片上面,然后通過定位截取的辦法,獲取想要的部分。(注:關于怎樣定位icon? 1. 寫代碼慢慢調節;2. 用精靈裁切定位軟件,如:CSS Sprites等)。圖片設計大致如下:

這張圖片中,不僅包含了左右切換按鈕,指示器的按鈕也一并給出了,所以在書寫指示器按鈕的css代碼時候,同樣也可以使用這張圖片。

4> 設置指示器的樣式

#container #indicator {  position: absolute;  right: 50px;  list-style: none;  bottom: 12px; }  #container #indicator li {  float: left;  cursor: pointer;  margin-left: 20px;  width:14px;  height: 14px;  background: url(images/icons.png) no-repeat -23px -127px; }  #container #indicator li.current {  background-position: -9px -125px; } 

代碼中 #indicator li 設置的background的圖片就是上圖中空心的小圓圈,而 #indicator li.current 設置的background的圖片就是上圖中實心的大圓圈。所以剛開始的時候,默認選中第一個。
3. 用JQuery添加交互效果

1> 切換下一張(點擊右邊按鈕)

$(function(){   // 總的圖片個數(用代碼獲取個數,擴展性比較強)  var totalCount = $("#container #content li").length;  // 當前處于第幾個圖片  var nowImage = 0;  $("#container #btn #rightBtn").click(rightBtnClick); <span style="white-space:pre"> </span>function rightBtnClick(){   if(!$("#container #content").is(":animated")){    if(nowImage == totalCount - 1){    <span style="white-space:pre"> </span>nowImage = 0; <span style="white-space:pre">    </span>$("#container #indicator li").eq(nowImage).addClass("current").siblings().removeClass("current"); <span style="white-space:pre">    </span>$("#container #content").animate({"left": -560 * (totalCount -1 )}, 1000, function(){     $("#container #content").css("left",0);    });   } else {    nowImage++;    changeImage();   }  } } }); 

changeImage 函數

function changeImage(){  if(!$("#container #content").is(":animated")){  <span style="white-space:pre"> </span>$("#container #content").animate({"left": -560 * nowImage}, 1000);   $("#container #indicator li").eq(nowImage).addClass("current").siblings().removeClass("current");  } } 

代碼中,當DOM元素加載完畢,就執行了$('#container #btn #rightBtn').click(rightClick), 也就是立刻執行了切換圖片操作。在rightBtnClick函數中,先進行了content是否正在進行動畫的判斷,這樣做的目的:防止動畫在執行的過程,用戶又進行強制的執行其他動畫,會產生干擾,最終導致動畫效果混亂。

如果有的話,則將標志變量nowImage指向下一個圖片,并且執行changeImage函數中的代碼:1. 將content中的所有圖片左移一個圖片大小的寬度;2.將指示器的圖片也移動到對應的位置。

如果沒有的話,并且圖片現在是顯示到了最后一個,則先執行動畫,執行完畢后,立刻將content中所有的圖片內容拉回到第一個,但是這里任然會穿幫,因為當前圖片顯示為最后一個后,你繼續執行動畫,是沒有任何效果的,所以在這個動畫執行期間是沒有任何反應的,當動畫時間執行完畢后,會突然在界面上出現第一個圖片。

設計思想:為了解決這個問題,解決方案就是在這些圖片之后追加一個與第一張相同的圖片;這就是傳統輪播的主要設計思想。所以當圖片滾動到倒數第二章的時候;首先執行滾動動畫,也就是滾動到預先準備的與第一張一模一樣的圖片,看起來似乎是滾動到了第一張,其實不然。在動畫執行完畢后,立刻將content中所有的圖片拉回到第一張。流程圖如下:

所以此刻修改一點代碼,在代碼的開頭追加第一張圖片

/*克隆輪播的第一個li追加到最后*/ $("#container #content li").first().clone().appendTo($("#container #content")); 

在rightBtnClick代碼中,將nowImage == totalCount - 1 修改為 nowImage == totalCount - 2。
2> 切換上一張(點擊左邊按鈕)

代碼與點擊右邊按鈕類似

$("#container #btn #leftBtn").click(function(){  if(!$("#container #content").is(":animated")){   if(nowImage == 0){    nowImage = totalCount - 2;    $("#container #content").css("left",-560 * (totalCount - 1));     $("#container #indicator li").eq(nowImage).addClass("current").siblings().removeClass("current");     $("#container #content").animate({"left": -560 * nowImage}, 1000);   } else {    nowImage--;    changeImage();   }  } }); 

3> 點擊指示器按鈕進行圖片切換
它的設計思路,就是獲取圖片的索引,然后調用changeImage函數就可以了。

$("#container #indicator li").click(function(){  nowImage = $(this).index();  changeImage(); }); 

4> 添加定時執行動畫的功能
也就是定時的調用點擊右邊按鈕的代碼;添加如下代碼:

var timer = setInterval(rightBtnClick, 2000); 

5> 鼠標懸停在圖片上,停止滾動;鼠標離開圖片后,繼續滾動
也就是對定時器進行開啟和關閉;添加如下代碼:

$("#container").mouseenter(function(){  clearInterval(timer); }).mouseleave(function(){  timer = setInterval(rightBtnClick, 2000); }); 

精彩專題分享:jQuery圖片輪播 JavaScript圖片輪播 Bootstrap圖片輪播

至此,一個傳統輪播的效果就實現了,希望大家可以學以致用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品www在线观看| 欧美一乱一性一交一视频| 久热在线中文字幕色999舞| 亚洲人av在线影院| 色综合视频网站| 尤物九九久久国产精品的特点| 97超级碰碰人国产在线观看| 精品夜色国产国偷在线| 欧美成人性生活| 黑人巨大精品欧美一区免费视频| 久热精品在线视频| 欧美理论电影在线播放| 91视频88av| 国内精久久久久久久久久人| 亚洲视频欧美视频| 国产精品视频免费观看www| 国产一区二区丝袜高跟鞋图片| 国产亚洲精品va在线观看| 亚洲自拍偷拍网址| 久久久www成人免费精品| 久久精品视频亚洲| 亚洲一区二区三区乱码aⅴ| 亚洲精品电影网在线观看| 日韩成人中文电影| 亚洲在线第一页| 亚洲成人久久久久| 国产欧美精品日韩精品| 日韩美女av在线| 精品久久久久久久久国产字幕| 亚洲老板91色精品久久| 97在线视频观看| 91香蕉嫩草神马影院在线观看| 成人福利网站在线观看11| 欧美二区在线播放| 中文字幕日韩视频| 成人av资源在线播放| 国产精品久久久久久久久男| 亚洲第一在线视频| 久久国产精品首页| 国产一区二中文字幕在线看| 少妇高潮久久久久久潘金莲| 国产日韩精品在线播放| 日韩电影在线观看永久视频免费网站| 亚洲性夜色噜噜噜7777| 国模精品视频一区二区三区| 国产亚洲成精品久久| 欧美老女人bb| 国产99久久精品一区二区永久免费| 在线视频日本亚洲性| 久久视频在线免费观看| 亚洲综合在线做性| 精品欧美一区二区三区| 一区二区三区动漫| 2019av中文字幕| 日韩欧美999| 欧美中在线观看| 成人国产精品色哟哟| 成人h片在线播放免费网站| 亚洲资源在线看| 久久久亚洲欧洲日产国码aⅴ| 91欧美日韩一区| 精品国产精品自拍| 久久久久久久久久久免费精品| 欧美激情一二区| 国产亚洲精品久久久优势| 国产成人av网| 欧美午夜无遮挡| 日韩欧美一区视频| 亚洲国产成人精品久久| 亚洲aⅴ日韩av电影在线观看| 一级做a爰片久久毛片美女图片| 国产精品专区h在线观看| 久久免费高清视频| 欧美视频在线免费| 日韩成人在线网站| 亚洲精品综合精品自拍| 欧美丝袜美女中出在线| 成人福利网站在线观看| 日本19禁啪啪免费观看www| 97av在线影院| 日韩国产精品亚洲а∨天堂免| 韩曰欧美视频免费观看| 久久综合久久88| 国产丝袜精品第一页| 国产精品久久久久久久av电影| 亚洲精品第一国产综合精品| 中文字幕日韩专区| 欧洲一区二区视频| 亚洲影视九九影院在线观看| 久久影视电视剧凤归四时歌| 成人a在线视频| 精品亚洲aⅴ在线观看| 国产精品男女猛烈高潮激情| 欧美精品videossex性护士| 136fldh精品导航福利| 青青久久av北条麻妃黑人| 日韩成人在线视频观看| 成人有码在线播放| 国产在线精品成人一区二区三区| 亚洲日韩欧美视频| 另类美女黄大片| 91精品国产综合久久香蕉| 亚洲精品自拍偷拍| www国产精品视频| 中文字幕在线日韩| 欧美性猛交xxxxx免费看| 国产一区二区三区欧美| 国产精品免费一区| 国产日韩欧美在线视频观看| 亚洲午夜女主播在线直播| 欧美性受xxxx白人性爽| 久久久免费电影| 亚洲第一精品福利| 欧美激情在线有限公司| 成人97在线观看视频| 欧美自拍视频在线观看| 欧美激情中文网| 久久久久久中文字幕| 亚洲精品国偷自产在线99热| 久久影视电视剧凤归四时歌| 日韩视频欧美视频| 色综合久久天天综线观看| 亚洲午夜国产成人av电影男同| 亚洲美女视频网| 亚洲美女又黄又爽在线观看| 国产精品自产拍在线观| 亚洲人成网7777777国产| 日产日韩在线亚洲欧美| 91国内免费在线视频| 欧美极品少妇xxxxⅹ裸体艺术| 欧美性猛交xxxx免费看漫画| www.久久草.com| 欧美老女人性视频| 日本韩国在线不卡| 精品在线小视频| 91精品国产综合久久香蕉922| 亚洲免费视频在线观看| 在线观看国产成人av片| 亚洲欧美视频在线| 国产美女搞久久| 国产久一一精品| 人人爽久久涩噜噜噜网站| 欧美精品日韩www.p站| 亚洲一区中文字幕| 成人免费福利在线| 福利一区视频在线观看| 国产精品久久久久久久久久久不卡| 欧美色播在线播放| 日韩视频精品在线| 国产精品国产三级国产aⅴ9色| 成人在线观看视频网站| 欧美最猛性xxxxx免费| 91色视频在线导航| 亚洲美女av在线播放| 欧美国产极速在线| 中文字幕亚洲欧美在线| 日韩中文在线中文网三级| 一本一本久久a久久精品综合小说| 热99精品只有里视频精品| 日韩电影免费在线观看中文字幕| 亚洲精品自拍第一页| 热久久这里只有| 国产成人涩涩涩视频在线观看| 国产精品中文在线|