CSS: как распространить ширину от фотографии до родительского или прародительского элемента?
Я собираю галерею изображений с подписанными изображениями различных пропорций. Для единообразия я хочу, чтобы браузер отображал каждое изображение на одной высоте, вычисляя ширину, чтобы сохранить соотношение сторон. Но я не могу понять, как распространить эту ширину на ширину заголовка.
Мой HTML выглядит так:
<div class="photo">
<a href="images/name.jpg">
<img src="thumbs/name.jpg">
</a>
<div class="caption">Imagine long caption here</div>
</div>
И вот одна из моих многочисленных попыток CSS:
div.photo {
margin: 5px;
float: left;
height: 7cm;
margin-bottom: 3cm;
}
div.photo img {
display: block;
max-height: 7cm;
width: auto;
}
div.caption {
padding: 15px;
text-align: center;
display : block;
width: 90%;
overflow : auto;
}
Вот что я думаю, я делаю:
Фиксированная высота на
photo
элемент помещает все на одной высоте.Нижний край на
photo
Элемент освобождает место для подписи.Дано
max-height
а такжеwidth: auto
На изображении сохраняется соотношение сторон.На подписи,
text-align
а такжеdisplay
свойства имеют заголовок по центру и оборачиваются правильно.
Вот что я не делаю:
photo
Элемент становится достаточно широким, поэтому многие надписи намного шире, чем содержащиеся на нем фотографии, особенно когда фотография имеет "узкий портрет" с соотношением сторон 9:16.
Я действительно хотел бы избежать написания программы, которая проверяет каждое изображение, чтобы определить его соотношение сторон, а затем вручную устанавливает ширину содержащего элемента. Есть ли способ получить CSS, чтобы установить ширину элемента, чтобы соответствовать ширине изображения, содержащегося в потомке?
1 ответ
Посмотрите на вариант ниже. Вы можете установить ширину фигуры на авто, и на этот раз она должна правильно изменить размер. Надеюсь это поможет! HTML:
<figure class="photo">
<img src="photo.jpg">
<figcaption>
Caption goes here.
</figcaption>
</figure>
CSS:
figure {
display:table;
margin:14px;
padding:7px;
}
figure.photo {
float:right;
}