自2.2以来,Android浏览器支持固定定位,至少在某些情况下,例如关闭缩放时。我有一个没有JS的简单HTML文件,但我试过的三部三星手机的固定定位是完全错误的。标题滚出视图而不是真正的固定定位,然后在滚动完成后弹回原位。
对于我测试的任何配置(2.2,2.3,2.3 x86,4.0.4),Android SDK模拟器上都不会发生这种情况。在三星手机上的应用程序中使用WebView时也不会发生这种情况:在这些情况下,定位会按预期工作。
有没有办法让三星Android“股票”浏览器使用真正的固定定位?
我测试过: 1.三星Galaxy 551,Android 2.2 2.三星Galaxy S,Android 2.3 3.三星Galaxy S II,Android 2.3
示例代码:
<html>
<head>
<meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no,width=device-width,height=device-height">
<style>
h1 { position: fixed; top: 0; left: 0; height: 32px; background-color: #CDCDCD; color: black; font-size: 32px; line-height: 32px; padding: 2px; width: 100%; margin: 0;}
p { margin-top: 36px; }
</style>
</head>
<body>
<h1>Header</h1>
<p>Long text goes here</p>
</body>
</html>
预期的行为是,无论您滚动多少,灰色标题都会填满屏幕顶部并保持不变。在三星Android浏览器上,它似乎滚动出视图,然后在滚动完成后重新弹回到位,就像使用Javascript模拟固定定位一样,它不是。
修改 从评论和“答案”来看,似乎我可能不清楚我需要什么。我正在寻找一个元标记或css规则/黑客或javascript切换,关闭三星的破碎固定位置,并打开Android浏览器的工作固定位置。我不是在寻找一个Javascript解决方案,它将破坏的固定定位添加到没有任何支持的浏览器中;三星固定定位已经做到了,它只是看起来很愚蠢。
答案 0 :(得分:1)
也许你可以考虑一种不需要固定定位的不同方法......
添加滚动到段落元素而不是(默认)body元素。然后,您可以将标题元素放在标题下方。这将确保标题始终显示在页面顶部,但允许您滚动段落中的文本。
h1 {
height: 20px;
}
p {
position: absolute;
top: 20px;
left: 0px;
right: 0px;
bottom: 0px;
overflow-y: auto;
}
答案 1 :(得分:1)
我认为Android 2.2浏览器实现javascript的最佳方式。
您可以通过此链接找到更多信息。这是关于所有移动浏览器中的固定定位。
答案 2 :(得分:0)
在对布拉德弗罗斯特的文章的评论中,马修霍洛威提出了一个解决方案,就像Anita Foley的回答一样,但是有一个溢出的polyfill:auto,不支持。在这里查看:
答案 3 :(得分:-1)
这不是三星的Android破解浏览器,它的Android 2.2有破坏支持。 一般情况下,您可能知道位置:已修复,在某些情况下,在许多移动设备/系统中仍然很复杂。
要回答您的问题,没有“切换或元标记”将“打开Android浏览器的工作固定位置”。如果浏览器不支持某些东西,那么就没有“切换”来“切换”它。这不是一个功能。
否则,您可以使用模仿它的http://cubiq.org/iscroll-4。
(编辑:一些事实)
您建议SAMSUNG引入专有的hack或mod,打破Android浏览器中固定位置的其他工作支持。无论上述3点如何,这似乎都不太可能。
答案实际上很简单:有部分(错误)支持,你唯一的解决方案是使用一个替换或“修复”漏洞的javascript库。