雖然小程序中有大把的自定義sticky
組件可用,原理無非是監聽頁面滾動改變position
來實現,實際體驗上卡頓感難以免,跟原生的position: sticky
比仍是有很大距離。
最近寫的頁面已經開始逐漸用上原生position: sticky
,在測試中發現IOS
真機下,某些場景的sticky
會失效,花了點時間研究,得出來如下結論:web
IOS
必須加上position: -webkit-sticky;
IOS
下sticky
的元素必須與佔位元素在同一個做用域
下面,才生效sticky
有效page.wxml
<view style="height: 100px">title</view> <view style="position: -webkit-sticky; position: sticky; top: 40px">sticky</view> <view style="height: 200vh"></view>
sticky
定義在組件內,佔位元素在頁面裏,安卓及模擬器有效,IOS真機無效components.wxml
<view style="position: -webkit-sticky; position: sticky; top: 40px">sticky</view>
page.wxml
<view style="height: 100px">title</view> <components/> <view style="height: 200vh"></view>
sticky
定義在組件內,佔位元素在組件插槽內,有效components.wxml
<view style="position: -webkit-sticky; position: sticky; top: 40px">sticky</view> <slot/>
page.wxml
<view style="height: 100px">title</view> <components> <view style="height: 200vh"></view> </components>
第二個真的是神坑,還好能夠經過第三個辦法解決小程序