首頁 web前端 H5教程 AlloyTouch全螢幕滾動插件 30秒搞定順滑H5頁

AlloyTouch全螢幕滾動插件 30秒搞定順滑H5頁

Jan 11, 2017 am 09:42 AM

使用姿勢

在設計全屏滾動插件的時候,希望開發者幾乎:

不用寫任何腳本快速生成精緻H5

支持PC滾輪和移動觸摸

動效

支持PC滾輪和移動觸摸


的轉場動效

時間軸管理

一切皆可配置

但是不寫腳本肯定沒有靈活性咯? !不是的。這裡不僅可以透過在HTML配置一些參數,還可透過插件的回呼函數進行一些邏輯注入。就拿上面大家掃碼看到的例子的 部分HTML 來分析下AlloyTouch.FullPage的使用姿勢:

<div id="fullpage">
    <div>
      <div>
        <div class="animated" data-show="bounceInLeft" data-hide="bounceOutLeft">AlloyTouch Introduction</div>
        <div class="animated" data-delay="500" data-show="bounceInUp" data-hide="zoomOut"><img src="asset/alloytouch.png"></div>
        <div class="animated" data-delay="1200" data-show="bounceIn" data-hide="bounceOut">By AlloyTeam</div>
      </div>
    </div>
     
    <div>
      <div>
        <div class="animated" data-delay="100" data-show="flipInY" data-hide="flipOutY" >Powerful Features</div>
        <div class="animated" data-delay="400" data-show="zoomIn" data-hide="zoomOut"><img src="asset/power.png"></div>
      </div>
    </div>
    ...
    ...
    ...
 </div>
登入後複製

注意,上面只是部分HTML,而且我已經把一些和插件配置無關的HTML去掉了。下面一一進行分析:

class="animated"符合 animate.css 的約定,加上了這個class代表會有動畫。

data-delay代表滾到該頁面之後,被標記的DOM元素要等多久才開始播放動畫。如果開發者不標記的話預設值是0。

data-show代表被標記的DOM元素顯示的動畫類型

data-hide代表被標記的DOM元素隱藏的動畫類型(這個通常用戶看不到,但是為了show的時候平滑,一般設定為與data -show的相反的類型)

就這麼多,配置就這麼多,配置就這麼多! !夠簡單把! !

當然你需要在js裡面初始化一下:

new AlloyTouch.FullPage("#fullpage",{
    animationEnd:function () {
     
    },
    leavePage: function (index) {
      console.log("leave"+index)
    },
    beginToPage: function (index) {
      console.log("to"+index);
      pb.to(index / (this.length-1));
    }
  });
登入後複製


animationEnd是滾動結束之後的回呼函數

leavePage是代表離開某個頁面的回呼函數

beToyage
上面的pb是用來設定nav或progress的進度,這個可以先不用管。如果有需要的話,使用者可以自行封裝任意的進度條元件。

原理分析

這裡主要抽取了AlloyTouch.FullPage的核心代碼進行分析:

new AlloyTouch({
  touch: this.parent,
  target: this.parent,
  property: "translateY",
  min: (1 - this.length) * this.stepHeight,
  max: 0,
  step: this.stepHeight,
  inertia: false,
  bindSelf : true,
  touchEnd: function (evt, v, index) {
    var step_v = index * this.step * -1;
    var dx = v - step_v;
 
    if (v < this.min) {
      this.to(this.min);
    } else if (v > this.max) {
      this.to(this.max);
    } else if (Math.abs(dx) < 30) {
      this.to(step_v);
    }else if (dx > 0) {
      self.prev();
    } else {
      self.next();
    }
    return false;
  },
  animationEnd: function () {
    option.animationEnd.apply(this,arguments);
    self.moving = false;
  }
});
登入後複製

   

上下滾動,所以運動的屬性是translateY

min可以透過window.innerHeight和總共的頁數推算出來,this.stepHeight就是window.innerHeight

max顯然就是0

step顯然就是windowinnerHeight,也就是this.innerHeight .stepHeight

inertia: false代表把慣性運動禁止掉,也就是用戶鬆手和不會慣性滾動


bindSelf是意思是touchmove和touchend以及touchcancel都綁定在this.parentent,而非window下。不設定bindSelf的話touchmove和touchend以及touchcancel都綁定在window下。

這裡需要特別詳細說下,這個bindSelf配置非常有用,例如很典型的應用場景就是解決AlloyTouch嵌套AlloyTouch的問題。例如你上面掃碼看到的例子裡面,嵌套了AlloyTouch的Demo如下所示:

AlloyTouch全屏滚动插件 30秒搞定顺滑H5页

這裡其實是嵌套的滾動。滾動裡面的會導致外面的也滾動?怎麼解決?裡面的滾動必須加上bindSelf並且阻止冒泡:

且看內部滾動的詳細代碼:

var scroller = document.querySelector("#scroller");
Transform(scroller,true);
 
new AlloyTouch({
  touch:"#demo0",
  target: scroller,
  property: "translateY",
  min:250-2000,
  max: 0 ,
  touchStart:function(evt){
    evt.stopPropagation();
  },
  touchMove:function(evt){
    evt.stopPropagation();
  },
  bindSelf:true
})
登入後複製

這樣的話,嵌套的HTML裡面的嵌套的AlloyTouch就不會向上冒泡了,也就是滾動裡面的不會觸發外面的滾動。

繼續分析FullPage原始碼:

touchEnd是使用者手指離開螢幕之後的回呼函數。裡面有邊界處理的邏輯:

超出min和max都會對應的校正會min和max。

step校正,絕對值小於30px會重設

step校正,絕對值大於30px且大於0會去上一頁

step校正,絕對值大於30px且小於0會去下一頁


step校正,絕對值大於30px且小於0會去下一頁

return false代表不會去運行AlloyTouch鬆開手後的運動校正邏輯,這點很重要


animationEnd就是運動結束之後的回調函數,會去執行用戶從AlloyTouch.FullPage傳遞過來的animationEnd,並且把moving設定為false。

開啟AlloyTouch.FullPage之旅

Github:https://github.com/AlloyTeam/AlloyTouch

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家中文網多支持PHP 。 🎜🎜更多AlloyTouch全螢幕滾動插件 30秒搞定順滑H5頁相關文章請關注PHP中文網! 🎜
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

h5項目怎麼運行 h5項目怎麼運行 Apr 06, 2025 pm 12:21 PM

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

H5頁面製作究竟指什麼 H5頁面製作究竟指什麼 Apr 06, 2025 am 07:18 AM

H5 頁面製作是指使用 HTML5、CSS3 和 JavaScript 等技術,創建跨平台兼容的網頁。其核心在於瀏覽器解析代碼,渲染結構、樣式和交互功能。常見技術包括動畫效果、響應式設計和數據交互。為避免錯誤,應使用開發者工具調試;而性能優化和最佳實踐則包括圖像格式優化、減少請求和代碼規範等,以提高加載速度和代碼質量。

h5怎麼製作點擊圖標 h5怎麼製作點擊圖標 Apr 06, 2025 pm 12:15 PM

製作 H5 點擊圖標的步驟包括:在圖像編輯軟件中準備方形源圖像。在 H5 編輯器中添加交互性,設置點擊事件。創建覆蓋整個圖標的熱點。設置點擊事件的操作,如跳轉頁面或觸發動畫。導出 H5 文檔為 HTML、CSS 和 JavaScript 文件。將導出的文件部署到網站或其他平台。

如何使用地理位置API處理用戶位置隱私和權限? 如何使用地理位置API處理用戶位置隱私和權限? Mar 18, 2025 pm 02:16 PM

本文討論了使用GeOlocation API管理用戶位置隱私和權限,並強調要求權限,確保數據安全性並遵守隱私法律的最佳實踐。

H5頁面製作適合哪些應用場景 H5頁面製作適合哪些應用場景 Apr 05, 2025 pm 11:36 PM

H5(HTML5)適合應用於輕量級應用,如營銷活動頁面、產品展示頁面和企業宣傳微網站。它優勢在於跨平台性和豐富的交互性,但局限性在於復雜的交互和動畫、本地資源訪問和離線功能。

如何將HTML5拖放API用於交互式用戶界面? 如何將HTML5拖放API用於交互式用戶界面? Mar 18, 2025 pm 02:17 PM

本文介紹瞭如何使用HTML5拖放API來創建交互式用戶界面,詳細介紹了使元素可拖動的步驟,處理關鍵事件並通過自定義反饋來增強用戶體驗。它還討論了一個常見的陷阱

html下一頁功能 html下一頁功能 Apr 06, 2025 am 11:45 AM

<p>可以通過 HTML 創建下一頁功能,步驟包括:創建容器元素、分割內容、添加導航鏈接、隱藏其他頁面、添加腳本。該功能允許用戶瀏覽分段的內容,每次只顯示一頁,適用於展示大量數據或內容。 </p>

H5頁面製作是否需要持續維護 H5頁面製作是否需要持續維護 Apr 05, 2025 pm 11:27 PM

H5頁面需要持續維護,這是因為代碼漏洞、瀏覽器兼容性、性能優化、安全更新和用戶體驗提升等因素。有效維護的方法包括建立完善的測試體系、使用版本控制工具、定期監控頁面性能、收集用戶反饋和製定維護計劃。

See all articles