jQuery圖片無縫滾動效果
圖片滾動效果在眾多網站都要應用,尤其是企業或者商城之類的站點,可以有效的進行產品展示,也使網站呈現一種動態的感覺。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> *{ margin:0; padding:0; } ul,li{list-style:none} .main_wrap{ padding:50px; width:1000px; margin:0 auto; background:#f9f9f9; } .pic_wrap{ margin:0 auto; position:relative; overflow:hidden; padding:10px; width:580px; height:100px; border:1px solid #eee; background:#fff; } .pic_inner { position:absolute; overflow:hidden; } .pic_ul { float:left; white-space:nowrap; overflow:hidden; } .pic_ul li { float:left; margin-left:10px; width:200px; height:100px; display:inline; background-color:green; text-align:center; line-height:100px; } </style> <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(function(){ var $s_area=$('.pic_inner'); var $s_li=$('.pic_inner').find('li'); var $c_pic=$('.pic_ul').clone(); var sum_width=($s_li.width()+10)*$s_li.length; $s_area.width(sum_width*2); $('.pic_inner').append($c_pic); var i=0; var flag=setInterval(play,10); $("#scrollPic").mouseover(function(){ clearInterval(flag); }) $("#scrollPic").mouseout(function(){ flag=setInterval(play,30) }) function play(){ $s_area.css("left",i); i-=1; if(Math.abs(parseInt($s_area.css("left")))>sum_width){i=0;} } }) </script> </head> <body> <div class="main_wrap"> <div class="pic_wrap" id="scrollPic"> <div class="pic_inner"> <ul class="pic_ul clearfix"> <li class="green">one</li> <li class="grey">two</li> <li class="blue">three</li> <li class="yellow">four</li> </ul> </div> </div> </div> </body> </html>
以上程式碼實現了圖片無縫滾動效果,當然這裡為了方便演示,這裡使用了因為數字替代了圖片,下面介紹一下實現過程:
實現原理:
ul中的li元素是用來存放圖片,儘管這裡使用文字替代。這裡將ul克隆一份放在之前的ul後面,並且將ul的父元素pic_inner元素寬度設定為兩個ul所佔用的寬度(佔用寬度並不一定就是width值)之和,並且pic_inner採用的是絕對定位,並且絕對定位的參考物件是它的父元素,於是就可以通過不間斷的設定pic_inner元素的left屬性值,就可以實現圖片的滾動的效果了。之所以能夠實現無縫效果,關鍵在於對ul的克隆,這樣當第一個ul滾動的時候,第二個ul能夠很好的接續第一個的滾動,否則將會出現以下狀況:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> *{ margin:0; padding:0; } ul,li{list-style:none} .main_wrap{ padding:50px; width:1000px; margin:0 auto; background:#f9f9f9; } .pic_wrap{ margin:0 auto; position:relative; overflow:hidden; padding:10px; width:580px; height:100px; border:1px solid #eee; background:#fff; } .pic_inner { position:absolute; overflow:hidden; } .pic_ul { float:left; white-space:nowrap; overflow:hidden; } .pic_ul li { float:left; margin-left:10px; width:200px; height:100px; display:inline; background-color:green; text-align:center; line-height:100px; } </style> <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(function(){ var $s_area=$('.pic_inner'); var $s_li=$('.pic_inner').find('li'); var sum_width=($s_li.width()+10)*$s_li.length; $s_area.width(sum_width*2); var i=0; var flag=setInterval(play,10); function play(){ $s_area.css("left",i); i-=1; if(Math.abs(parseInt($s_area.css("left")))>sum_width){i=0;} } $("#scrollPic").mouseover(function(){ clearInterval(flag); }) $("#scrollPic").mouseout(function(){ flag=setInterval(play,30) }) }) </script> </head> <body> <div class="main_wrap"> <div class="pic_wrap" id="scrollPic"> <div class="pic_inner"> <ul class="pic_ul"> <li>one</li> <li>two</li> <li>three</li> <li>four</li> </ul> </div> </div> </div> </body> </html>
注意:以上編輯器並不能完成演示,請複製到本機測試。
以上程式碼刪除了克隆ul的程式碼,這樣當滾動到一定尺寸之後,後面會出現空白。
程式碼分析:
(1).$s_area=$('.pic_inner')獲取class屬性值為pic_inner'的元素。
(2).$s_li=$('.pic_inner').find('li')獲取pic_inner元素的li元素幾何。
(3).sum_width=($s_li.width()+10)*$s_li.length獲取ul元素所佔用的寬度值。
(4).$s_area.width(sum_width*2)將ul元素的父元素寬度設定為兩個ul元素所佔用寬度的兩倍。
(5).var i=0初始化一個變數,供設定left屬性值之用。
(6).var flag=setInterval(play,10)每隔10毫秒執行一次play函式,並且返回一個唯一的標識值。
(7).play()函式內部可以通過css()函式設定pic_inner元素的left屬性值,並且沒執行一次此函式,用於設定left值的i值都會減一,然後通過if語句判斷,如果向左滾動的尺寸超過ul的寬度,那麼就會重置pic_inner元素left屬性值。
(8).$("#scrollPic").mouseover()用於規定當滑鼠放在scrollPic元素的時候,滾動停止,$("#scrollPic").mouseout()規定當滑鼠離開scrollPic元素時候,滾動重新開始。
相關文章
- jQuery 圖片列表垂直間歇無縫滾動jQuery
- JQuery實現圖片輪播無縫滾動jQuery
- js、jQuery實現文字上下無縫輪播、滾動效果JSjQuery
- CSS水平無縫滾動效果CSS
- jQuery 間歇的無縫滾動jQuery
- JavaScript圖片橫向無縫滾動詳解JavaScript
- react無縫滾動輪播圖React
- js無縫滾動JS
- js-字幕無縫滾動JS
- JavaScript無縫滾動 記錄JavaScript
- HTMl 中marquee標籤實現無縫滾動跑馬燈效果HTML
- JavaScript水平無縫滾動程式碼JavaScript
- 向上無縫滾動--原理及思想
- CSS實現迴圈無縫滾動CSS
- jQuery滑動方式上下左右滾動效果jQuery
- 邏輯難理解版本的輪播圖(實現無縫滾動)
- jQuery 圖片垂直切換效果詳解jQuery
- 頁面圖片自動滾動
- 單行新聞公告間歇垂直無縫滾動
- 直播系統原始碼,vue實現無縫滾動原始碼Vue
- vue無縫滾動的外掛開發填坑分享Vue
- H5移動端獲獎無縫滾動動畫實現H5動畫
- 隱藏滾動條保留滾動效果
- 使用jQuery實現的平滑滾動輪播圖jQuery
- ant design 錨點採坑一 無滾動效果
- 怎樣用原生js配合css的transition寫個無縫滾動JSCSS
- jQuery 效果 – 動畫jQuery動畫
- jQuery 效果 – 滑動jQuery
- CSS 例項之滾動的圖片欄CSS
- 左右帶有按鈕圖片水平滾動
- jquery.gridrotator實現響應式圖片展示畫廊效果jQuery
- 如何開發一款 60fps 的“無縫滾動”外掛
- CSS例項:翻轉圖片、滾動圖片欄、開啟大門CSS
- jQuery 效果 – 停止動畫jQuery動畫
- [外掛擴充套件]幻燈片 | 滾動圖片 外掛套件
- jquery 滑鼠移到圖片彈出浮動層顯示大圖片例子jQuery
- CSS3圖片上下動畫浮動效果CSSS3動畫
- android短影片開發,圖片視差滾動Android