隨頁(yè)面滾動(dòng)淡入的動(dòng)效?

這種前端動(dòng)效交互感很強(qiáng)啊,以前使用原生的鼠標(biāo)滾輪監(jiān)聽(tīng)寫過(guò)類似的功能。還要加防抖函數(shù),麻煩的很。這段時(shí)間參考了套用的一個(gè)網(wǎng)頁(yè)模板,找到了最簡(jiǎn)單實(shí)現(xiàn)這個(gè)功能的辦法。
————CafuChino

需要用到的庫(kù):

在之前這樣的應(yīng)用中,因?yàn)椴恢廊绾巫粉欗?yè)面滾動(dòng)進(jìn)度,所以設(shè)計(jì)成了像幻燈片切換的效果,使用的方法是原生監(jiān)聽(tīng)鼠標(biāo)滾輪,添加節(jié)流函數(shù)操作改變一個(gè)計(jì)數(shù)變量,這個(gè)計(jì)數(shù)變量的值為當(dāng)前頁(yè)。至于動(dòng)效的實(shí)現(xiàn)是在翻頁(yè)的同時(shí)加上一個(gè)綁定動(dòng)畫的類,一段時(shí)間之后再刪除這個(gè)類??偠灾浅7爆?,一個(gè)簡(jiǎn)單的頁(yè)面寫了百余行的js專門用來(lái)操作動(dòng)效。現(xiàn)在找到了比較簡(jiǎn)單的辦法,不過(guò)思路在一些方面上依然一樣。

waypoint庫(kù):

waypoint庫(kù)是一個(gè)可以監(jiān)聽(tīng)頁(yè)面滾動(dòng)位置的庫(kù),他監(jiān)聽(tīng)的方式是監(jiān)聽(tīng)某一個(gè)元素與屏幕定的距離。當(dāng)設(shè)定元素與屏幕距離小于等于所設(shè)定的百分比,就會(huì)觸發(fā)事件。而且還可以設(shè)定觸發(fā)時(shí)的頁(yè)面滾動(dòng)方向,這就形成了向下滾動(dòng)界面,屏幕上的元素淡入(可以使任何動(dòng)效或者是任何事件)。插件的使用很簡(jiǎn)單,文檔已經(jīng)很完整了,所以我只記錄一下我摸索的方案:

把包裹需要綁定動(dòng)效的父容器設(shè)定class 為animate-box ,需要綁定動(dòng)效的元素設(shè)定class為to-animate,開(kāi)始動(dòng)效添加class為animated,這樣不僅比較容易判定元素的狀態(tài),而且可以允許父元素內(nèi)有綁定動(dòng)效的元素,也有不綁定的元素。

//css部分
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}//animate.css中有定義,可以寫在頁(yè)面css中方便修改
.to-animate {
opacity: 0;
}

可以看出,未執(zhí)行動(dòng)效的元素依然存在,只是被調(diào)整成了完全透明。如果將其設(shè)為hidden,將會(huì)導(dǎo)致布局閃爍。

//js部分,使用了jq
$('.animate-box').waypoint(function (direction) {
if (direction === 'down' && !$(this).hasClass('animated')) {
$(this.element).children('.to-animate').addClass('fadeInUp animated');
}
}, {
offset: 75%
});

offset指的是當(dāng)元素與頂部距離的觸發(fā)值,direction代表的是達(dá)到觸發(fā)值的時(shí)候的方向。有一點(diǎn)非常重要:

這里的this指代的是監(jiān)聽(tīng)點(diǎn)本身,如果直接使用this,將會(huì)獲取不到其子元素,而this.element表示的才是綁定監(jiān)聽(tīng)的元素,一定注意!

之后頁(yè)面上的元素就會(huì)在第一次滾動(dòng)到那里的時(shí)候漸隱顯示了,animate.css中定義了很多種的動(dòng)效類型(代碼里的fadeInUp就是其中定義的),想要使用哪種動(dòng)效,直接添加指定的類就可以了,非常方便√當(dāng)然waypoint也可以不止綁定動(dòng)效,可以綁定請(qǐng)求,達(dá)到用戶統(tǒng)計(jì)的作用等等;通過(guò)對(duì)用戶瀏覽情況統(tǒng)計(jì)分析用戶意向等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容