请教一个前端问题,困扰很久了

2015 年 11 月 24 日
 lostab
前端不在行,这个问题 Google 了很久没有头绪,只好请教各位大神了。
简单说,就是移动版 web 页面,设置了 header 块级元素为 position:fixed ,这样拖动页面上下滚动就会一直浮在最顶部。
但是问题出在部分移动浏览器上,比如 iOS 7 上的 Safari ,当页面已经滚动到最顶部时,继续下拖,即往上滚动页面时,整个页面会被“拖拽”下来,包括浮动的 header ,上面出来一个灰色的背景。
而类似 iOS8 上貌似就不会。
有没有办法能规避这种情况呢?
手机没法传图,回头补一张图更直观。
4370 次点击
所在节点    JavaScript
12 条回复
v1024
2015 年 11 月 24 日
把网页的主体部分再放到一个 overflow : Scroll 的层里,这样拖拽的就是这个层里面的内容而不是整个网页。
66beta
2015 年 11 月 24 日
慎用 fixed ,有输入框的时候,框都要被它挡住的
ljcarsenal
2015 年 11 月 24 日
在 head 里加入 <meta name="viewport" content="width=device-width,target-densitydpi=high-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>试试呢
rain0002009
2015 年 11 月 24 日
LucasW
2015 年 11 月 24 日
html, body{
height:100%;
position:relative;
-webkit-overflow-scrolling: touch;
}
header {
position:absolute;
top:0;
left:0
}
hkongm
2015 年 11 月 24 日
focus 时, fixed 改为 absolute
原生键盘影响了定位

我们的做法:不在有 input 的情况下设计 fixed 元素,列为规范

小 tip : position:-webkit-sticky;
hqs123
2015 年 11 月 24 日
楼主 php 功力有待加强啊...
datou552211
2015 年 11 月 24 日
@hqs123 php ?
DIYgod
2015 年 11 月 24 日
@hqs123 哈哈哈哈什么鬼
JerryZou
2015 年 11 月 24 日
lostab
2015 年 11 月 25 日
@JerryZou Good ,这个方法的确规避了这个很恶心的情况,虽然还不是太完美(下拉的时候没有任何回弹效果了)。
JerryZou
2015 年 11 月 25 日
@lostab 是啊,我以前尝试解决这个问题也没找到什么很好的办法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/238407

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX