Границы¶
Граница служит обрамлением для блоков. В этом модуле вы узнаете, как изменить размер, стиль и цвет границ с помощью CSS.
CSS подкаст
016: Границы
В модуле модель блока мы рассмотрели аналогию с фреймом для описания каждого раздела модели блока.
Граница блока — это рамка ваших блоков, а свойства border предоставляют огромное количество возможностей для создания этой рамки практически в любом стиле, который только можно придумать.
Свойства границы¶
Отдельные свойства border предоставляют возможность стилизовать различные части границы.
Стиль¶
Для того чтобы появилась граница, необходимо определить border-style. Есть несколько вариантов на выбор:
При использовании стилей ridge, inset, outset и groove браузер затемняет цвет границы для второго показанного цвета, чтобы обеспечить контраст и глубину. Это поведение может отличаться в разных браузерах, особенно для темных цветов, таких как black. В Chrome эти стили границ будут выглядеть сплошными, а в Firefox они будут осветляться, чтобы затем обеспечить более темный второй цвет.
Поведение браузеров может отличаться и для других стилей границ, поэтому важно протестировать свой сайт в разных браузерах. Частым примером такого различия является то, как каждый браузер отображает стили dotted и dashed.
Для установки стиля границ на каждой стороне блока можно использовать border-top-style, border-right-style, border-left-style и border-bottom-style.
Сокращение¶
Как и в случае с margin и padding, для определения всех частей границы в одном объявлении можно использовать сокращенное свойство border.
1 2 3 | |
Порядок значений в сокращении border следующий: border-width, border-style и затем border-color.
Цвет¶
С помощью команды border-color можно задать цвет для всех сторон блока или для каждой отдельной стороны. По умолчанию используется текущий цвет текста блока: currentColor. Это означает, что если вы объявите только свойства границы, например ширину, то цветом будет это вычисленное значение, если вы не зададите его явно.
1 2 3 4 5 6 7 8 9 | |
Чтобы задать цвет границы на каждой стороне блока, используйте border-top-color, border-right-color, border-left-color и border-bottom-color.
Ширина¶
Ширина границы — это толщина линии, которая определяется параметром border-width. По умолчанию ширина границы равна средней. Однако она не будет видна, пока вы не определите стиль. Можно использовать и другие именованные значения ширины, например thin и thick.
Свойства border-width также принимают единицы измерения длины, такие как px, em, rem или %. Чтобы задать ширину границы с каждой стороны блока, используйте свойства border-top-width, border-right-width, border-left-width и border-bottom-width.
Логические свойства¶
В модуле Логические свойства вы узнали, как ссылаться на блочный и инлайн-поток, а не на явные верхнюю, правую, нижнюю или левую стороны.
Такая возможность есть и у границ:
1 2 3 4 | |
В данном примере у .my-element все стороны имеют пунктирную границу размером 2px, которая является цветом текущего текста. Граница inline-end определяется как 2px, сплошная и красная. Это означает, что в языках с лево-правым расположением букв, например, в английском, красная граница будет находиться с правой стороны блока. В языках с переходом справа налево, например в арабском, красная граница будет располагаться слева от блока.
Браузеры поддерживают различные логические свойства границ, поэтому перед использованием обязательно проверьте их поддержку.
Радиус границы¶
Чтобы придать блоку закругленные углы, используйте свойство border-radius.
1 2 3 | |
Это сокращение добавляет последовательную границу к каждому углу блока. Как и в случае с другими свойствами границы, радиус границы для каждой стороны можно задать с помощью border-top-left-radius, border-top-right-radius, border-bottom-right-radius и border-bottom-left-radius.
Можно также указать радиус каждого угла в сокращенном виде в следующем порядке: верхний левый, верхний правый, нижний правый, затем нижний левый.
1 2 3 | |
Определяя одно значение для угла, вы используете еще одно сокращение, поскольку радиус границы делится на две части: вертикальную и горизонтальную. Это означает, что, задавая border-top-left-radius: 1em, вы задаете радиус top-left-top и радиус top-left-left.
Вы можете задать оба свойства для каждого угла следующим образом:
1 2 3 | |
Это добавляет значение border-top-left-top, равное 1em, и значение border-top-left-left, равное 2em. Это преобразует радиус верхней левой границы в эллиптический радиус, а не в круговой по умолчанию.
Вы можете задать эти значения в сокращении border-radius, используя / для определения эллиптических значений после стандартных. Это позволяет творчески подойти к созданию сложных фигур.
1 2 3 4 5 | |
Границы изображений¶
В CSS можно использовать не только границы, основанные на обводке. Можно также использовать любой тип изображения, используя border-image. Это сокращенное свойство позволяет задать исходное изображение, способ его нарезки, ширину изображения, отступ границы от края и ее повторение.
1 2 3 4 5 6 7 | |
Свойство border-image-width аналогично свойству border-width: с его помощью задается ширина изображения границы. Свойство border-image-outset позволяет задать расстояние между изображением границы и блоком, вокруг которого оно обернуто.
border-image-source¶
Свойство border-image-source (источник изображения границы) может быть url для любого корректного изображения, включая CSS-градиенты.
1 2 3 4 5 6 7 8 9 10 11 | |
border-image-slice¶
Свойство border-image-slice — это полезное свойство, позволяющее разрезать изображение на 9 частей, состоящих из 4 разделенных линий. Оно работает подобно сокращению margin, где задаются значения верхнего, правого, нижнего и левого смещения.
1 2 3 4 | |
После определения значений смещения у вас теперь есть 9 участков изображения: 4 угла, 4 края и средняя секция. Углы применяются к углам элемента с изображением границы. Края применяются к краям этого элемента. Свойство border-image-repeat определяет, как эти края заполняют свое пространство, а свойство border-image-width управляет размером фрагментов.
Наконец, ключевое слово fill определяет, будет ли средняя часть, оставшаяся после нарезки, использоваться в качестве фонового изображения элемента или нет.
border-image-repeat¶
border-image-repeat — это способ указать CSS, как вы хотите, чтобы изображение границы повторялось. Он работает так же, как и background-repeat.
- Начальное значение —
stretch, которое растягивает исходное изображение, чтобы заполнить свободное пространство, где это возможно. - Значение
repeatповторяет края исходного изображения столько раз, сколько это возможно, и может обрезать области краев для достижения этой цели. - Значение
roundаналогично значению repeat, но вместо того, чтобы обрезать области краев изображения, чтобы их было как можно больше, оно растягивает изображение, а также повторяет его, чтобы добиться бесшовного повторения. - Значение
spaceопять же аналогично значению repeat, но при этом добавляется пространство между каждой краевой областью для создания бесшовного узора.
Источник: Borders


