【发布时间】:2018-12-20 21:40:47
【问题描述】:
我正在开发一个圣诞礼物网站,上面只有两个元素,我想拥有这样的元素:
底部元素是一个图像,它应该与视口的底部对齐。它应该按比例调整大小,并占用视口宽度的最大 90% 和视口高度的最大 70%。上面的元素是一个文本元素,我希望它填充剩余的垂直空间并将该文本水平和垂直对齐到中心。
在这种情况下,如果底部元素占用70vh,解决方案很简单,上部元素应该占用30vh。但是如果底部元素比较小,上框的高度应该是(视口高度-上元素高度)。
这是我目前所拥有的。
body {
background-image: url('https://i.imgur.com/sWfZ8nq.png');
background-repeat: repeat;
}
.fg {
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
max-height: 100%;
}
.fg div {
display: flex;
align-items: center;
position: absolute;
width: 100%;
height: 100%;
max-height: 30%;
}
.fg span {
width: 100%;
text-align: center;
color: white;
font-size: 10vmin;
letter-spacing: 3px;
text-shadow: 2px 2px 2px green,
2px -2px 2px green,
-2px 2px 2px green,
-2px -2px 2px green;
}
.fg img {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
max-height: 70%;
max-width: 90%;
}
<html>
<head>
<title>HNY</title>
<meta charset="utf-8">
</head>
<body>
<div class="fg">
<div>
<span>Happy new year!</span>
</div>
<img src="https://i.imgur.com/Ql8A585.png"/>
</div>
</body>
</html>
这适用于底部元素高度 = 70vh,例如分辨率 1920 x 1080。但如果我翻转它,即切换到 1080 x 1920,上框只需要 30vh,但我希望它填满空间。有什么建议吗?
【问题讨论】:
-
抱歉,这是一个不正确的副本,但您仍然可以使用弹性框来完成此操作
-
我的图片看起来不合适:jsfiddle.net/7hkfmayx/2
-
是的,它使用对象适合来调整图像大小,但保持它的纵横比。如果您想保留完整图像,可以尝试使用
contain而不是封面:jsfiddle.net/7hkfmayx/3(但如果您使用它,则需要为 ie 使用 polyfill) -
您的解决方案没有将底部元素与视口底部对齐(对不起,我忘了在我的问题中提及它)。除此之外,您的图像框的静态高度为 70vh,但我希望它是可变的,最大限制为 70vh i.imgur.com/0o9jk81.png
标签: html css responsive-design