Продолжение руководства по созданию изображений на чистом CSS. Теперь мы рады представить вам перевод второй части, в которой вы научитесь создавать баннер на CSS.
8К открытий8К показов
Некоторое время назад у нас уже выходил перевод первой части руководства по созданию изображений на чистом CSS. Теперь мы рады представить вам перевод второй части, в которой вы научитесь создавать баннер на CSS.
Возможно, это звучит странно, но создание изображений на CSS может повлиять на креативность вашего мышления и воодушевить вас на покорение новых вершин этого интересного языка. Поэтому у первой части есть продолжение.
Во второй части руководства будет рассмотрено создание баннера.
Для этого будут использоваться те знания, которые вы можете почерпнуть из первой части:
порядок размещения нескольких CSS-изображений для формирования финальной версии картинки;
наложение градиентов.
Составные элементы
Вы уже, наверное, догадались, что для создания картинок на чистом CSS используются различные геометрические фигуры, которые и формируют финальное изображение.
Чем сложнее картинка, тем лучше нужно продумать положение всех CSS-элементов на странице.
Чтобы было легче разобраться в структуре изображения, можно разбить его на атомы (давайте назовём так самые маленькие элементы). Из атомов состоят молекулы, которые для нас представляют собрание атомов, то есть собрание меньших элементов.
Для лучшего понимания этой статьи предлагаем вам прочитать небольшую книгу Бреда Фроста «Atomic Design».
Рассмотрим это объяснение на примере изображения, которое будет использоваться на протяжении всей второй части руководства. На картинке две газеты и один круг. Причём газеты могут быть вполне отдельными изображениями.
Каждая газета состоит из прямоугольников и отдельной картинки. Элементы могут отделяться от статьи и друг от друга.
Чтобы вы не запутались, посмотрите на изображение ниже.
Организмы в виде чистых изображений на CSS представляют собой собрание молекул, которые образуют отдельное изображение.
Обратите внимание на ещё один пример: В статье всё будет подробно объяснено, чтобы не создавать трудностей в понимании материала. Изображение будет рассматриваться в виде атомов, молекул и организмов.
Круг
Газета
Газета состоит из контейнера с картинкой (молекула), белого контейнера (атом) и прямоугольников (молекула). Прямоугольники могут быть разделены таким образом, что каждый из них станет атомом.
Контейнер с изображением состоит из следующих атомов: синий прямоугольник, голубой прямоугольник, два треугольника тёмно-коричневых и два треугольника светло-коричневых. Другая газета — то же самое, но в цветовой гаммы.
Конечное изображение состоит из газеты в синих оттенках (организм), газеты в красных оттенках (организм) и круга в центре (организм).
HTML
Сначала нужно понять все компоненты, а потом уже перейти к их размещению.
Невидимый контейнер
Невидимый контейнер будет служить холстом для изображения. С помощью него будут позиционироваться остальные элементы. Он является родительским контейнером (div) для всех элементов.
Так как круг будет расположен в центре невидимого контейнера, то его будет проще всего позиционировать. Круг — дочерний элемент для невидимого контейнера, однако, он является родительским элементов для других контейнеров, которые в нём содержатся.
В первой статье использовалось копирование головы коалы для обеспечения надлежащего положения слоёв. В этой части мы будем делать то же самое с кругом, поэтому у нас будет копия, которая будет использоваться чуть позже для группирования всего «организма» круга.
«Организм» круг
Наш круг состоит из дочерних окружностей и контейнера. Он содержит также копию круга (внешний круг синего цвета). В качестве дочернего элемента будет жёлтая окружность. Дочерним элементом жёлтой окружности будет красная звезда.
HTML-код:
<body>
<!-- Невидимый контейнер -->
<div class="box">
<!-- Цвет фона -->
<div class="overlay"></div>
<div class="ball">
<!-- «Организм» круг -->
<div class="ball-copy">
<div class="yellow-circle">
<div class="star"></div>
</div>
</div>
<!-- Конец "организма" круг -->
</div>
</div>
</body>
Газеты
Газета с красными оттенками будет слева от круга. Разделим газету на составные: картинка (молекула) и прямоугольники (атомы).
<div class="box">
<div class="ball">
<div class="newspaper-left">
<!-- Строки газеты -->
<div class="bar-1"></div>
<div class="bar-2"></div>
<div class="bar-3"></div>
<div class="bar-4"></div>
<!-- Конец строк газеты -->
<!-- Блок с картинкой -->
<div class="image-box-left">
<div class="sun"></div>
<div class="small-mountain-left">
</div>
<div class="small-mountain-right">
</div>
<div class="mountain-left">
</div>
<div class="mountain-right">
</div>
<div class="image-bar-left">
</div>
</div>
<!-- Конец блока с картинкой -->
</div>
<!-- Круг должен быть здесь -->
</div>
</div>
Все строки, состоящие из прямоугольников, могут быть разбиты на отдельные элементы:
<!-- Строки газеты -->
<div class="bar-1"></div>
<div class="bar-2"></div>
<div class="bar-3"></div>
<div class="bar-4"></div>
<!-- Конец строк газеты -->
Аналогично картинка с пейзажем может быть разбита на атомы:
<!-- Блок с картинкой-->
<div class="image-box-left">
<div class="sun"></div>
<div class="small-mountain-left">
</div>
<div class="small-mountain-right">
</div>
<div class="mountain-left">
</div>
<div class="mountain-right">
</div>
<div class="image-bar-left">
</div>
</div>
<!-- Конец блока с картинкой -->
Газета справа состоит из тех же самых атомов, кроме оттенков.
HTML-код:
<!-- Газета с оттенками синего -->
<div class="newspaper-right">
<!-- Строки газеты -->
<div class="bar-1"></div>
<div class="bar-2"></div>
<div class="bar-3"></div>
<div class="bar-4"></div>
<!-- Конец строк газеты -->
<!-- Блок с картинкой -->
<div class="image-box-right">
<div class="sun">
</div>
<div class="small-mountain-left">
</div>
<div class="small-mountain-right">
</div>
<div class="mountain-left">
</div>
<div class="mountain-right">
</div>
<div class="image-bar-right">
</div>
</div>
<!-- Конец блока с картинкой -->
</div>
<!-- Конец газеты с оттенками синего -->
Так выглядит полный HTML-код, который у вас должен получиться:
<body>
<div class="box">
<div class="ball">
<div class="newspaper-left">
<!-- Строки из прямоугольников -->
<div class="bar-1"></div>
<div class="bar-2"></div>
<div class="bar-3"></div>
<div class="bar-4"></div>
<!-- Конец строк из прямоугольников -->
<!-- Контeйнер с картинкой-->
<div class="image-box-left">
<div class="sun"></div>
<div class="small-mountain-left">
</div>
<div class="small-mountain-right">
</div>
<div class="mountain-left">
</div>
<div class="mountain-right">
</div>
<div class="image-bar-left">
</div>
</div>
<!-- Конец контейнера с картинкой -->
</div>
<!-- Конец газеты -->
<!-- Круг -->
<div class="ball-copy">
<div class="yellow-circle">
<div class="star"></div>
</div>
</div>
<!-- Конец круга -->
<!-- Газета с оттенками синего -->
<div class="newspaper-right">
<!-- Строки из прямоугольников -->
<div class="bar-1"></div>
<div class="bar-2"></div>
<div class="bar-3"></div>
<div class="bar-4"></div>
<!-- Конец строк из прямоугольников -->
<!-- Контейнер с картинкой -->
<div class="image-box-right">
<div class="sun">
</div>
<div class="small-mountain-left">
</div>
<div class="small-mountain-right">
</div>
<div class="mountain-left">
</div>
<div class="mountain-right">
</div>
<div class="image-bar-right">
</div>
</div>
<!-- Конец контейнера с картинкой -->
</div>
<!-- Конец газеты -->
</div>
</div>
</body>
Разобравшись с градиентом, перейдем к наложению слоёв. Создадим копию слоя, чтобы поместить его поверх других. Для этого добавимz-index: 5 (самый верхний слой), чтобы убедиться, что всё расположено сверху.
Нужно отцентрировать его посередине. Для этого следует выбрать абсолютное позиционирование, определить правильный размер и поместить круг в центр, используя формулу, которая отцентрирует фигуру:
Нужно сделать его чуть меньше, чем синий круг, установив параметры высоты и ширины равные 80%. Нужно будет позиционировать его по формуле неподвижного центра, согласно которой нужно сделать 10%-ный отступ сверху и слева. Далее мы трансформируем окружность с помощью border-radius: 50%. Жёлтая окружность имеет z-index , равный 3.
Нужен подходящий размер, поэтому установим для звезды 60%. Затем можно будет отцентрировать по формуле неподвижного центра, добавить фон, установить индекс z, равный 4, а потом трансформировать.
Так как звезда — более сложная фигура, чем прямоугольник, квадрат или круг, то для её создания можно воспользоваться специальным инструментом Clippy.
Начнём с газеты слева. Следует помнить, что теперь позиционировать газету нужно относительно круга. Для начала зададим подходящий размер:
width: 65%;
height: 70%;
Нужно поместить газету немного ниже круга. Поэтому применяем следующее свойство: bottom:-5%. Нужно сделать так, чтобы газета как бы выглядывала из-за круга. Для этого установим следующее свойство: left:-45%. Путём проб и ошибок можно подобрать другие значения, если это не сработает корректно.
bottom: -5%;
left: -45%;
Теперь нужно придать газете беловатый фон, а затем установить значение z-index, равное 0. Таким образом, газета займёт самую нижнюю позицию.
Самое важное — это заметить и запомнить, что в этом случае мы трансформируем этот элемент с помощью border-radius, устанавливая значения в пикселях (px). Это делается для того, чтобы лишь слегка округлить фигуру.
Это не должно быть сложным для понимания. Единственное, на что нужно обратить внимание — это на то, что нужно, чтобы bar-1 и bar-2 не были такими же широкими, как остальные. Так будет освобождено место для «молекулы» с картинкой.
Также нужно установить z-index, равным 5, чтобы правильно определить позицию слоя.
Контейнер с картинкой достоин иметь свою секцию, так как он состоит из большого количества элементов. Сначала нужно стилизовать контейнер, который будет содержать остальные дочерние элементы.
Мы работаем с простым квадратом, поэтому даём ему соответствующий размер и положение относительно белого контейнера газеты. После этого добавляется синий фон. Затем стилизуем ещё один дочерний элемент (атом) — солнце.
small-mountain-left — треугольник с более тёмным коричневым фоном. Кстати, в этот раз снова использовался инструмент Clippy.
При трансформации нужно перетащить верхнюю точку треугольника вправо. Таким образом, вы получите small-mountain-right — треугольник, направленный в другую сторону.
Надеемся, что вторая часть вас заинтересовала не меньше, чем первая, а также дала стимул к саморазвитию в области CSS и HTML. Кроме того, вы можете посмотреть видеокурс по созданию картинок на чистом CSS. Он полностью бесплатен. Книга, предложенная в начале статьи, тоже бесплатна для чтения онлайн. В ней автор повествует об интересных подходах к фронтенду и дизайну в целом.
Лучшие онлайн-курсы по Javascript. Список школ, осуществляющих обучение на бесплатной или платной основе, а так же цены на курсы для Javascript-разработчиков
Всем привет!
Учусь работать над повышением безопасности Django-приложения. Сейчас использую OAuth и библиотеки типа django-axes и django-security. Но сможет ли это защитить от CSRF и XSS атак? Не понятно…
Марк Садыков, главный инженер по разработке в Сбере и ментор Эйч Навыки, рассказывает, что такое SSE и WebSockets и как они используются, и дает советы для прохождения собеседований.