fixed在手机端的bug

 

原文地址:http://zhangruojun.com/iframeli-de-fixedzai-iosxia-shi-xiao/

一、带input的fixed在ios下失效

在ios下,一个页面如果有fixed浮层,并且浮层里面有input,那么当input focused的时候,fiexed层的位置就会错乱。

如图:

fixed在手机端的bug

例子:http://demo.zhangruojun.com/static/page/iframe-fixed/input-fixed.html

(扫码查看页面效果)

fixed在手机端的bug

解决方法是,将除了fiexed层的内容放在div.container里面并加上以下样式。即整个body设置100%的高度不做滚动,只给内容div自己滚动。

.container{ 
    position: relative; 
    height: 100%; 
    overflow: auto;  
    -webkit-overflow-scrolling: touch;
 }

例子:http://demo.zhangruojun.com/static/page/iframe-fixed/input-fixed-方案.html

(扫码查看页面效果)

fixed在手机端的bug

 

二、iframe里的fixed在ios下失效

如果我们的页面里面嵌入了一个iframe, iframe页面里面又正好有fixed浮层,那么这个时候ios下查看这个页面,会发现fixed失效了。

例子:http://demo.zhangruojun.com/static/page/iframe-fixed/有bug.html

(扫码查看页面效果)

fixed在手机端的bug

底部按钮浮层并没有固定在屏幕的底部,而是掉在页面底部去了。

这是ios自带的bug,android下并不会有这个问题。

解决方法还是,将除了fiexed层的内容放在div.container里面并加上以下样式:

{ 
    position: relative; 
    height: 100%; 
    overflow: auto;  
    -webkit-overflow-scrolling: touch;
 }

http://demo.zhangruojun.com/static/page/iframe-fixed/方案一.html

(扫码查看页面效果)

fixed在手机端的bug

 

三、1跟2总结

将html,body高度设置为100%,将页面内容都装在高度为100%的容器里面,滚动不放在body,放在这个子容器,然后fixed层作为其兄弟节点存在。

 

四、Android某些机型下

Android某些机型下,fixed在底部的input,会被弹出来的软键盘挡住。

不要把input放在fixed层里面,换一种交互方式。

相关推荐