Javascript jQuery:定位一个div,用溢出填充容器div的可见部分
我很难让覆盖显示在另一个div的可见部分的顶部。问题是,容器div已溢出,如果用户已在该div内滚动,覆盖将不会覆盖滚动部分。我的问题是:如何使用jQuery定位一个div以填充另一个div的可见部分?或者,有没有一种方法可以仅使用CSS来实现这一点 ,以下是标记: HTML 和JS(在DOM就绪时加载)Javascript jQuery:定位一个div,用溢出填充容器div的可见部分,javascript,jquery,css,positioning,Javascript,Jquery,Css,Positioning,我很难让覆盖显示在另一个div的可见部分的顶部。问题是,容器div已溢出,如果用户已在该div内滚动,覆盖将不会覆盖滚动部分。我的问题是:如何使用jQuery定位一个div以填充另一个div的可见部分?或者,有没有一种方法可以仅使用CSS来实现这一点 ,以下是标记: HTML 和JS(在DOM就绪时加载) 您可以使用DOM属性scrollHeight: $('div.container').click(function(){ $('div.overlay').css("height",
您可以使用DOM属性
scrollHeight
:
$('div.container').click(function(){
$('div.overlay').css("height", this.scrollHeight).toggle();
});
编辑: 为了仅覆盖可见部分,可以使用以下方法:
$('div.container').click(function(){
$('div.overlay').css({
top: this.scrollTop,
height: $('div.container').css("height")})
.toggle();
});
您可以使用DOM属性
scrollHeight
:
$('div.container').click(function(){
$('div.overlay').css("height", this.scrollHeight).toggle();
});
编辑: 为了仅覆盖可见部分,可以使用以下方法:
$('div.container').click(function(){
$('div.overlay').css({
top: this.scrollTop,
height: $('div.container').css("height")})
.toggle();
});
为了达到你的要求,我做了以下几点 CSS
.container {
/* setting this to relative means
overlay is positioned relative to its parent */
position: relative;
}
.overlay {
/* element taken out of normal flow */
position: absolute;
/* removed bottom and right properties otherwise
updating top property has no effect */
height: 100px;
/* When scrollbar appears width decreases to less than
100px hence having to set to 100% to allow automatic calculation */
width: 100%;
}
JavaScript
现在,我使用jQuery适当地设置top属性
$(".container").scroll( function( ) {
$(".overlay").css({ top: $(this).scrollTop( ) });
});
小提琴为了达到你的要求,我做了以下几件事 CSS
.container {
/* setting this to relative means
overlay is positioned relative to its parent */
position: relative;
}
.overlay {
/* element taken out of normal flow */
position: absolute;
/* removed bottom and right properties otherwise
updating top property has no effect */
height: 100px;
/* When scrollbar appears width decreases to less than
100px hence having to set to 100% to allow automatic calculation */
width: 100%;
}
JavaScript
现在,我使用jQuery适当地设置top属性
$(".container").scroll( function( ) {
$(".overlay").css({ top: $(this).scrollTop( ) });
});
小提琴假设您真的只想覆盖可见部分:
div.overlay{
显示:无;
位置:绝对位置;
排名:0;
左:0;
右:0;
高度:100px;/*固定高度,由CSS或javascript设置,无底部*/
背景:#F00;
不透明度:0.5;
}
$('div.container')。单击(函数(){
$('div.overlay').css('top',$('div.container').scrollTop()+'px').toggle();
});
这会将覆盖层定位到容器可见部分的顶部。假设您真的只想覆盖可见部分:
div.overlay{
显示:无;
位置:绝对位置;
排名:0;
左:0;
右:0;
高度:100px;/*固定高度,由CSS或javascript设置,无底部*/
背景:#F00;
不透明度:0.5;
}
$('div.container')。单击(函数(){
$('div.overlay').css('top',$('div.container').scrollTop()+'px').toggle();
});
这会将覆盖层定位到容器可见部分的顶部。这会填充整个div,我想他只是想填充可见部分。嗯,是的,我也不是很确定:但由于所有内容都已覆盖(除了滚动条,但我认为这不是问题)…我希望覆盖层完全覆盖可见部分,但这是一个很好的后备策略。我暂时不回答这个问题。谢谢@安德鲁,你把可视部分叫什么?有滚动条吗?不,滚动条不需要盖上。我的意思是指当前可见的div内容区域。它填充了整个div,但我想他只是想填充可见部分。嗯,是的,我也不是很确定:但是由于所有内容都被覆盖(除了滚动条,但我认为这不是问题)…我更希望覆盖层完全覆盖可见部分,但这是一个很好的后备策略。我暂时不回答这个问题。谢谢@安德鲁,你把可视部分叫什么?有滚动条吗?不,滚动条不需要盖上。我的意思是div当前可见的内容区域。这很好,但不幸的是,我正在处理的真实世界容器是流体布局的一部分,必须绝对定位。正如我所展示的,容器标记和CSS几乎被卡住了。这很好,但不幸的是,我正在处理的真实世界的容器是流动布局的一部分,必须绝对定位。正如我所展示的,容器标记和CSS几乎被卡住了。