当浏览器调整大小时刷新左边元素的位置
Refresh position left element when browser resize
我有以下JavaScript代码:
var x = $('.sidebar').offset().top,
offsetY = $('.left-columns').offset().left + $('.left-columns').width();
$(window).scroll(function(){
var scroll = $(this).scrollTop();
if(scroll >= x){
$('.sidebar').addClass('active1');
$('.active1').css({left:offsetY});
}else{
$('.sidebar').removeClass('active1');
$('.active1').css({left:0});
}
});
$(window).resize(function(){
x = $('.sidebar').offset().top,
offsetY = $('.left-columns').offset().left + $('.left-columns').width();
});
它工作得很好,但是当我调整浏览器窗口的大小时,问题开始于定位元素
我不知道你想要实现什么,但我猜你需要在窗口调整大小时重新定位.sidebar1
和.active1
元素。我的意思是,在resize处理程序上,执行与scroll处理程序完全相同的操作…
$(window).scroll(updatePosition);
$(window).resize(updatePosition);
function updatePosition(){
x = $('.sidebar').offset().top,
offsetY = $('.left-columns').offset().left + $('.left-columns').width(),
scroll = $(this).scrollTop();
if(scroll >= x){
$('.sidebar').addClass('active1');
$('.active1').css({left:offsetY});
}else{
$('.sidebar').removeClass('active1');
$('.active1').css({left:0});
}
}
你需要把你的条件在两个事件,它有问题,如果你只是把.scroll
事件,只是因为它不响应.resize()
事件,也如果你做一个单独的功能,将是可重用的:
function scrlResize(){
x = $('.sidebar').offset().top,
offsetY = $('.left-columns').offset().left + $('.left-columns').width(),
scroll = $(this).scrollTop();
if(scroll >= x){
$('.sidebar').addClass('active1');
$('.active1').css({left:offsetY});
}else{
$('.sidebar').removeClass('active1');
$('.active1').css({left:0});
}
}
$(window).scroll(scrlResize);
$(window).resize(scrlResize);
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 如何在Javascript中添加忽略父元素左边距和填充的子元素
- 要插入二叉树的第一个元素,请将其放在左边还是右边
- 我想在单击图像时更改 ul 元素的“左边距”
- 在li'上循环;s,并在每个元素的左边进行填充
- 设置元素的左边距和宽度以匹配另一个元素的边距和大小
- 当第一个元素被选中时,工具提示不显示第一个元素的左边
- 当元素经过某个左边位置时显示警告
- 同位素/砌体+ json饲料加载所有元素到左边
- 改变各种元素的样式.左边和上面用脚本
- 当浏览器调整大小时刷新左边元素的位置