尝试将div定位在移动视口底部,而不是浏览器底部

3
我有一个div,我想将其定位在移动浏览器(Safari + Android)视口的底部。目前,我的div在Windows上的所有前五个浏览器(IE,FF,Saf,Chrome,Opera)中都固定在底部,但那是“浏览器窗口”,而不是“视口”。
在移动设备上(我只尝试过带Android 2.2的三星Galaxy Tab),div出现在页面底部,但是如果您捏/缩放以进行缩放,则固定的div不会跟随。它停留在视口外面。
我特别使用position:fixed和bottom:0 CSS属性来保持位置,正如我所说,在非触摸浏览器上运行良好。
我是否需要通过钩入touchmove事件并查看(a)缩放级别,(b)视口位置和(c)滚动位置来将div保持在我想要的位置(在视口底部)?
我使用JavaScript将div注入页面而不是使用内联CSS。好处是我不必担心怪癖模式(因为我只针对Webkit浏览器),所以这是一个积极的事情。
我无法设置doctype,使用内联CSS或内联DIV。一切都必须通过JavaScript动态添加。以下是我在测试中已经完成的内容:
var mydiv=document.createElement("div");
mydiv.style.position="fixed";
mydiv.style.bottom="0px";
mydiv.id="floater";
mydiv.style.width="400px";
mydiv.style.height="50px";
mydiv.style.backgroundColor="yellow";
if(document.body)document.body.appendChild(mydiv);
document.getElementById("floater").innerHTML="HELLO";

可能值得一看jQuery MobilejQTouch,看看它们如何保持工具栏固定。您还可以使用@media根据客户端的屏幕设置应用不同的CSS。 - Brad Christie
谢谢 Brad 提供的两个 jQ~ 小技巧,我正在研究它们。但是你说的 "@media" 是什么意思? - Dee2000
Brad所指的是媒体查询:http://www.smashingmagazine.com/2010/07/19/how-to-use-css3-media-queries-to-create-a-mobile-version-of-your-website/ 绝对值得一看! - Dan
2个回答

3

这是另一个基于iScroll的例子,它似乎(对我来说)都是关于如何在div内滚动。 - Dee2000
@Dee2000,你误解了。Safari Webkit不支持position:fixed,它也不会滚动网站,而是滚动窗口。这些脚本(链接中有两个,你忽略了Pastry Kit)重新创建了滚动和其他功能,以便你可以实现JavaScript版本的position:fixed - Levi Morrison
谢谢@Levi,我已经下载了糕点套件并会去看一下。不过我刚刚得到好消息,原来我们不需要这个功能了。如果它再次出现,希望会有一个漂亮的新标准方式来实现它 :) - Dee2000

0

看看 iScroll
http://cubiq.org/iscroll-4

它似乎是目前较好的选择之一 - 绝对值得研究。

我曾经使用过 iScroll 的旧版本,但不幸的是有一些问题没有达到标准,所以我们不得不放弃这个想法。然而,Cubiq 的团队刚刚发布了 iScroll 的 v4 版本,承诺解决了许多在旧版本中存在的问题。

祝你好运!


在我发帖之前,我曾经看过iScroll。它似乎只是关于创建一个允许你在div内滚动内容的内容。我不想要“滚动我的div”,我希望我的div保持在固定可见的位置,而不是被滚动。或者,我错了吗? - Dee2000
iScroll的工作方式是允许您设置一个“可滚动”区域,同时使页眉和/或页脚固定。因此,“可滚动”区域是用户可以在其中滚动的视口,而页眉和/或页脚则保持其固定位置。它与桌面网站的工作方式不同,因为您不会将页脚设置为固定,而是设置可滚动的区域。 - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接