移動端觸屏拖動頁面滾動效果
分享一段程式碼例項,它利用原生js實現了移動端觸屏拖動頁面滾動效果。
程式碼例項如下:
[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; } .containerWrap { position: absolute; top: 0; left: 0; bottom: 0; right: 0; overflow: hidden; } .container { width: 100%; -webkit-transition: all .6s ease-in-out; transition: all .6s ease-in-out; } .slideItem { width: 100%; } .slideItem1 { background: #f00; } .slideItem2 { background: #0f0; } .slideItem3 { background: #00f; } </style> </head> <body> <div class="containerWrap"> <div class="container"> <div class="slideItem slideItem1"></div> <div class="slideItem slideItem2"></div> <div class="slideItem slideItem3"></div> </div> </div> <script> var containerWrap = document.querySelector(".containerWrap"); var container = containerWrap.querySelector(".container"); var slideItem = container.querySelectorAll(".slideItem"); var slideLength = slideItem.length; var wrapHeight = containerWrap.offsetHeight; container.setAttribute("style", "height:" + wrapHeight * slideLength + "px"); for (var i = 0; i < slideLength; i++) { slideItem<i>.setAttribute("style", "height:" + wrapHeight + "px"); } var FullPage = { pageIndex: 1, isScrolling: false, nextPage: function() { if (this.pageIndex + 1 > slideLength) { return false; } else { this.pageIndex += 1; this.scrollPage(this.pageIndex); } }, prevPage: function() { if (this.pageIndex - 1 <= 0) { return false; } else { this.pageIndex -= 1; this.scrollPage(this.pageIndex); } }, scrollPage: function(index) { // isScrolling 動畫進行時鎖定 FullPage.isScrolling = true; var rollingDistance = -(index - 1) * wrapHeight + "px"; container.setAttribute("style", "transform: translateY(" + rollingDistance + ")"); container.addEventListener("transitionend", function() { // 動畫結束後釋放鎖定 FullPage.isScrolling = false; }, false); }, touchEvent: function(ele) { ele.addEventListener("touchstart", function(e) { var touch = e.touches[0]; FullPage.touchStartY = touch.pageY; }); ele.addEventListener("touchend", function(e) { if (FullPage.isScrolling) return; var touch = e.changedTouches[0]; FullPage.touchEndY = touch.pageY; var diffY = FullPage.touchEndY - FullPage.touchStartY; if (Math.abs(diffY) > 50) { if (diffY > 0) { FullPage.prevPage(); } else if (diffY < 0) { FullPage.nextPage(); } } }); }, init: function() { this.touchEvent(container); } }; document.addEventListener("DOMContentLoaded", function() { FullPage.init(); }); </script> </body> </html></i>
相關文章
- 移動端頁面滾動--解決方法
- js頁面全屏垂直滾動效果JS
- 移動端div塊拖動效果程式碼例項
- 滑鼠雙擊頁面實現自動滾動效果
- 移動端活動頁面搭建
- 拖動滾動條實現內容自動載入效果
- 移動端模擬滾動
- 頁面圖片自動滾動
- 移動端div跟隨滾動條滾動(自制
- 「移動端」Web頁面適配Web
- H5頁面滾動阻尼效果實現H5
- 拖動滾動條實現側欄導航定位效果
- 解決移動端滾動穿透穿透
- 42個移動端啟動頁面優化技巧優化
- 雙十一移動端頁面總結
- 利用whistle除錯移動端頁面除錯
- 移動端適配頁面快速搭建
- 淺談移動端開發頁面
- 移動端滾動穿透解決方案穿透
- 移動端判斷觸屏位置程式碼例項
- Web移動端頁面 –響應式和動態REMWebREM
- 42個移動端啟動頁面優化 Tips優化
- 遮罩層禁止頁面滾動遮罩
- 禁止頁面滾動的方法
- 頁面滾動偵聽器
- 拖動滾動條實現div跟隨效果程式碼例項
- 側欄懸浮導航選單拖動滾動條可以自動定位效果
- 移動端點透事件--阻止滾動事件事件
- 移動端頁面寬度相容處理
- 移動端頁面功能之——長按事件事件
- 直播平臺製作,禁止頁面滾動 / 滾動事件穿透事件穿透
- vue 監聽頁面滾動事件Vue事件
- Flutter SingleChildScrollView 滾動頁面FlutterView
- 前端頁面自定義滾動條前端
- 隱藏滾動條保留滾動效果
- angular 監聽 Windows 滾動事件 實現頁面滾動載入AngularWindows事件
- 移動端滾動穿透問題解決方案穿透
- 如何解決移動端滾動穿透問題穿透