1.页面滑动固定失效
很多时候我们开发移动端页面时,会发现与我们PC上开发时看到的完全两样,怀疑是自己做的不好,有可能手机兼容不好。关键我们还是缺乏手机端开发经验,因
为很多东西并不是你能想到的,你觉得这样做肯定没问题,到了手机上就不一样了,这就是事实,如果我们有了经验,开发的时候能避免很多问题的发生。
这篇文章写的目的,解决一个手机端上经常出现的问题,我们有的时候把一块元素设为固定,然后我们在手机的屏幕上滑动,固定的那一块元素在滑动时会消失,
手指松掉又出来了,正常来讲,不管滑不滑动,固定是永远处在屏幕一个位子不变的。
出现这种情况是因为 页面当中有两个固定模块 最里面的固定模块处于页面滚动条范围内,使得滚动时连滚动条一起带着走了。
解决方法:
把固定块和滚动区域分离,本来我们滚动区域中包含了固定块与滚动的内容块,现在我们滚动区域只包含内容,比如:固定的部分处于页面的最右方,我
们把滚动的内容块加上overflow-y:auto , height:xxx,再用margin-right:xxx把最右方的固定块隔开,这样做的目的相当于把固定块从滚动区域拿了出来,这
样滚动的时候就不会连着滚动区域中的固定块一起滚动了。
{<div>A</div><div>B</div>}
{}代表的是滚动的区域,A部分代表的是滚动区域中的内容,B部分代表的是固定块,因为固定部分处于滚动区域内,使得滚动影响了固定部分。
{<div>A</div>}<div>B</div>
原本滚动区域是把滚动内容和固定块都包含了,现在我们把滚动区域只划分给滚动的内容,这样一来,固定就不会出现忽隐忽现的情况了。
2.触发手机键盘破坏固定块
在移动端开发中,我们经常在项目中使用导航栏,而导航栏恰恰会放在页面的最底部,当我们点击input框时,会唤起键盘,这时候键盘会把设置fixed的导航栏拱
上去,原因很简单:唤起键盘后,键盘会加入到页面中,body的height:100%会发生自适应变化,浏览器窗口减去键盘高度后,剩余的交给页面body,body的高度
一变小,可视区域也会变小,设置fixed后,因为fixed 固定底部所以bottom:0 显然是到body的底部了,所以fixed还是生效的,只是因为body高度出现的问题导
致的。
解决方法:
给body高度设成window的高度
$("body").height($(window).height());
这样当键盘弹出后,虽然可视区域的高度变小了,整个页面的高度并没有变,然后我们把所有页面的内容装到一个div中,把div的高度设成
height:100%,overflow-y:auto。
再保守一点把固定块fixed换成absolute绝对定位。