近日需要實現移動端頁面額外功能按鈕,即點擊加號彈出點贊與留言功能,通常這個按鈕都會固定於頁面的右下角,首先就想到使用固定定位來實現。
但是在測試時我們發現,在IOS中,當系統鍵盤彈出時,fixed會失效,加號按鈕會隨着鍵盤的彈出,而被頂到鍵盤的上方。后來在網上搜索了一下,發現很多開發者都有遇到過這個問題,因為電商網站會有很多這種需要用到固定定位的場景,於是去到淘寶的移動端頁面,發現他們是通過使用絕對定位來實現固定定位的效果。方法如下:
頁面結構如圖
首先設置一個box,大小等於頁面窗口的大小,設置屬性position:relative;盒子頂部與底部部分設置好高度,使用position:absolute,分別將top和bottom設為0,中間內容部分的高度通過js動態設置為頁面高度減掉頂部和底部欄的高度,並設置為positon:absolute,top等於頂部欄的高度,設置其屬性overflow:scroll,另外可再加上
-webkit-overflow-scrolling: touch;可以使中間部分滑動更加順暢,接近於原生app。最后設置加號按鈕的position:absolute,按照需求對其進行定位,此時在滑動頁面中間的內容部分時,加號按鈕始終處於原來的位置,並且在系統鍵盤彈出時,也不會影響到它,這樣就用絕對定位實現了固定定位的效果。