那些H5用到的技術(5) 視差滾動效果

2022-01-26 06:40:46 字數 2746 閱讀 8166

前言原理

使用方式

結合swiper.js

視差滾動原理其實並不難,parallax.js的原始碼也僅有600行,大致講解一下

1、預設情況通過requestanimationframe方式做數值計算,否則用settimeout

if(!

window

.requestanimationframe

),timetocall);lasttime=currtime

+timetocall

;

return

id;

};

}

2、優先通過deviceorientationevent判斷是否支援陀螺儀,否則通過mousemove事件監聽滑鼠移動

plugin

.prototype

.enable

=function

()else

window.addeventlistener

('resize'

,this

.onwindowresize

);

this

.raf

=requestanimationframe

(this

.onanimationframe

);

}

};

3、css動畫優先採用transform的translate3d,否則使用translate進行平移

if

(this

.transform3dsupport

)elseif(

this

.transform2dsupport

)

4、通過設定css讓瀏覽器開啟gpu加速

plugin

.prototype

.accelerate

=function

($element

)};

5、層運動的計算規則

計算的公式如下:

xmotion 

=parentelement

.width *(

scalarx

/100)*

layerdepth

ymotion=parentelement

.height *(

scalary

/100)*

layerdepth

例如在場景中乙個data-depth為0.5的層,它的scalarx和scalary值都為10(預設值),它的父容器的尺寸為1000px x 1000px,那麼這個層在x和y方向的總運動量就為:

xmotion 

=1000*(

10/100)

*0.5=50

# 50px of positive and negative motion in x

ymotion=1000*(

10/100)

*0.5=50

# 50px of positive and negative motion in y

非常簡單,官方建議使用ul+li標籤的無序列表(當然你用div或者其他標籤都行),你只需要給它們乙個class layer和乙個data-depth屬性來指定該層的深度。深度為0的層將是固定不動的,深度為1的層運動效果最激烈的層。0-1之間的層會根據值來相對移動。

別忘了設定樣式

ul 

.scene

,.

scene

.layer

$('. scene'

).parallax

();

var

scene

=document

.getelementbyid

('scene'

);var

parallax

=new

parallax

(scene

);

一般這樣使用就足夠了,除非是比較複雜的效果,要設定一些特定引數,呼叫api,具體內容參見官方文件

使用方式上不變,只不過需要把需要視差的元素再包裹一層

class

="swiper-slide"

>

最終效果圖:

H5禁止頁面滑動 滾動

禁止頁面滾動 有三種方法 1,依靠css 將頁面 document.documentelement.style.overflow hidden document.body.style.overflow hidden 手機版設定這個。如果設定了如上,頁面的滾動條將會消失,此時滑鼠滾輪失效。但是 你用鍵...

h5學習筆記 gsap動效庫

今天正好趕上用這個庫的時候,之前使用as3,後面greensock已經公升級到3.0版本,發現更加簡化使用。進入官網可以看到裡面有一些教程使用,greensock 基本上和as3介面類似。js版本可以針對div做效果。gasp 尺寸還可以支援單位,px 和rem轉換,效果還十分不錯。也可以不帶單位。...

玩轉 H5 下拉上滑動效

按照上面的技術方案實施,具體過程為 禁用頁面頂部下拉事件 將頁面的主體內容用乙個div容器包含起來,同時複製需要放大處理的內容節點至主體內容之外 繫結頁面滑屏事件 計算滑屏偏移量以及縮放等數值的運算 根據變化數值主體內容transfrom下滑,同時複製的節點做放大動效處理 監聽滑屏事件結束,執行回彈...