成品直播原始碼,輪播圖無縫切換以及自動懸停
成品直播原始碼,輪播圖無縫切換以及自動懸停
一、輪播圖需要實現左右無縫切換
輪播圖的動態切換
利用右外邊距或左外邊距的加減來操作整個放有圖片div的移動,同時利用setTimeout()函式和計時器實現自動切換,從而達到圖片無縫切換的效果
//得到圖片的集合 var imgs = document.getElementById('img_list').getElementsByTagName('li'); //得到小圓點的集合 var icons = document.getElementById('icon_list').getElementsByTagName('li'); //初始左外邊距預設為0px var Left = 0; //定義計時器 var timer; run(); function run() { //圖片切換到最後時,重新歸零。 if (Left <= -5120) { img_list.style.marginLeft = "0px"; Left = 0; } //用n表示圖片切換和停留的時間,如果剛好顯示,停2000,否則以10的速度切換(Left持續-10,直到再次剛好顯示圖片) var n = (Left % 1280 == 0 ? 2000 : 10); changeimg(); m = Math.floor(-Left / 1280);//切換小圓點樣式的方法,此處暫且不提 changeicon(m);//切換小圓點樣式的方法,此處暫且不提 Left -= 10; //重複執行run方法。實現一直輪播。 timer = setTimeout(run, n); } function changeimg() { //切換圖片的方法、 img_list.style.marginLeft = Left + "px"; }
二、需要實現跳轉(放在圓點顯示對應圖片)
為小圓點新增監聽事件,當滑鼠放在圓點上時,呼叫clearTimeout()方法停止輪播,調整計時器引數到固定值,使左右邊距加減的滑動效果轉為直接跳轉到對應圖片的效果,並在滑鼠移出時重新啟動輪播setTimeout()
// 變數作用域兩種:全域性變數、區域性變數。js中函式內部可以讀取全域性變數,函式外部不能讀取函式內部的區域性變數。 // js鏈式作用域:子物件會一級一級向上尋找所有父物件的變數,反之不行。 // f2可以讀取f1中的變數,只要把f2作為返回值,就可以在f1外讀取f1內部變數 for (var i = 0; i < imgs.length; i++) { //根據第幾個圖示片來判斷停止。正常來說,外部i訪問不到下面函式的值,用了閉包後就能夠讀取了 //閉包作用 // 1、讀取函式內部的變數 // 2、讓這些變數的值始終保持在記憶體中。不會再f1呼叫後被自動清除。 // 3、方便呼叫上下文的區域性變數。利於程式碼封裝。 // 原因:f1是f2的父函式,f2被賦給了一個全域性變數,f2始終存在記憶體中,f2的存在依賴f1,因此f1也始終存在記憶體中,不會在呼叫結束後,被垃圾回收機制回收。 // 所以此處的i的值實際上為內部函式的i的值 //閉包()(i) (function(i) { imgs[i].onmousemove = function() { clearTimeout(timer);//停止輪播 Left = -i * 1280;//使距離為完全顯示圖片的距離(以防在切換時放上去卡兩張圖片中間) changeimg();//使用更改的Left去切換圖片 changeicon(i);//切換對應圖示 } imgs[i].onmouseout = function() { run(); } })(i); }
三、當前圖片的小圓點樣式需要突出
在圖片遍歷時為調整小圓點樣式的function()傳進去一個引數,通過Math.floor()函式計算出當前圖片是第幾張,從而為對應的圓點更改CSS樣式。
function run() { //圖片切換到最後時,重新歸零。 if (Left <= -5120) { img_list.style.marginLeft = "0px"; Left = 0; } //用n表示圖片切換和停留的時間,如果剛好顯示,停2000,否則以10的速度切換(Left持續-10,直到再次剛好顯示圖片) var n = (Left % 1280 == 0 ? 2000 : 10); changeimg(); m = Math.floor(-Left / 1280);//通過計算得出最接近的整數(1、2、3、4) changeicon(m);//切換對應的小圓點的樣式 Left -= 10; //重複執行run方法。實現一直輪播。 timer = setTimeout(run, n); } function changeicon(m) { //切換圖示變色的方法 for (var i = 0; i < icons.length; i++) { //先全部取消顏色 icons[i].style.backgroundColor = ""; } //再根據m的值判斷第幾個圖示變紅。 icons[m].style.backgroundColor = "red"; }
四、在切換圖片時滑鼠放在圖片上,取消輪播效果,切換到對應圖片。
為圖片新增監聽事件,當滑鼠放在圖片上時,呼叫clearTimeout()的函式停止輪播。通過遍歷得到當前圖片的引數後,計算出合適的邊距,調整函式引數,從而切換到對應圖片。
for (var i = 0; i < imgs.length; i++) { (function(i) { imgs[i].onmousemove = function() { clearTimeout(timer);//停止輪播 Left = -i * 1280;//使距離為完全顯示圖片的距離(以防在切換時放上去卡兩張圖片中間) changeimg();//使用更改的Left去切換圖片 } })(i); } function changeimg() { //切換圖片的方法、 img_list.style.marginLeft = Left + "px"; }
以上就是成品直播原始碼,輪播圖無縫切換以及自動懸停, 更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2905348/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- react無縫滾動輪播圖React
- 成品直播原始碼,點選滑動切換效果原始碼
- 無縫輪播
- JQuery實現圖片輪播無縫滾動jQuery
- 2020 用html jQuery實現廣告輪播圖自動切換 滾動頁面 滑鼠懸浮下標且左右切換圖片HTMLjQuery
- 無縫輪播圖的一種方式原理
- 直播軟體原始碼,Android---Banner輪播圖原始碼Android
- 直播app原始碼,HTML + jQuery 實現輪播圖APP原始碼HTMLjQuery
- 直播平臺原始碼,純JS實現左右滑動輪播圖原始碼JS
- 直播系統原始碼,點選滾動的輪播圖自動跳轉到相應頁原始碼
- 邏輯難理解版本的輪播圖(實現無縫滾動)
- 手機直播原始碼,android 輪播圖自定製元件原始碼Android元件
- 小說APP原始碼,手動滑動輪播圖時,輪播圖跟隨移動APP原始碼
- 有間隙卡片縮放/無縫CollectionViewBanner無限輪播圖View
- 直播電商原始碼,android設定輪播圖轉場動畫特效原始碼Android動畫特效
- 直播軟體搭建,橫版自動滑動的輪播圖
- 一對一直播系統原始碼,軟體首頁輪播圖輪播效果原始碼
- vue swiper 元件切換tab後自動輪播失效,手動滑一下才自動輪播生效的問題Vue元件
- 雙輪播加切換動畫效果元件動畫元件
- 直播系統原始碼,vue實現無縫滾動原始碼Vue
- 鵝廠優文|主播pk,如何實現無縫切換?
- better-scroll 實現無縫輪播
- 直播平臺製作,ViewPager自動輪播,手指按住停止輪播Viewpager
- js、jQuery實現文字上下無縫輪播、滾動效果JSjQuery
- 直播平臺搭建原始碼,bootstrap實現圖片輪播效果原始碼boot
- app直播原始碼,Banner廣告圖片輪播控制元件APP原始碼控制元件
- 用原生JS實現 圖片輪播切換 功能JS
- 教育直播APP原生開發,成品原始碼無加密APP原始碼加密
- 直播平臺搭建原始碼,XBanner設定只顯示輪播圖原始碼
- 原生JS實現一個無縫輪播圖外掛(支援vue)JSVue
- 直播軟體app開發,左右自動滑動的輪播圖廣告APP
- 如何快速實現一個無縫輪播效果
- 直播app原始碼,使用vue-awesome-swiper建立輪播圖幻燈片APP原始碼Vue
- 成品直播原始碼,例項原始碼系列-更改圖片透明度原始碼
- 解決ionic2/ionic3輪播圖切換頁面或者點選過後不自動輪圖
- 成品直播原始碼,禁止狀態列受到下滑的影響自動下拉原始碼
- 線上直播系統原始碼,滑鼠懸停後彈出氣泡原始碼
- 成品直播原始碼推薦,uniapp多行滾動通知原始碼APP