У меня есть изображение и текст описания для изображения ниже. Я хочу, чтобы изображение занимало столько места, сколько нужно, чтобы использовать полную ширину div, но не больше, чем доступно. Если остается вертикальное пространство, оно должно оставаться внизу.
Я попытался сделать это с помощью flexbox:
#image{
max-width: 100%;
margin-left: auto;
margin-right: auto;
display: block;
flex-grow: 99;
flex-shrink: 99;
}
#flex-box{
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
align-content: center;
text-align: center;
}
<div id="flex-box">
<img id="image" src="https://material.angular.io/assets/img/angular-material-logo.svg">
<h1>A header</h1>
<p>A paragraph</p>
<p>Another paragraph</p>
</div>
Проблемы:
- Появляется полоса прокрутки, поскольку экран выходит за вертикальную линию, что нежелательно.
- Кроме того, изображение только уменьшается, но не увеличивается.
Еще одна попытка с сеткой css была следующей:
#images {
width: 100%;
max-height: 100%;
object-fit: scale-down;
}
#grid {
display: grid;
width: 100%;
height: 100%;
grid-template-rows: 1fr auto auto auto;
text-align: center;
justify-items: center;
}
#image-container {
width: 100%;
}
<div id="grid">
<div id="image-container">
<img id="image" src="https://material.angular.io/assets/img/angular-material-logo.svg">
</div>
<h1>A header</h1>
<p>A parapraph</p>
<p>Another paragraph</p>
</div>
Проблемы здесь:
- Изображение снова не масштабируется вверх.
- Содержание растянуто вертикально по экрану.
Что было бы необходимо для достижения свойств?