div 忽略背景图片的高度
div ignoring height with background image
我有一个问题,我的 div 没有像我认为的那样响应。我创建了一个 JSFiddle 以使其更易于理解。
现在是 html 标记:
<div class="img-hack">
<img src="http://lorempixel.com/900/250/" class="img-top" />
<div class="left-bg"></div>
<div class="right-bg"></div>
</div>
这里是对应的css:
.img-hack {
display:block;
height:250px;
}
.img-top {
margin: 0 auto;
display: block;
max-width: 100%;
padding: 0;
}
.left-bg {
background-image: url("http://lorempixel.com/20/250/");
background-repeat: repeat-x;
background-color: red;
position: absolute;
display:inline-block;
height: 100%;
width: 50%;
top:0;
left:0;
z-index: -1;
}
.right-bg {
background-image: url("http://dummyimage.com/20x250/8f388f/fff");
background-repeat: repeat-x;
background-color: blue;
position: absolute;
display:inline-block;
height: 100%;
width: 50%;
max-height: 100%;
top:0;
right:0;
z-index: -2;
}
据我了解,right-bg 和 left-bg 的父项是 img-hack。所以将高度设置为 100% 应该使它们大小相同。 但是它不是。两个 div 都向下扩展到页面的末尾(参见 Fiddle:背景图像停止,但 div(蓝色和红色)向下扩展到最后)
有人有想法吗?
因为.left-bg
/.right-bg
元素是绝对定位的。因此,它们会从正常流程中移除,并且不会考虑其父项。
在您的情况下,您需要做的就是相对定位父元素 .img-hack
。
在这样做时,绝对定位的子元素相对于父元素定位相对,因此它们占据它的高度。
.img-hack {
display: block;
height: 250px;
position: relative;
}
absolute
把你的页面弄乱了:你想要这样的东西吗?
<div class="img-hack">
<div class="left-bg"></div>
<div class="right-bg"></div>
<div class="imagewrapper">
<img src="http://lorempixel.com/900/250/" class="img-top" />
</div>
</div>
CSS:
.img-hack {
display:block;
height:250px;
background-color: lime;
box-sizing: border-box;
}
.imagewrapper {
position:absolute;
width:100%;
text-align: center;
}
.img-top {
margin: 0 auto;
display: block;
}
.left-bg {
background-image: url("http://lorempixel.com/20/250/");
background-repeat: repeat-x;
background-color: red;
height: 100%;
width: 50%;
float:left;
}
.right-bg {
background-image: url("http://dummyimage.com/20x250/8f388f/fff");
background-repeat: repeat-x;
background-color: blue;
height: 100%;
width: 50%;
max-height: 100%;
float:right;
}
我有一个问题,我的 div 没有像我认为的那样响应。我创建了一个 JSFiddle 以使其更易于理解。
现在是 html 标记:
<div class="img-hack">
<img src="http://lorempixel.com/900/250/" class="img-top" />
<div class="left-bg"></div>
<div class="right-bg"></div>
</div>
这里是对应的css:
.img-hack {
display:block;
height:250px;
}
.img-top {
margin: 0 auto;
display: block;
max-width: 100%;
padding: 0;
}
.left-bg {
background-image: url("http://lorempixel.com/20/250/");
background-repeat: repeat-x;
background-color: red;
position: absolute;
display:inline-block;
height: 100%;
width: 50%;
top:0;
left:0;
z-index: -1;
}
.right-bg {
background-image: url("http://dummyimage.com/20x250/8f388f/fff");
background-repeat: repeat-x;
background-color: blue;
position: absolute;
display:inline-block;
height: 100%;
width: 50%;
max-height: 100%;
top:0;
right:0;
z-index: -2;
}
据我了解,right-bg 和 left-bg 的父项是 img-hack。所以将高度设置为 100% 应该使它们大小相同。 但是它不是。两个 div 都向下扩展到页面的末尾(参见 Fiddle:背景图像停止,但 div(蓝色和红色)向下扩展到最后)
有人有想法吗?
因为.left-bg
/.right-bg
元素是绝对定位的。因此,它们会从正常流程中移除,并且不会考虑其父项。
在您的情况下,您需要做的就是相对定位父元素 .img-hack
。
在这样做时,绝对定位的子元素相对于父元素定位相对,因此它们占据它的高度。
.img-hack {
display: block;
height: 250px;
position: relative;
}
absolute
把你的页面弄乱了:你想要这样的东西吗?
<div class="img-hack">
<div class="left-bg"></div>
<div class="right-bg"></div>
<div class="imagewrapper">
<img src="http://lorempixel.com/900/250/" class="img-top" />
</div>
</div>
CSS:
.img-hack {
display:block;
height:250px;
background-color: lime;
box-sizing: border-box;
}
.imagewrapper {
position:absolute;
width:100%;
text-align: center;
}
.img-top {
margin: 0 auto;
display: block;
}
.left-bg {
background-image: url("http://lorempixel.com/20/250/");
background-repeat: repeat-x;
background-color: red;
height: 100%;
width: 50%;
float:left;
}
.right-bg {
background-image: url("http://dummyimage.com/20x250/8f388f/fff");
background-repeat: repeat-x;
background-color: blue;
height: 100%;
width: 50%;
max-height: 100%;
float:right;
}