如何檢測頁面滾動並執行動畫

2021-10-07 02:23:16 字數 3893 閱讀 5534

h5頁面動畫,在推廣運營中應用的相當廣泛。越是酷炫的動畫,越能吸引使用者。動畫當然算是比較重要的乙個環節,除此之外不得不提到的就是-動畫滾動互動效果。

一、每個section怎樣單獨執行動畫?

首先,引入動畫庫,這裡我們使用animate.css(傳送門)

1

rel="stylesheet"

href="css/animate.css">

請注意:如果你只用了少量動畫效果,請直接拷貝具體動畫**,而不再引入整個動畫庫。

其次,像往常一樣編寫你的html**:

123

4567

891011

1213

1415

id="wan_banner">

class="warp">

id="left"

class="animate">

class="pos bounce_in_down">

革命性通訊技術i>

超低功耗感測器網路基站i>

div>

div>

id="right"

class="animate">

class="bounce_in_right"

src="../image/product2.png"

width="200"

height="406"/>

div>

div>

section>

我們來簡單說一下這裡的處理細節:

1.我們為#left,#right容器新增了animate類;

2.為animate子容器分別新增了bounce_in_down,bounce_in_right類;

接下來,我們來處理一下動畫細節:

1234567

891011

1213

1415

1617

1819

2021

2223

2425

2627

/*方式一*/

.animate

.play

.animate

/*方式二*/

.animate

.play

.animate

/*方式三*/

.animate

.play

.animate

/*動畫類,此處舉乙個栗子,請確保bounceindown動畫已經引入*/

.play

.bounce_in_down

上面列舉了三種方式,方式一主要是先暫停動畫,等待執行時機。方式二,三先隱藏元素,啟用後,顯示元素。

個人比較推薦第一種和第二種方式,第三種方式元素容器會變化,某種情況下會引起不必要的問題。

這裡著重說明一下play類,我們暫且稱它為動畫觸發類。思路就是,需要執行動畫的元素新增animate類,先做暫停處理;當需要啟用該元素動畫的時候,為其父元素新增play類,從而觸發動畫執行。

很好,動畫也可以觸發了,那麼最重要的執行時機怎麼確定?下面我來介紹一下,滾動觸發動畫執行的方式。

二、如何檢測頁面滾動到了哪個section容器?

場景:頁面分為多個section,我要實現,頁面滾動到具體哪個section,為其新增play類。

方案一:

123

45

$(window).scroll(function (event) );

檢測滾動的高度,然後取頁面每個section位置,放入陣列,如果當前滾動高度在section某個區間,那麼就為其新增play類;

可是感覺比較麻煩,看看有沒有其他好的辦法。繼續尋找方案二。。。。

方案二:

借助外掛程式,實現監聽滾動傳送門

還是上面的html結構:

123

4567

891011

1213

1415

data-scroll-watch

id="wan_banner">

class="warp">

id="left"

class="animate">

class="pos bounce_in_down">

革命性通訊技術i>

超低功耗感測器網路基站i>

div>

div>

id="right"

class="animate">

class="bounce_in_right"

src="../image/product2.png"

width="200"

height="406"/>

div>

div>

section>

section部分新增了data-scroll-watch,這就告訴了scrollwatch,此部分需要做滾動監聽。

接下來,你需要初始化scrollwatch外掛程式,並做一些簡單的配置調整。

1234567

89

var sw = new scrollwatch(

});

哈哈,大家可能看出來了,方案二就是偷懶模式?。我們借助scrollwatch來完成,詳細資訊請檢視api。

三、繼續公升級:section進入視口,執行動畫;section滾出視口,反向執行動畫?

互動師又提出了乙個需求:

當滾動到該區域時,動畫執行;當該區域離開檢視區域時,動畫反向執行。我們接受挑戰,看看如何實現。

第一反應當然是看看有沒有現成的外掛程式,這樣可以省去重複造輪子的時間成本。很幸運,我看到了這篇文章jquery smoove-華麗的css3滾動效果。

嗯,jquery smoove是個不錯的方案。

注意:jquery smoove為另外一種實現方式,與之前說的上文沒有任何關係!

首先:引入類庫,請先引入jquery檔案。

123

"">script>

"0.2.6/jquery.smoove.min.js">script>

我們對上面的html結構做一下簡單的調整:

123

4567

891011

1213

14

id="wan_banner">

class="warp">

id="left"

class="my_animate"

data-move-x="-100px">

class="pos">

革命性通訊技術i>

超低功耗感測器網路基站i>

div>

div>

id="right"

class="my_animate"

data-move-x="100px">

src="../image/product2.png"

width="200"

height="406"/>

div>

div>

section>

jquery smoove幫我們做好了動畫,我們只需要為其新增特定屬性。

請注意:#left和#right的容器內部已經變成了my_animate類,同時新增了data-move-x=」-100px」和data-move-x=」100px」語法。

用外掛程式,肯定需要做一些初始化工作:

12345

$(document).ready(function());

})

當該元素滾動到距離視口底部45%距離時,觸發動畫。更多的動畫效果,請檢視jquery-smoove文件位址。

到這裡,整個處理方式應該很明晰了吧,希望能夠幫到你。

jquery如何判斷滾動條滾到頁面底部並執行事件

首先理解三個dom元素,分別是 clientheight offsetheight scrolltop。clientheight 這個元素的高度,占用整個空間的高度,所以,如果乙個div有滾動條,那個這個高度則是不包括滾動條沒顯示出來的下面部分的內容。而只是單純的div的高度。offsetheigh...

jquery如何判斷滾動條滾到頁面底部並執行事件

首先理解三個dom元素,分別是 clientheight offsetheight scrolltop。clientheight 這個元素的高度,占用整個空間的高度,所以,如果乙個div有滾動條,那個這個高度則是不包括滾動條沒顯示出來的下面部分的內容。而只是單純的div的高度。offsetheigh...

jquery如何判斷滾動條滾到頁面底部並執行事件

首先理解三個dom元素,分別是 clientheight offsetheight scrolltop。clientheight 這個元素的高度,占用整個空間的高度,所以,如果乙個div有滾動條,那個這個高度則是不包括滾動條沒顯示出來的下面部分的內容。而只是單純的div的高度。offsetheigh...