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

使用姿勢

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

不用寫任何腳本快速生成精緻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="/static/imghwm/default1.png"  data-src="asset/alloytouch.png"  class="lazy"   alt="AlloyTouch全螢幕滾動插件 30秒搞定順滑H5頁" ></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="/static/imghwm/default1.png"  data-src="asset/power.png"  class="lazy"   alt="AlloyTouch全螢幕滾動插件 30秒搞定順滑H5頁" ></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
HTML5的遺產:當前了解H5HTML5的遺產:當前了解H5Apr 10, 2025 am 09:28 AM

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

H5代碼:可訪問性和語義HTMLH5代碼:可訪問性和語義HTMLApr 09, 2025 am 12:05 AM

H5通過語義化元素和ARIA屬性提升網頁的可訪問性和SEO效果。 1.使用、、等元素組織內容結構,提高SEO。 2.ARIA屬性如aria-label增強可訪問性,輔助技術用戶可順利使用網頁。

H5與HTML5相同嗎?H5與HTML5相同嗎?Apr 08, 2025 am 12:16 AM

"h5"和"HTML5"在大多數情況下是相同的,但它們在某些特定場景下可能有不同的含義。 1."HTML5"是W3C定義的標準,包含新標籤和API。 2."h5"通常是HTML5的簡稱,但在移動開發中可能指基於HTML5的框架。理解這些區別有助於在項目中準確使用這些術語。

H5的功能是什麼?H5的功能是什麼?Apr 07, 2025 am 12:10 AM

H5,即HTML5,是HTML的第五個版本,它為開發者提供了更強大的工具集,使得創建複雜的網頁應用變得更加簡單。 H5的核心功能包括:1)元素允許在網頁上繪製圖形和動畫;2)語義化標籤如、等,使網頁結構清晰,利於SEO優化;3)新API如GeolocationAPI,支持基於位置的服務;4)跨瀏覽器兼容性需要通過兼容性測試和Polyfill庫來確保。

h5鏈接怎麼做h5鏈接怎麼做Apr 06, 2025 pm 12:39 PM

如何創建 H5 鏈接?確定鏈接目標:獲取 H5 頁面或應用程序的 URL。創建 HTML 錨點:使用 <a> 標記創建錨點並指定鏈接目標URL。設置鏈接屬性(可選):根據需要設置 target、title 和 onclick 屬性。添加到網頁:將 HTML 錨點代碼添加到希望鏈接出現的網頁中。

h5兼容問題怎麼解決h5兼容問題怎麼解決Apr 06, 2025 pm 12:36 PM

解決 H5 兼容問題的方法包括:使用響應式設計,允許網頁根據屏幕尺寸調整佈局。採用跨瀏覽器測試工具,在發布前測試兼容性。使用 Polyfill,為舊瀏覽器提供對新 API 的支持。遵循 Web 標準,使用有效的代碼和最佳實踐。使用 CSS 預處理器,簡化 CSS 代碼並提高可讀性。優化圖像,減小網頁大小並加快加載速度。啟用 HTTPS,確保網站的安全性。

h5怎么生成鏈接h5怎么生成鏈接Apr 06, 2025 pm 12:33 PM

h5頁面可以通過兩種方法生成鏈接:手動創建鏈接或使用短鏈接服務。通過手動創建,只需複制h5頁面的URL即可;通過短鏈接服務,需將URL粘貼到服務中,然後獲取縮短的URL。

h5分享頁面怎麼做h5分享頁面怎麼做Apr 06, 2025 pm 12:30 PM

製作引人入勝的 H5 分享頁面至關重要,旨在提升參與度、產生潛在客戶和增加品牌知名度。步驟包括:確定目標受眾、設計引人注目的視覺效果、創建引人入勝的內容、添加互動元素、優化社交媒體分享,以及測試並改進。

See all articles

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

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。