如何使用jquery获取元素位置
我正在尝试将侧边栏的绝对位置更改为固定位置。这个想法是,边栏将是绝对的,直到它接触到页脚,然后它将是固定的。因此,下面的代码在我的大显示器上运行良好,但在我的小显示器上,边栏在碰到页脚之前就被修复了,我假设在更大的显示器上,边栏会碰到页脚,而下面的代码不会触发如何使用jquery获取元素位置,jquery,css,scroll,Jquery,Css,Scroll,我正在尝试将侧边栏的绝对位置更改为固定位置。这个想法是,边栏将是绝对的,直到它接触到页脚,然后它将是固定的。因此,下面的代码在我的大显示器上运行良好,但在我的小显示器上,边栏在碰到页脚之前就被修复了,我假设在更大的显示器上,边栏会碰到页脚,而下面的代码不会触发 $(document).scroll(function() { if ($(this).scrollTop() < 5953) { $('.hanger').addClass(' hanger sidebar
$(document).scroll(function() {
if ($(this).scrollTop() < 5953) {
$('.hanger').addClass(' hanger sidebar');
$('.xoxo').removeClass('xoxo2 ')
$('.xoxo').css("position", "fixed");
}
})
$(文档)。滚动(函数(){
if($(this.scrollTop()<5953){
$('.hanger').addClass('hanger边栏');
$('.xoxo').removeClass('xoxo2'))
$('.xoxo').css(“位置”,“固定”);
}
})
那么,有没有一种方法可以动态获取数字5953
?我试过:
var value=$('#footer').scrollTop()
和var value=$('#footer').offset().top
然后传递值而不是固定数字
这里是演示-如果你的显示器比我的大或小,你会看到边栏不能正常工作
谢谢这是你要找的吗
var value = $(window).height() + $(window).scrollTop();
var elementTop = $('#pagefooter').offset().top;
if( value >= elementTop ) {
$('.hanger').removeClass('sidebar');
$('.xoxo').addClass('xoxo xoxo2')
$('.xoxo').css("position","absolute");
}
else if( value < elementTop ) {
$('.hanger').addClass(' hanger sidebar');
$('.xoxo').removeClass('xoxo2 ')
$('.xoxo').css("position","fixed");
}
var value=$(窗口).height()+$(窗口).scrollTop();
var elementTop=$('#pagefooter').offset().top;
如果(值>=elementTop){
$('.hanger').removeClass('sidebar');
$('.xoxo').addClass('xoxo xoxo2'))
$('.xoxo').css(“位置”、“绝对”);
}
else if(值
我在本地测试了它,不管你的窗口有多大,它似乎都能工作。它基本上是将窗口大小添加到滚动顶部,以查看页脚是否已移动到视口中
2注
当在移动设备(如iOS)上滚动时,滚动事件在所有动力结束时触发。因此,您将无法看到桌面上的平滑移动
并且页脚的id不是footer
,而是pagefooter
:) 要访问页脚元素,可以使用元素id或元素
例子:
- 要访问页脚元素:
$('footer')
- 要访问页脚id:
$(“#pagefooter”)
只要这样做,就可以找到当前的页脚位置
var currentPosition = $('footer').position().top - $(window).height();
我准备了一个粗略的来解释你。上面的$(“#footer').offset()。top
路线应该很好,并且是合乎逻辑的。这就是您当前的代码所使用的吗?在我的显示器上,您链接到的示例工作正常。@Utkanos否我正在使用5953的值,这就是为什么它适用于您。其中,作为offset().top将返回7072,这不会在all@Aurel你能告诉我当你期望7072是5953时,你收到的是多大的视窗吗?我只能得到7072@1024/768,而5953肯定还不接近#在这个大小上应该是什么。@Ohgod为什么我得到的是视口大小:1267 x 985和窗口大小:1267 x1080@aurel当前位置我添加了我的。非常感谢。它似乎在所有以前不起作用的情况下都起作用。