[英]Overlaying one div over another, but not knowing the size of the div
我试图把一个div放在另一个上面。 如果您知道div的尺寸,这非常简单。
解决方法: 如何将一个div叠加到另一个div上
那么,这是我的HTML:
<div class="container">
<div class="overlay"></div>
<div class="content"></div>
</div>
就我而言,我不知道“内容”或“容器”div的确切尺寸。 这是因为我无法控制div中的任何内容(我们正在为第三方开发人员提供可扩展的应用程序)。
在jsFiddle上查看我的示例叠加层应完全覆盖内容。 宽度100%,高度100%。 但是,这不起作用,因为在我的例子中我绝对定位了叠加层。
一种解决方案是使用JavaScript来获取内容div的大小,然后设置叠加层的大小。 我不太喜欢这个解决方案,因为如果没有指定图像大小,你需要等到图像加载并重新计算div的大小。
有没有办法在CSS中解决这个问题?
您可以将位置设置为绝对值,然后将所有4个定位值设置为0px
,这将使框展开。 在这里看一个演示: http : //jsfiddle.net/6g6dy/
这样,如果你想在覆盖层或容器上填充(就像你使用实际的height
和width
值那样),你不必担心重新计算东西,因为它总是会调整到盒子的外部尺寸。
这是不可能的,因为:
我用JavaScript *解决了这个问题。 例如。
function resizeOverlay() {
$('.overlay').css({
width: $('.content').width()
height: $('.content').height()
});
}
$('.content').find('img').on('load', resizeOverlay);
*代码未经测试。
看这个演示: http : //jsfiddle.net/rathoreahsan/kEsbx/
您是否正在尝试按上述演示中所述进行操作?
CSS:
#container {
position: relative;
}
.overlay,
.content{
display:block;
position: absolute;
top: 0;
left: 0;
}
.overlay{
z-index: 10;
background: #ccc;
}
嘿,你看起来像这样: http : //tinkerbin.com/Vc4RkGgQ
CSS
.container {
position:relative;
background:blue;
color:white;
}
.content {
position:absolute;
top:0;
left:15px;
background:red;
color:yellow;
}
我不知道你究竟想做什么,但这可能会奏效:
container
必须是relative
:静态的东西
overlay
和content
是absolute
:在第一个非静态父级中移动顶部/左侧; 无流量。
将相同的top/left
设置为上部和上部元素的较高z-index
。
没有JavaScript,你确实可以做到这一点。 您的问题是#container
元素相对于整个页面具有100%的宽度。 要解决此问题,您可以:
a)绝对定位,
#container {
position: absolute;
}
b)让它漂浮或
#container {
float: left;
}
c)使其显示为表格单元格
#container {
display: table-cell;
}
上面的一个就够了,你不需要全部申请。 此外,您不应该绝对定位.content
因为这会阻止#container
具有相同的宽度/高度。
如果您在设置高度后担心图像加载,您可以继续并在包含div中设置图像的尺寸并使用padding-bottom hack 。 这样,当浏览器在页面上绘制时,它知道图像在加载之前有多大。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.