當fixed遇到ios,頁面滑動遮不住下面內容時


在修改移動端的一個需求時遇到這樣的一個問題,遮罩層用的是position:fixed;pc上移動模式測試正常,andriod測試正常,當用iphone5下的safari瀏覽器測試時,出現滑動時,瀏覽器的地址欄變小,導致頁面變長,那么原來的fixed用的height:100%,明顯沒有遮住下面的內容,可以看到這樣的效果。

 

開始的想法是這樣的,但結果都失敗了:

1、把遮罩層的高度加高,用bottom: -50%失敗

2、固定地址欄或直接顯示全屏,

<meta content="no" name="apple-mobile-web-app-capable">
<meta content="no" name="apple-touch-fullscreen">

結果還是失敗

 上網查了好些資料都沒找到合適的解決辦法,后來通過同事的建議在網上找到同樣問題的,用transform: translateZ(0);再配合原來的遮罩層加高,實現了即使滑動頁面時,下面依然顯示的是遮罩層部分。終於搞定了

http://stackoverflow.com/questions/11258877/fixed-element-disappears-in-chrome

 繼續下一個問題,父元素用display: flex; align-items: center;justify-content: space-between;實現下面的效果

但在iphone的safari下后面的部分折行,並非如此顯示,而是如下顯示:

除要兼容瀏覽器的寫法加上:-webkit

另外加上下面的樣式,才算顯示正常

-webkit-box-pack: justify;
-webkit-box-align: center;

box-pack 屬性規定當框大於子元素的尺寸,在何處放置子元素。

該屬性規定水平框中的水平位置,以及垂直框中的垂直位置。

box-align 屬性規定如何對齊框的子元素。

 

完整樣式如下:

 

-webkit-justify-content: space-between;
justify-content: space-between;
-webkit-align-items: center;
align-items: center;
padding: 0 $navMargin;
background: #fff;
height: $navHeight;
box-sizing: border-box;
-webkit-box-pack: justify;
-webkit-box-align: center;

display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;

 先這樣吧,遇到問題,折騰了一整天,記錄下來,為以后做參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM