Адаптивные изображения с помощью CSS – Dobrovoimaster
В этом небольшом уроке, мы рассмотрим простейшие способы создания адаптивных изображений с помощью CSS.
Существует не мало различных решений сделать изображения адаптивными, все они различаются и по сложности, и степени поддержки браузерами. Примером сложного пути реализации адаптивных картинок, является использование атрибута srcset, для которого требуется несколько изображений, больше разметки, а также зависимость от поддержки браузерами.
Давайте отбросим лишнюю тягомотину, современные спецификации позволяют нам сделать изображения, используемые на страницах сайтов, гибкими и корректно отображающимися на экранах различных пользовательских устройств, для этого достаточно использовать всего лишь несколько свойств из обоймы CSS.
Приготовил примеры нескольких вариаций исполнения адаптивных изображений, одиночная картинка, изображения в двух и более колонках, а так же пример использования большого фонового изображения с гарантированной адаптивностью.
width(ширины) и значении auto для свойства height (высоты) изображений.img {
width: 100%;
height: auto;
} |
Базовые значения адаптивного изображения
Начнём с рассмотрения базового примера, когда нам необходимо сделать одиночные картинки используемые в записях, или других отдельных блоках, полностью адаптивными.
Например, у нас есть контейнер, которому мы задали базовую ширину width: 96%; и выставили максимальную ширину в max-width: 960px;, в этом блоке нам необходимо вывести адаптивное изображение.
Для этого элементу внутри контейнера определяем ширину в 100%, так, что его ширина всегда будет равна ширине контейнера, независимо от размера области просмотра. Высоту, соответственно, переводим в автоматический режим, в итоге изображение будет изменяться пропорционально.
HTML:
<div> <img src="image01.jpg" /> </div> |
CSS:
div.container {
width: 96%;
max-width: 960px;
margin: 0 auto; /* центрируем основной контейнер */
}
img {
width: 100%; /* ширина картинки */
height: auto; /* высота картинки */
} |
Обратите внимание, что <img> элемент будет адаптивным, даже если были заданы фиксированные значения HTML-атрибутов ширины и высоты непосредственно в разметке.
Демо
Адаптивные изображения в колонках
Иногда мы хотим видеть изображения выстроенные в ряд бок о бок, или например, в виде сетки, для организации простейшей галереи картинок.
Для этого, необходимы лишь внести небольшие изменения в код, который использовали выше, первое, это уменьшить ширину свойство width и задать элементу <img> значение inline-block для свойства display, т.
Давайте рассмотрим две компоновочные схемы: расположение картинок в две колонки и макет из трёх столбцов.
1. Макет изображений в две колонки
Для двух-колоночного макета изображений, мы можем установить ширину в 48%, или примерно половину контейнера. Не устанавливаем значения в 50%, для того, чтобы были боковые отступы.
HTML:
<div> <img src="image01.jpg" /> <img src="image02.jpg" /> </div> |
CSS:
img {
width: 48%;
display: inline-block;
} |
2. Три колонки изображений
С трёх-колоночным макетом концепция та же, необходимо распределить ширину базового контейнера на три картинки, для этого достаточно установить значения ширины изображений около одной трети ширины контейнера: 32%.
HTML:
<div> <img src="image01. |
CSS:
img {
width: 32%;
display: inline-block;
} |
Демо
Условная расстановка адаптивных изображений
В следующем примере, мы рассмотрим вариант использования адаптивных картинок с различной расстановкой в зависимости от устройств просмотра, т.е. при просмотре на смартфонах изображения будут отображаться в одну колонку, в две колонки на планшетах, и выстраиваться в четыре колонки на больших экранах.
Для реализации задуманного, применим медиа-запросы @media, указав тип носителя, для которого будет применяться то или иное максимальное значение ширины изображений max-width.
HTML:
<div> <img src="image01.jpg" /> <img src="image02.jpg" /> <img src="image03. |
CSS:
/* Для небольших устройств (смартфоны) */
img {
max-width: 100%;
display: inline-block;
}
/* Для средних устройств (планшеты) */
@media (min-width: 420px) {
img {
max-width: 48%;
}
}
/* Для больших устройств (ноуты, пк) */
@media (min-width: 760px) {
img {
max-width: 24%;
}
} |
Всё довольно просто, неправда ли? Идея с медиа-запросами отличная, уже довольно давно и широко используемая. Показанные в примере параметры, хорошо работают именно с данным макетом, как поведут себя в других конструкциях, стоит тщательно проверять, так что…
Демо
Адаптивное изображение на всю ширину экрана
Для того, чтобы сделать широко-форматные адаптивные изображения, которые заполняют 100% размера окна просмотра, необходимо просто удалить свойство максимальной ширины контейнера max-width (значение в 960px) и установить ему ширину width в 100%.![]()
CSS:
.container {
width: 100%;
}
img {
width: 100%;
} |
Несмотря на то что данная техника очень проста в использовании и имеет устойчивую поддержку браузерми, следует помнить о том, что изображения всегда будут показаны в полный размер, т.е. большие, с высоким разрешением изображения показываются заполняя всё пространство, что для небольших мобильных устройств, не всегда в тему, если только картинка не используется в качестве фонового изображения.
На этом пожалуй и всё. Если вы хотите, для различных устройств, использовать отдельные изображения разного размера, используйте, хуже уж точно не будет. Знаете другие методы сделать изображения адаптивными, пишите в комментариях, обязательно рассмотрим, новое оно всегда интересно.
ДемоИсходники
Источник: sixrevisions
Надеюсь буржуинский автор не будет на меня в обиде за столь вольный перевод)))
С Уважением, Андрей .
Буду всем признателен, если поддержите проект — добавив блог в исключения AdBlock и поделитесь ссылкой на запись в своих соц-сетях:
html — Как сделать фоновое изображение полноэкранным?
Я делаю проект в python django и пытаюсь сделать свой фон полноэкранным.
HTML-код:
{
% статическая нагрузка %}
<голова>
<мета-кодировка="UTF-8">
Формы регистрации Au от Colorlib
min.css' %}" rel="stylesheet" media="all">
голова>
<тело>
<дел >
<дел>
<дел>
<метод формы="сообщение">
<диапазон>
Авторизоваться
<метод формы="сообщение" >
{% csrf_token%}
Имя пользователя
Пароль
промежуток>
<дел>
<а href="#">

jpg" />
<img src="image02.jpg" />
<img src="image03.jpg" />
</div>
jpg" />
<img src="image04.jpg" />
</div>
4с;
-о-переход: все 0.4с;
-moz-переход: все 0.4с;
}
фокус {
схема: нет !важно;
}
а: наведите {
текстовое оформление: нет;
цвет: #a64bf4;
}
/*-------------------------------------------------------------*/
h2,h3,h4,h5,h5,h6 {
поле: 0px;
}
п {
семейство шрифтов: Poppins-Regular;
размер шрифта: 14px;
высота строки: 1,7;
цвет: #666666;
поле: 0px;
}
ул, ли {
поле: 0px;
тип стиля списка: нет;
}
/*-------------------------------------------------------------*/
вход {
контур: нет;
граница: нет;
}
текстовая область {
контур: нет;
граница: нет;
}
текстовая область: фокус, ввод: фокус {
цвет границы: прозрачный !важно;
}
ввод: фокус::-webkit-input-placeholder { цвет: прозрачный; }
ввод: фокус: -moz-placeholder { цвет: прозрачный; }
ввод: фокус::-moz-placeholder { цвет: прозрачный; }
ввод: фокус: -ms-input-placeholder { цвет: прозрачный; }
textarea: focus :: - webkit-input-placeholder { цвет: прозрачный; }
textarea: focus: -moz-placeholder { цвет: прозрачный; }
textarea: focus :: -moz-placeholder { цвет: прозрачный; }
textarea: focus: -ms-input-placeholder { цвет: прозрачный; }
input::-webkit-input-placeholder {цвет: #adadad;}
input:-moz-placeholder {цвет: #adadad;}
input::-moz-placeholder {цвет: #adadad;}
input:-ms-input-placeholder {цвет: #adadad;}
textarea::-webkit-input-placeholder {цвет: #adadad;}
textarea:-moz-placeholder {цвет: #adadad;}
textarea::-moz-placeholder {цвет: #adadad;}
textarea:-ms-input-placeholder {цвет: #adadad;}
/*-------------------------------------------------------------*/
кнопка {
схема: нет !важно;
граница: нет;
фон: прозрачный;
}
кнопка:наведите {
курсор: указатель;
}
iframe {
граница: нет !важно;
}
/*///////////////////////////////////////////////// ///////////////////
[ Утилита ]*/
.
txt1 {
семейство шрифтов: Poppins-Regular;
размер шрифта: 14px;
высота строки: 1,5;
цвет: #666666;
}
.txt2 {
семейство шрифтов: Poppins-Regular;
размер шрифта: 14px;
высота строки: 1,5;
цвет: #333333;
преобразование текста: верхний регистр;
}
.bg1 {цвет фона: #3b5998}
.bg2 {цвет фона: #1da1f2}
.bg3 {цвет фона: #ea4335}
/*///////////////////////////////////////////////// ///////////////////
[ авторизоваться ]*/
.лимитер {
ширина: 100%;
поле: 0 авто;
}
.container-логин100 {
ширина: 100%;
мин-высота: 100вх;
дисплей: -webkit-box;
отображение: -webkit-flex;
дисплей: -moz-box;
отображение: -ms-flexbox;
дисплей: гибкий;
flex-wrap: обернуть;
выравнивание содержимого: по центру;
выравнивание элементов: по центру;
отступ: 15 пикселей;
фоновый повтор: без повтора;
/* background-position: center; */
размер фона: обложка;
высота: 100%;
-webkit-background-size: обложка;
-moz-background-size: обложка;
-o-background-size: обложка;
background-attachment: исправлено;
}
.
wrap-логин100 {
ширина: 500 пикселей;
фон: #fff;
радиус границы: 10px;
переполнение: скрыто;
}
/*------------------------------------------------ ------------------
[ Форма ]*/
.login100-форма {
ширина: 100%;
}
.login100-форма-название {
дисплей: блок;
семейство шрифтов: Poppins-Bold;
размер шрифта: 39пкс;
цвет: #333333;
высота строки: 1,2;
выравнивание текста: по центру;
}
/*------------------------------------------------ ------------------
[ Вход ]*/
.wrap-input100 {
ширина: 100%;
положение: родственник;
нижняя граница: 2px сплошная #d9d9d9;
}
.label-input100 {
семейство шрифтов: Poppins-Regular;
размер шрифта: 14px;
цвет: #333333;
высота строки: 1,5;
отступ слева: 7px;
}
.input100 {
семейство шрифтов: Poppins-Medium;
размер шрифта: 16px;
цвет: #333333;
высота строки: 1,2;
дисплей: блок;
ширина: 100%;
высота: 55 пикселей;
фон: прозрачный;
отступ: 0 7px 0 43px;
}
Извините, если это слишком. Я не уверен, где ошибка