CSS Responsive Image Tutorial: Как сделать изображения адаптивными с помощью CSS

Большинство сегодняшних веб-сайтов адаптивны. И если вам нужно центрировать и выровнять изображение на этом сайте, вам нужно научиться делать изображения плавными или адаптивными с помощью CSS.

Пару недель назад я опубликовал обучающее видео, в котором объясняется, как шаг за шагом сделать адаптивный веб-сайт. В видео мы сделали изображение адаптивным. Но в этом посте я хотел бы подробнее рассказать о том, как сделать изображения адаптивными.

Вы также узнаете некоторые общие проблемы, которые могут возникнуть, когда вы пытаетесь сделать изображения адаптивными, и я постараюсь объяснить, как их решить.

Как сделать изображения адаптивными с помощью CSS

Что следует использовать: относительные или абсолютные единицы?

Сделать изображение гибким или отзывчивым на самом деле довольно просто. Когда вы загружаете изображение на свой веб-сайт, оно имеет ширину и высоту по умолчанию. Вы можете изменить их оба с помощью CSS.

Чтобы изображение было отзывчивым, вам нужно присвоить новое значение его свойству width. Тогда высота изображения автоматически изменится.

Важно знать, что вы всегда должны использовать относительные единицы для свойства ширины, такие как процент, а не абсолютные единицы, такие как пиксели.

img { width: 500px; }

Например, если вы определите фиксированную ширину 500 пикселей, ваше изображение не будет отзывчивым, потому что единица измерения абсолютная.

img { width: 50%; }

Вот почему вы должны вместо этого назначить относительную единицу, например 50%. Такой подход сделает ваши изображения плавными, и они смогут изменять свой размер независимо от размера экрана.

Стоит ли использовать медиа-запросы?

Один из вопросов, который мне задают чаще всего, - следует ли вам использовать медиа-запросы или нет.

Медиа-запрос - еще одна важная функция CSS, которая помогает сделать веб-сайт адаптивным. Я не буду вдаваться в подробности здесь, но вы можете прочитать другой мой пост позже, чтобы узнать, как использовать медиа-запросы более подробно.

Ответ на этот вопрос: «это зависит от обстоятельств». Если вы хотите, чтобы ваше изображение имело разные размеры от одного устройства к другому, вам нужно будет использовать медиа-запросы. Иначе не получится.

Теперь для этого примера ваше изображение имеет ширину 50% для любого экрана. Но если вы хотите сделать его полноразмерным для мобильных устройств, вам понадобится помощь с помощью медиа-запросов:

@media only screen and (max-width: 480px) { img { width: 100%; } }

Таким образом, в соответствии с правилом медиа-запроса любое устройство размером менее 480 пикселей будет занимать всю ширину экрана.

Вы также можете посмотреть видеоверсию этого поста ниже:

Почему свойство max-width не очень хорошее?

Другой способ, которым разработчики могут создавать адаптивные изображения, - это свойство max-width. Однако это не всегда лучший метод, поскольку он может работать не для всех размеров экрана и устройств.

Прежде чем мы продолжим рассмотрение примера, прежде всего необходимо понять, что именно делает свойство max-width.

Свойство max-width устанавливает максимальную ширину для элемента, которая не позволяет ширине этого элемента быть больше, чем его значение max-width (но может быть меньше).

Например, если изображение имеет ширину по умолчанию 500 пикселей, а размер вашего экрана всего 360 пикселей, вы не сможете увидеть полное изображение, потому что недостаточно места:

img { max-width: 100%; width: 500px; // assume this is the default size }

Поэтому вы можете определить свойство max-width для изображения и установить его на 100%, что сжимает изображение с 500 пикселей до 360 пикселей. Таким образом, вы сможете увидеть полное изображение на экране меньшего размера.

Хорошо то, что, поскольку вы используете относительные единицы, изображение будет плавным на любом устройстве меньше 500 пикселей.

К сожалению, размер экрана будет несколько больше, чем 500 пикселей, но изображение не будет, потому что по умолчанию оно имеет ширину 500 пикселей. Такой подход нарушит отзывчивость изображения.

Чтобы исправить это, вам нужно снова использовать свойство width, что делает бесполезным свойство max-width.

А что насчет высоты?

Другая распространенная проблема, с которой вы можете столкнуться, связана со свойством высоты. Обычно высота изображения автоматически изменяется, поэтому вам не нужно назначать свойство высоты вашим изображениям (потому что это как бы ломает изображение).

Но в некоторых случаях вам, возможно, придется работать с изображениями, которые должны иметь фиксированную высоту. Поэтому, когда вы назначаете фиксированную высоту изображения, оно все равно будет отзывчивым, но не будет хорошо выглядеть.

img { width: 100%; height: 300px; }

К счастью, есть еще одно свойство, которое предлагает CSS для решения этой проблемы ...

Решение: свойство Object-Fit

Чтобы иметь больший контроль над вашими изображениями, CSS предоставляет другое свойство, называемое object-fit. Давайте воспользуемся свойством object-fit и присвоим значение, которое улучшит внешний вид вашего изображения:

img { width: 100%; height: 300px; object-fit: cover; object-position: bottom; }

При необходимости вы также можете использовать свойство object-position (в дополнение к object-fit), чтобы сфокусироваться на определенной части изображения. Многие люди не знают о свойстве соответствия объектам, но это может быть полезно для решения подобных проблем.

Надеюсь, этот пост помог вам понять и решить ваши проблемы с адаптивными изображениями. Если вы хотите узнать больше о веб-разработке, посетите мой канал на Youtube.

Спасибо за чтение!