【问题标题】:Emulate fixed right position模拟固定的正确位置
【发布时间】:2013-07-01 16:33:34
【问题描述】:

基本上我正在做的是监听器,它检查水平滚动是否发生了变化。如果滚动发生了变化,那么它将重新定位 div,因此它始终位于视口的左上角。使用getScroll() 值非常容易。

但是我怎样才能从左到右改变呢?问题是正确的: 0 不起作用,因为它使 div 几乎位于屏幕中间,并且通过滚动或缩放,它会留在那里(Windows Phone 7 不支持position: fixed!)也许有人遇到过类似的问题并找到了解决方法或计算方法吗?

为什么body总是1024px(和视口大小一样)?有没有办法获得网站的总大小?

到目前为止,我使用的唯一变量是: window.getScroll().xdocument.body.scrollWidthwindow.innerWidth

body {
    width: 2000px;
    height: 2000px;
}
#rightDiv { 
    right: 0px;
    top: 0px;
    position: fixed;
}

<body>
<div id='rightDiv'>
    I am in the right-top corner    </div>
</body>

【问题讨论】:

  • 如果您不提供任何htmlcss,我们只能猜测。
  • 已添加代码。我不知道这到底应该有什么帮助。

标签: javascript css windows-phone-7 internet-explorer-9 mootools


【解决方案1】:

这可以通过使用 jQuery 来完成:

$(function(){
    function moveDiv(){
        var divSize = $("#rightDiv").width();
        var windowSize = $("window").width();
        var leftPos = windowSize - divSize;
        var topPos = $("window").scrollTop();
        $("#rightDiv").css({"position":"absolute", "left":leftPos, "top":topPos});
    }
    moveDiv();
    $("window").scroll(function(){
        moveDiv();
    }
    );
    $("window").resize(function(){
        moveDiv();
    }
    );
});

这会将您的 div 设置为在文档加载时将自己定位到屏幕右侧,然后在屏幕滚动时,它会重新计算位置。

基本上,我们会根据 div 的宽度和窗口的大小进行计算,以确定将 div 放置在右上角的左侧位置。即使它是从左侧定位的,它仍然会产生位于屏幕右上角的效果。如果您需要任何说明,请告诉我。

【讨论】:

  • 不幸的是,这在 IE mobile 上不起作用。 windowSize 始终为 1024px,无论实际页面宽度有多大(页面是不负责任的网页设计。)
  • 澄清一下,当您提到 IE mobile 时,您指的是内置的 windows phone 浏览器,对吗?
  • 我说的是 Windows Phone 7 上的 Internet Explorer 9 :)
猜你喜欢
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
  • 1970-01-01
相关资源
最近更新 更多