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

2015-11-24 08:39:58 +08:00
 lostab
前端不在行,这个问题 Google 了很久没有头绪,只好请教各位大神了。
简单说,就是移动版 web 页面,设置了 header 块级元素为 position:fixed ,这样拖动页面上下滚动就会一直浮在最顶部。
但是问题出在部分移动浏览器上,比如 iOS 7 上的 Safari ,当页面已经滚动到最顶部时,继续下拖,即往上滚动页面时,整个页面会被“拖拽”下来,包括浮动的 header ,上面出来一个灰色的背景。
而类似 iOS8 上貌似就不会。
有没有办法能规避这种情况呢?
手机没法传图,回头补一张图更直观。
3420 次点击
所在节点    JavaScript
12 条回复
v1024
2015-11-24 08:43:02 +08:00
把网页的主体部分再放到一个 overflow : Scroll 的层里,这样拖拽的就是这个层里面的内容而不是整个网页。
66beta
2015-11-24 09:04:21 +08:00
慎用 fixed ,有输入框的时候,框都要被它挡住的
ljcarsenal
2015-11-24 09:05:01 +08:00
在 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 09:06:01 +08:00
LucasW
2015-11-24 09:52:33 +08:00
html, body{
height:100%;
position:relative;
-webkit-overflow-scrolling: touch;
}
header {
position:absolute;
top:0;
left:0
}
hkongm
2015-11-24 10:26:05 +08:00
focus 时, fixed 改为 absolute
原生键盘影响了定位

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

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

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

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

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

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

© 2021 V2EX