我希望<img>
的高度是其父代高度的100%
,同时按比例缩放<img>
的宽度。当<img>
具有绝对位置并按预期工作时,这很容易做到。
*, *:before, *:after { box-sizing: border-box;}
body { margin: 0; }
.hero {
border: 2px solid red;
position: relative;
min-height: 360px;
}
.content {
/* Simulate content height */
/* height: 500px; */
}
.background {
border: 2px solid #2EA800;
}
img {
border: 2px solid #0083FF;
position: absolute;
top: 0;
right: 0;
height: 100%;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Example 1</title>
</head>
<body>
<div class="hero">
<div class="content">
Hey there
</div>
<div class="background">
<img src="https://via.placeholder.com/200x150" alt="">
</div>
</div>
</body>
</html>
但是,当它位于位置绝对的父级(图像容器)<div>
中时,父级的宽度计算不正确。
*, *:before, *:after { box-sizing: border-box;}
body { margin: 0; }
.hero {
border: 2px solid red;
position: relative;
min-height: 360px;
}
.content {
/* Simulate content height */
/* height: 500px; */
}
.background {
border: 2px solid #2EA800;
}
.background {
position: absolute;
top: 0;
right: 0;
height: 100%;
}
img {
border: 1px solid red;
height: 100%;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Example 2</title>
</head>
<body>
<div class="hero">
<div class="content">
Hey there
</div>
<div class="background">
<img src="https://via.placeholder.com/200x150" alt="">
</div>
</div>
</body>
</html>
这仅在FireFox中发生。在Chrome中,可以按预期正确计算图像容器的宽度。
答案 0 :(得分:0)
希望这会有所帮助。
.background img{
float:right;
}
答案 1 :(得分:0)
我刚刚遇到了Firefox的问题,这是一场噩梦。
尽管如此,我还是设法解决了它。
在我的情况下,我使用的图像叠加层必须为100%的高度,然后使用div渐变来填充屏幕上的其余空间。由于外部绝对div保持图像的大小并自行调整,因此在chrome中效果很好。 Firefox的表现就像图像是全高一样,因此,我需要坐在图像旁边以进行明显覆盖的渐变无法使用。
Praveen提出的浮动建议使我走上了正轨,所以谢谢Praveen!
我已经通过在父容器上使用flex解决了这个问题,然后我将自己的项目证明为flex end,因此它们都正确地堆叠在正确的位置。写下来听起来很简单,但这是一个令人沮丧的错误!!!