Создание разноцветных границ с помощью CSS
Опубликовано: 2022-02-16Свойство границы CSS имеет некоторые параметры настройки, такие как сплошная, пунктирная, пунктирная и т. д. Однако, когда дело доходит до цвета границы, у нас может быть только сплошной цвет для каждой стороны. Но есть еще один способ получить разноцветную линию, используя еще несколько свойств, о которых вы, возможно, не подумали, давайте посмотрим.
Твердый
Пунктирная
Пунктирный
Разноцветные границы
Чтобы получить многоцветную границу, как показано выше, мы будем использовать свойство position
и селектор ::after
after с цветовым градиентом. Во-первых, мы создадим область заголовка, используя класс HTML <div>, а затем мы стилизуем ее с помощью CSS, чтобы иметь многоцветную рамку, разделяющую ее и содержимое ниже.
Создайте свой HTML:
<div class="ost-multi-header">
<h1>
Header Title
</h1>
</div>
<div class="ost-multi-header">
<h1>
Header Title
</h1>
</div>
Теперь давайте немного стилизуем его с помощью CSS.
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
}
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
}
Теперь у вас должно получиться что-то похожее на это:
Теперь мы можем добавить ::after
к .ost-multi-header selector
. Но прежде чем мы это сделаем, я хотел бы немного объяснить, что делает ::after
и зачем нам нужно свойство position для многоцветной границы. ::after
создает псевдоэлемент со всем, что находится в свойстве содержимого в конце выбранного элемента. В нашем случае это элемент .ost-multi-header
. Давайте сделаем проверенное временем «Hello World!» пример для иллюстрации.
Добавьте это в свой CSS:
.ost-multi-header::after{
content: 'Hello World!';
position: absolute;
left: 20px;
bottom: 0;
}
.ost-multi-header::after{
content: 'Hello World!';
position: absolute;
left: 20px;
bottom: 0;
}
Как видите, теперь у нас есть «Hello World!» элемент под заголовком заголовка. Поскольку наш родительский элемент .ost-multi-header
имеет свойство position как relative
, мы можем задать дочернему элементу absolute
позицию. Это позволит нам легко перемещать наш новый псевдоэлемент, который мы создали с помощью ::after
, куда угодно внутри родительского элемента. Мы помещаем его внизу и перемещаем на 20 пикселей слева внутри родительского элемента. Обратите внимание: если родительский элемент не имеет свойства position, установленного в относительный, то наш элемент с абсолютным позиционированием будет внизу и на 20 пикселей левее области просмотра браузера.
А как насчет нашей цветной границы? Мы собираемся стилизовать фон нашего псевдоэлемента, чтобы он был нашей разноцветной границей, используя градиент. Градиенты CSS могут быть линейными или радиальными. Для нашей границы мы будем использовать linear-gradient
. Проще говоря, это дало бы нам границу, которую мы ищем.
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right:0;
bottom: 0;
background: linear-gradient(to right, #ed8034 0%,#ed8034 33%,#feb123 33%,#feb123 66%,#2184cd 66%,#2184cd 100%);
}
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right:0;
bottom: 0;
background: linear-gradient(to right, #ed8034 0%,#ed8034 33%,#feb123 33%,#feb123 66%,#2184cd 66%,#2184cd 100%);
}
Но давайте замедлим момент для шага за шагом. Во-первых, свойство content
все еще существует, хотя оно пустое. Это связано с тем, что без свойства content
псевдоэлемент никогда не создается; значит, нам это нужно. Нам нужно установить высоту нашего псевдоэлемента, высоту нашей границы. Зачем устанавливать для свойств left
и right
значение 0? Без установленной ширины псевдоэлемент растянется на 100% ширины внутри родительского элемента. Может показаться, что это много, но настройки linear-gradient
просто говорят, что цвет течет слева направо, и мы добавляем нужные цвета на определенные проценты фона.
Несмотря на то, что все, что мы делаем, это выбираем, какие цвета должны быть в определенном процентном соотношении, это большая работа ногами. К счастью, есть бесплатные онлайн-ресурсы, которые очень помогают с цветовыми градиентами. Ultimate CSS Gradient Generator от ColorZilla — отличный инструмент, который включает несколько свойств градиента для поддержки старых браузеров.
У нас уже есть настроенный градиент в инструменте, поэтому мы можем использовать эту ссылку, чтобы увидеть точные настройки, используемые в этом уроке: https://colorzilla.com/gradient-editor/#ed8034+0,ed8034+33,feb123+33 ,февр123+66,2184кд+66,2184кд+100. Это должно выглядеть так:
На этом сайте много настроек, но давайте сосредоточимся на том, какие настройки нам нужны, чтобы создать внешний вид, который мы собираемся использовать для нашей границы. Давайте разберем это:
- Предустановки — это может быть отличной отправной точкой!
- Ползунок — здесь можно добавлять, удалять и редактировать цвета.
- Остановки — этот раздел позволяет вам изменить настройки непрозрачности и местоположения каждого цвета. Просто щелкните поле цвета на ползунке выше, чтобы изменить тот, которым вы управляете в этом разделе.
- Предварительный просмотр — здесь вы можете сразу увидеть результаты ваших изменений.
- Ориентация и размер . Позволяет изменить горизонтальную, вертикальную, диагональную или радиальную ориентацию. И установить размер градиента.
- Код CSS — сгенерированный код с постоянной ссылкой, так что вы всегда можете вернуться и легко отредактировать свой градиент.
В нашем случае мы искали не блеклый градиент, а сплошной плоский переход между двумя цветами, поэтому все, что нам нужно сделать, это наложить два цвета друг на друга там, где мы хотим, чтобы это произошло. В нашем примере мы уложили цвета на 33% и 66% соответственно.

Не стесняйтесь экспериментировать с настройками, зная, что то, что вы видите в предварительном просмотре, — это то, что сгенерирует код. Когда вы настроите внешний вид так, как хотите, вы можете использовать кнопку «Копировать» в правом нижнем углу окна кода.
Если вы скопировали код, как он был в ссылке, ваш окончательный CSS будет выглядеть примерно так:
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
padding-bottom: 6px;
}
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right: 0;
bottom: 0;
/* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ed8034+0,ed8034+33,feb123+33,feb123+66,2184cd+66,2184cd+100 */
background: rgb(237,128,52); /* Old browsers */
background: rgb(237,128,52); /* Old browsers */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
}
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
padding-bottom: 6px;
}
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right: 0;
bottom: 0;
/* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ed8034+0,ed8034+33,feb123+33,feb123+66,2184cd+66,2184cd+100 */
background: rgb(237,128,52); /* Old browsers */
background: rgb(237,128,52); /* Old browsers */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
}
И этот CSS создаст это разноцветное подчеркивание, которое полностью адаптивно:
Ну вот! Нам не нужно было добавлять отступ 6px внизу .ost-multi-header
, но дочерний элемент с absolute
позиционированием больше не влияет на высоту родительского элемента. Мы можем позволить ему плавать поверх нашего содержимого в родительском элементе или добавить padding
, чтобы гарантировать, что он не закрывает какой-либо контент, который мы не хотели бы блокировать.
Вот ссылка на это упражнение, воссозданное на CodePen, чтобы все могли редактировать и изучать его, не беспокоясь.
Последнее замечание: некоторые старые браузеры поддерживают только селектор с одним двоеточием :after
after , а не современный стандартный двойной ::after
. Вы можете использовать одно двоеточие, если хотите быть в безопасности. На данный момент он также будет работать в современных браузерах.