Как сделать динамический фон сайта

CSS и множественный фон

CSS-свойство background — это одно из самых часто используемых свойств. Но сообщество веб-разработчиков пока не слишком хорошо осведомлено о возможностях, которые даёт использование множественного фона. Здесь я собираюсь серьёзно поговорить о том, что может дать применение множественного фона, и о том, как использовать стандартные механизмы CSS на полную мощность.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Если вы не знакомы с CSS-свойством background — хорошо будет, если вы, перед чтением материала, заглянете на эту страницу документации MDN, посвящённую данному свойству.

Введение

CSS-свойство background — это сокращённое свойство, которое позволяет настраивать следующие обычные свойства элементов:

Рассмотрим следующий пример:

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Путь к изображению, его позиция и его размер

Позиция фонового изображения

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Конструкции вида top left и left top равнозначны

Размер фонового изображения

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Сначала идёт ширина, а потом — высота

Тут, кстати, нелишним будет упомянуть о том, что в спецификации CSS по этому поводу сказано следующее: «Если указано лишь одно значение, то предполагается, что второе значение — это auto». Но этот механизм в браузерах не реализован, хотя в будущем ситуация может измениться. Благодарю Илью Стрельцына за то, что привлёк моё внимание к этой детали.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Одно значение задаёт и ширину, и высоту

Множественный фон

В свойстве background может быть описан один слой фона, до сих пор мы видели именно такие описания, или — несколько слоёв, свойства которых разделены запятой. Если размеры нескольких фоновых изображений одинаковы, одно из них полностью перекроет другие.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Использование нескольких фоновых изображений

На вышеприведённом рисунке у элемента есть два слоя фоновых изображений. Каждое из этих изображений позиционировано по-своему. Это — простейший пример использования множественного фона. А теперь давайте рассмотрим более продвинутый пример.

Порядок наложения фоновых изображений друг на друга

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

Здесь у нас имеется изображение стола ( table.jpg ) и изображение тарелки ( konafa.svg ). Как вы думаете, какое из этих фоновых изображений будет выведено первым? Изображение стола или изображение тарелки?

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Элемент с двумя фоновыми изображениями

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

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Первый фон накладывается на второй

Как видите, фон, заданный первым, находится выше фона, заданного вторым.

Сплошные цвета

Предположим, нам, используя CSS-инструменты настройки фона элемента, нужно сформировать одноцветный фон. Как это сделать? Это, благодаря CSS-градиентам, совсем несложная задача. Дело в том, что если воспользоваться функцией linear-gradient с одинаковыми стоп-цветами, это приведёт к появлению сплошного цвета.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Фон, созданный с помощью linear-gradient и одинаковых стоп-цветов

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

Сценарии использования и практические примеры

▍Затемнение фонового изображения

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

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Затемнённое фоновое изображение

Ещё интереснее то, что тот же метод можно использовать для тонирования фонового изображения элементов.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

▍Рисование средствами CSS

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Давайте разберём это изображение и подумаем о том, какие градиенты нам понадобятся.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Пластиковая рамка дисплея, LCD-дисплей, отражение, скруглённые края корпуса, корпус

Обратите внимание на то, что когда ноутбук «разобран», гораздо легче разобраться в том, какие градиенты нужны для того чтобы его нарисовать с использованием техники применения нескольких фоновых изображений. Возможно, вы заметили то, что я использовал пару окружностей, играющих роль скруглённых углов корпуса ноутбука. Дело в том, что стандартного способа создания градиентов со скруглёнными углами не существует.

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

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

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Схематичное изображение ноутбука

Реализация отражения света от рамки дисплея ноутбука

Как уже было сказано, слой фона, который должен располагаться над всеми остальными слоями, должен быть определён первым. В нашем случае первым градиентом будет тот, который имитирует отражение света от рамки дисплея ноутбука.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Отражение света от рамки дисплея ноутбука

LCD-дисплей

Дисплей ноутбука выровнен по центру оси X, а по оси Y он расположен со сдвигом в 6 пикселей от начала координат.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Рамка дисплея

Рамка находится ниже дисплея, она центрирована по оси X, по оси Y она расположена со смещением в 0px от начала координат.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Корпус ноутбука

А это — самый интересный элемент. Для начала, надо учесть то, что элемент, представляющий корпус ноутбука, является прямоугольником, и то, что корпус имеет скруглённые края. Это достигается благодаря использованию пары окружностей.

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Готовый рисунок

Вот CodePen-проект, с которым вы можете поэкспериментировать.

▍Смешивание нескольких фонов

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

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Цветное изображение и вспомогательный слой чёрного цвета

Как сделать динамический фон сайта. Смотреть фото Как сделать динамический фон сайта. Смотреть картинку Как сделать динамический фон сайта. Картинка про Как сделать динамический фон сайта. Фото Как сделать динамический фон сайта

Пользуетесь ли вы множественными фонами в CSS?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *