其實元件上線已經有一段時間了,最開始看到這個需求是站長提交了乙個這中功能的元件過來,不過看過**立刻就想到了 mip 頁面的特殊性:從結果頁開啟的 mip 頁面,是巢狀在 乙個 iframe 之中。
在這種特殊的情況下,單純的通過 position: fixed 去實現 dom 元素的懸浮存在一系列的問題。比如,在 ios 的 safari 瀏覽器中,當使用者滑動頁面的時候,頁面中的懸浮元素會隨著頁面的滑動而閃爍。
因此,mip 提供了 mip-fixed 懸浮布局元件來解決這些問題。
顧名思義就是乙個 dom 節點在滑動的一定位置的時候,變為懸浮狀態。滑動懸浮的使用場景還是很多的,比如一些頁面中的導航,當導航滑動到頁面頂部的時候則懸浮在頁面頂部,以方便使用者操作。如:
目前業內針對這種滾動頁面定位的情況一般使用兩種邏輯來寫:
(1)將懸浮前後的兩個狀態分成兩個 dom 節點(暫時叫做 staticdom 和 fixeddom),並通過 js 控制兩個 dom 節點的顯示和隱藏。在頁面到達懸浮狀態之前:staticdom 節點顯示,fixeddom 節點隱藏;到達懸浮狀態之後:staticdom 節點隱藏,fixeddom 節點顯示。
(2)只需要乙個 dom 節點(暫時叫做 stickydom),所有的邏輯都通過 js 控制,也就是說,頁面到達懸浮狀態的時候,將 stickydom 的 css 樣式中的 position 屬性的值設定為 fixed, 非懸浮狀態的時候,將 stickydom 的 css 樣式中的 position 屬性設定為 static。
(3)通過 css3 的 position: sticky 實現。這是 css3 的新特性,不過目前還不能達到很好的相容狀態,特別是我們這種在 iframe 內的特殊情況。關於 sticky 可以參考文件 position:sticky實現ios6+下的粘性布局
mip-semi-fixed 是滑動懸浮元件,也可以叫做半懸浮元件,命名為 semi-fixed 的靈感**於半導體(介於導體(conductor)與絕緣體(insulator)之間)。
**設計融合了業界兩種實現方案,非 sf 下 mip 頁面中通過 js 更換 css 實現,sf 下的 mip 頁面由於要特殊處理 fixed 元素,所以會科隆乙個 dom 節點,具體**參考 mip-semi-fixed 開源**。
mip 官網文件 mip-semi-fixed 滑動懸浮元件 中對元件各個引數的說明、使用以及預設值等進行了詳細的說明。
加關閉按鈕
有任何問題可以到 github issues 提問。
走走可能更健康
經過三個月的努力,幫助另一家公司及團隊完成了乙個網際網路產品。雖然,產品不是很漂亮,ui互動還有小瑕疵,但已經滿足了基本的商業目標,實現了基本的商業模式。回顧,這個新的團隊,我接手時有42人,團隊人際關係矛盾突出,士氣低迷,管理混亂,商業外部壓力巨大。經過溝通及整理,現有團隊為84人,管理基本體系建...
週末,晨起出去走走。
週末,晨起出去走走。還未仔細品味,秋風已把秋天悄然送走,今日立冬預示著冬天已經來臨。河水平靜,柳葉倒影在水中,夏天的綠色尚存,秋季黃肥綠瘦清晰可見,柳樹枝葉繁茂,沒有秋去冬來的感覺,突然乙隻水鳥貼著水面飛騰,是受傷了還是在練習飛翔?把平靜的水面掀起一片漣漪,水中倒影閃恍,柳樹影子增添了動感,讓人分不...
到處走走 北京勝利飯店
上個月在北京勝利飯店比賽,這個月又來開會。勝利飯店旁邊出門右轉有一家生鮮超市,有瓜果蔬菜買。還有一家養生堂藥店,臨時有個頭疼腦熱可以去買點藥。附近的吃飯的地方,你可以搜尋 稻香村 最近的一家所在的那條街,有幾家不錯的店。我沒去過,只是看著生意不錯。下次可以去看看。從南站到勝利飯店的交通工具,我選擇地...