标题很容易描述。请记住,如示例所示,容器元素应该具有自己的宽度和高度。尽管此示例是用flexbox编写的,但我不介意使用其他方法,只要它是纯净的HTML / CSS。
我觉得这应该是微不足道的,但是我一直在寻找一段时间,包括有关Stack Overflow的相关答案,我似乎找不到任何令人满意的答案。
body {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
img {
margin-left: 8px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div>
<h1>Lorem Ipsum</h1>
<h2>Dolor Sit Amet, here's some extra text</h2>
</div>
<img src="https://lorempixel.com/g/64/64/" />
</body>
</html>
答案 0 :(得分:4)
如果再添加一些div,则可以。
.wrapper {
display: flex;
align-items: stretch;
}
img {
height: 100%;
}
<body>
<div class="wrapper">
<div>
<h1>Lorem Ipsum</h1>
<h2>Dolor Sit Amet, here's some extra text</h2>
</div>
<div class="img-wrap">
<img src="https://lorempixel.com/g/64/64/">
</div>
</div>
</body>
答案 1 :(得分:1)
您可以将两个兄弟姐妹放入父项<div>
中,给父项标签设置一个高度,然后给<img/>
标签项设置一个100%的高度。这样,它将缩放到父盒的高度。
例如,
<div style="height: 100px;">
<div>
<h1>Lorem Ipsum</h1>
<h2>Dolor Sit Amet, here's some extra text</h2>
</div>
<img style="height: 100%;" />
</div>
类似的东西应该起作用。
答案 2 :(得分:0)
正确地将图像构造为div并应用flex
属性应该可以解决问题。
<body>
<div class="wrapper">
<div>
<h1>Lorem Ipsum</h1>
<h2>Dolor Sit Amet, here's some extra text</h2>
</div>
<div class="img-wrap flex-1">
<img src="https://lorempixel.com/g/64/64/">
</div>
</div>
</body>
.wrapper {
display: flex;
align-items: stretch;
}
img {
height: 100%;
}
.flex-1{
flex: 1;
}
答案 3 :(得分:0)
您可以简单地从父(height: 100vh
)中删除body
,然后在图像上将align-self
设置为stretch
。但这不会保留图像的长宽比。
更好的方法是使用网格:
body {
margin: 0;
padding: 0;
width: 100%;
display: grid;
grid-template-columns: 1fr max-content;
grid-template-rows: auto auto;
justify-content: center;
align-items: center;
}
h2 {
grid-row: 2;
}
img {
height: 100%;
grid-column: 2;
grid-row: 1 / 3;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Lorem Ipsum</h1>
<h2>Dolor Sit Amet, here's some extra text</h2>
<img src="https://lorempixel.com/g/64/64/" />
</body>
</html>