Изображения
Теперь посмотрим на картинку Оскара. Классов у неё пока нет, а в карточку она вписывается хорошо. Это снова Preflight. Он задаёт всем изображениям такие стили:
img {
display: block;
max-width: 100%;
height: auto;
}display: block— картинка становится блоком на отдельной строке. Без этого браузер показывает изображение как строчный элемент, словно слово в предложении, и оставляет под ним небольшой зазор.max-width: 100%— картинка никогда не шире родителя. Наша картинка 600 пикселей в ширину, но сжимается до ширины карточки.height: auto— высота следует за шириной, поэтому картинка сохраняет своё соотношение сторон (форму: во сколько раз она шире, чем выше) и не искажается.
Однако у карточек на сайтах картинки обычно одной высоты, какой бы формы ни были фотографии. Если задать картинке и ширину, и высоту, её блок получит форму, отличную от формы самой картинки, а то, как картинка его заполняет, определяет свойство CSS object-fit:
| Класс | CSS | Что делает |
|---|---|---|
object-fill | object-fit: fill; | Растягивает или сжимает картинку до размера блока. Так по умолчанию. |
object-cover | object-fit: cover; | Заполняет весь блок и сохраняет соотношение сторон. Всё, что выступает, обрезается, как у фото на обоях телефона. |
object-contain | object-fit: contain; | Картинка целиком помещается в блок и сохраняет соотношение сторон; остальная часть блока остаётся пустой. |
Вот картинка Оскара в блоке, который вдвое шире, чем выше (пунктирная линия):
object-fillobject-coverobject-containЧаще всего нужен object-cover: блок заполнен, а кот не выглядит сплюснутым. Попробуем по шагам.
Задание
- 1
Добавьте класс
h-48(height: 12rem, 192 пикселя) картинке Оскара. Атрибутаclassу неё пока нет, поэтому впишитеclass="h-48"в тегimg. Картинка станет ниже, а заодно и уже: браузер сохраняет её соотношение сторон, поэтому вместе с высотой уменьшается и ширина. - 2
Добавьте класс
w-full(width: 100%). Картинка снова занимает всю ширину карточки, но теперь она сплющена: когда заданы и ширина, и высота, значение по умолчаниюobject-fillрастягивает картинку до размера её блока. - 3
Добавьте класс
object-cover. У картинки снова своё соотношение сторон, и она заполняет весь блок: браузер обрезает полосу сверху и снизу.