Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据页面滚动更改div位置_Javascript_Mootools - Fatal编程技术网

Javascript 根据页面滚动更改div位置

Javascript 根据页面滚动更改div位置,javascript,mootools,Javascript,Mootools,我有下面的代码,一旦元素scrollTop大于一个数字,就会将div的位置更改为fixed。我试图修改这个脚本或者找到一个不同的解决方案,这样div将在一个范围内滚动,并在某个点停止滚动(这样div就不会离开页面或者与页脚元素重叠) 我不知道是否正确的方法是,如果scrollTop大于150,那么位置=固定,如果scrollTop大于600,那么位置返回到绝对位置,或者是否有更好的方法,比如从底部的距离 我使用MooTools,而不是jQuery。我知道有一些jQuery选项/插件可以做到这一点

我有下面的代码,一旦元素scrollTop大于一个数字,就会将div的位置更改为fixed。我试图修改这个脚本或者找到一个不同的解决方案,这样div将在一个范围内滚动,并在某个点停止滚动(这样div就不会离开页面或者与页脚元素重叠)

我不知道是否正确的方法是,如果scrollTop大于150,那么位置=固定,如果scrollTop大于600,那么位置返回到绝对位置,或者是否有更好的方法,比如从底部的距离

我使用MooTools,而不是jQuery。我知道有一些jQuery选项/插件可以做到这一点。提前感谢

window.onscroll = function()
{
    if( window.XMLHttpRequest ) { // IE 6 doesnt implement position fixed nicely...     
        if (document.documentElement.scrollTop > 150) {
            $('tabber').style.position = 'fixed';
            $('tabber').style.top = '0';

        } else {

            $('tabber').style.position = 'absolute'; 
            $('tabber').style.top = 'auto';


        }
    }
}

上面的脚本在很多方面都是错误的

不要使用
window.onscroll
而是
window.addEvent(“滚动”,function(){})

缓存选择器。在元素不变的情况下,在每个滚动条上使用
$(“tabber”)
3次代价高昂

只需执行
var tabber=$(“tabber”)
并引用它即可

你不需要这么做

$("tabber").style.position  = ... 
$("tabber").style.top  = ... 
做:

有mootools插件可用于此,例如David Walsh的scrollSpy:

它允许您在到达各种滚动目的地或事件时设置脚本化事件,请参见示例

或者你可以自己写,例如,这花了我15分钟:
(观察)-当达到页脚的20像素时,它停止被修复。如果再次向上滚动,则返回到修复状态。

上述脚本在许多级别上都是错误的

不要使用
window.onscroll
而是
window.addEvent(“滚动”,function(){})

缓存选择器。在元素不变的情况下,在每个滚动条上使用
$(“tabber”)
3次代价高昂

只需执行
var tabber=$(“tabber”)
并引用它即可

你不需要这么做

$("tabber").style.position  = ... 
$("tabber").style.top  = ... 
做:

有mootools插件可用于此,例如David Walsh的scrollSpy:

它允许您在到达各种滚动目的地或事件时设置脚本化事件,请参见示例

或者你可以自己写,例如,这花了我15分钟:
(手表)-当达到页脚的20像素时,它将停止被修复。如果再次向上滚动,它将返回到修复状态。

为什么不将div的位置设置为“修复”,并根据需要将属性设置为左上方?他这样做是因为ie6无法进行修复。耶,我还在寻找这样一种效果,即页面下方一半的div是静止的查看器滚动页面,直到该div到达窗口顶部,然后它在窗口顶部保持可见,而不是从顶部滚动。上面的脚本实现了这一点,问题是我需要该div在到达某个点后停止被修复。因此,我似乎无法实现的效果是"停止在高度上固定。为什么不将div的位置设置为固定,并根据需要将属性设置为左上方?他这样做是因为ie6无法进行固定。耶,我也在寻找这样一种效果,即当浏览者滚动页面时,位于页面下方一半的div保持静止,直到该div到达窗口顶部,然后它保持可见在窗口顶部执行le操作,而不是从窗口顶部滚动。上面的脚本实现了这一点,问题是我需要div在达到某个点后停止被修复。因此,我似乎无法实现的效果是“停止固定高度。谢谢Dimitar,我将查看您的演示。我已经使用scrollspy根据位置显示和隐藏了一些div,所以我也将尝试使用它。谢谢Dimitar,我将查看您的演示。我已经使用scrollspy根据位置显示和隐藏了一些div,所以我也将尝试使用它。