Javascript 定义图元相对于浏览器窗口的位置

Javascript 定义图元相对于浏览器窗口的位置,javascript,Javascript,如何定义元素相对于浏览器窗口而不是文档的位置(左上角的坐标) 交叉浏览器兼容,纯javascript。无法立即完成。当前文档的视口是唯一可以相对定位对象的对象 您可以使用screen.availHeight属性查找屏幕的可用空间,但这不会提供浏览器左上角和文档左上角之间的空间(这是您需要的)。无法立即完成。当前文档的视口是唯一可以相对定位对象的对象 您可以使用screen.availHeight属性找到屏幕的可用空间,但这不会提供浏览器左上角和文档左上角之间的空间(这是您需要的)。浏览器窗口中的

如何定义元素相对于浏览器窗口而不是文档的位置(左上角的坐标)


交叉浏览器兼容,纯javascript。

无法立即完成。当前文档的视口是唯一可以相对定位对象的对象


您可以使用
screen.availHeight
属性查找屏幕的可用空间,但这不会提供浏览器左上角和文档左上角之间的空间(这是您需要的)。

无法立即完成。当前文档的视口是唯一可以相对定位对象的对象


您可以使用
screen.availHeight
属性找到屏幕的可用空间,但这不会提供浏览器左上角和文档左上角之间的空间(这是您需要的)。

浏览器窗口中的元素位置=(文档中的元素位置)-(文档已滚动的金额)

查找元素相对于文档的位置:


金额文档已滚动:(scrollLeft/scrollTop)

浏览器窗口中的元素位置=(文档中的元素位置)-(金额文档已滚动)

查找元素相对于文档的位置:


Amount文档已滚动:(scrollLeft/scrollTop)

我猜您所说的是“固定位置”元素,它们在滚动时保持在窗口的同一位置

这可以通过简单的CSS来实现,这应该是因为让浏览器来实现这一点要比使用JavaScript来实现更为流畅。如果需要元素在IE6上保持固定,那么只需要JS备份,IE6不支持这一点;新版本可以使用CSS,只要您处于标准模式(您应该处于标准模式)


#福{
位置:固定;
左:100px;顶:100px;宽:200px;高:200px;
背景:红色;
}
你好
if(document.body.className='browser=ie6'){
//简单回退`位置:固定`支持IE6。元素固定
//必须使用'left'和'top'的'px'值定位。
//
功能定位器(元件){
var x=parseInt(foo.currentStyle.left,10);
var y=parseInt(foo.currentStyle.top,10);
函数fixposition(){
foo.style.left=x+document.documentElement.scrollLeft+'px';
foo.style.top=y+document.documentElement.scrollTop+'px';
}
窗户。附件(‘在十字架上’,固定位置);
固定位置();
foo.style.position='absolute';
}
定位器(document.getElementById('foo');
}

我猜你说的是“固定位置”元素,当你滚动窗口时,这些元素保持在窗口的同一位置

这可以通过简单的CSS来实现,这应该是因为让浏览器来实现这一点要比使用JavaScript来实现更为流畅。如果需要元素在IE6上保持固定,那么只需要JS备份,IE6不支持这一点;新版本可以使用CSS,只要您处于标准模式(您应该处于标准模式)


#福{
位置:固定;
左:100px;顶:100px;宽:200px;高:200px;
背景:红色;
}
你好
if(document.body.className='browser=ie6'){
//简单回退`位置:固定`支持IE6。元素固定
//必须使用'left'和'top'的'px'值定位。
//
功能定位器(元件){
var x=parseInt(foo.currentStyle.left,10);
var y=parseInt(foo.currentStyle.top,10);
函数fixposition(){
foo.style.left=x+document.documentElement.scrollLeft+'px';
foo.style.top=y+document.documentElement.scrollTop+'px';
}
窗户。附件(‘在十字架上’,固定位置);
固定位置();
foo.style.position='absolute';
}
定位器(document.getElementById('foo');
}

@Pekka,但是有这样的属性,比如屏幕滚动的大小。@Kalinin你指的是什么属性?@Kalinin啊,现在我明白你的意思了!使用
position:fixed
即可,无需使用JavaScript。在IE6中不起作用。@Pekka,但是有这样的属性,比如屏幕滚动的大小。@Kalinin你指的是哪个属性?@Kalinin啊,现在我明白你的意思了!使用
position:fixed
即可,无需使用JavaScript。在IE6中不起作用。@bobince,很抱歉,我不需要在页面上固定元素。有关浏览器窗口的元素坐标仅对我是必需的。@bobince,对不起,我不需要在页面上固定元素。关于浏览器窗口的元素坐标仅对我是必需的。仅供记录:quirksmode函数不适用于固定位置的元素。@KooiInc,好的,我会记住它。仅供记录:quirksmode函数不适用于固定位置的元素。@KooiInc,好的,我会记住它。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
    <style type="text/css">
       #foo {
           position: fixed;
           left: 100px; top: 100px; width: 200px; height: 200px;
           background: red;
       }
    </style>
</head>
<!--[if lt IE 7]><body class="browser=ie6"><![endif]-->
<!--[if gte IE 7]><!--><body><!--<![endif]-->

    <div id="foo">Hello</div>

    <script type="text/javascript">
        if (document.body.className=='browser=ie6') {

            // Simple fallback `position: fixed` support for IE6. Elements to be fixed
            // must be positioned with `px` values for `left` and `top`.
            //
            function PositionFixer(element) {
                var x= parseInt(foo.currentStyle.left, 10);
                var y= parseInt(foo.currentStyle.top, 10);
                function fixposition() {
                    foo.style.left= x+document.documentElement.scrollLeft+'px';
                    foo.style.top= y+document.documentElement.scrollTop+'px';
                }
                window.attachEvent('onscroll', fixposition);
                fixposition();
                foo.style.position= 'absolute';
            }

            PositionFixer(document.getElementById('foo'));
        }
    </script>
</body></html>