CSS :: Границы элементов
- Стиль границ элемента, css-свойство border-style и его производные
- Ширина границ элемента, css-свойство border-width и его производные
- Цвет границ элемента, css-свойство border-color и его производные
- Универсальные css-свойства border, border-top, border-bottom, border-right и border-left
- Скругление границ элемента, css-свойство border-radius и его производные
- Внешняя рамка элемента, css-свойства outline, outline-style, outline-width и outline-color
- Расстояние между внешней и внутренней границами, css-свойство outline-offset
- Создание теней, css-свойство box-shadow
Стиль границ элемента,
css-свойство border-style и его производные
Для установки границ элементов CSS предоставляет целый набор свойств, позволяющих задать стиль, толщину и цвет границ как по отдельности для каждой из сторон элемента, так и для всех сторон одновременно. Свойств достаточно много, но описывать их все по отдельности мы не будем, т.к. они очень похожи по своему назначению и легко разбиваются на группы.
Для установки стиля границ используются следующие ненаследуемые свойства border-style, border-top-style, border-bottom-style, border-left-style, border-right-style (см. пример №1). Все они могут принимать ряд значений, которые определяют внешний вид границы:
- none – граница не отображается, браузер обнуляет ее толщину (значение используется по умолчанию);
- hidden – в принципе тоже самое, что и none, за исключением того, что в случае применения данного значения к границам ячеек таблицы, у которой значение свойства border-collapse установлено как collapse, граница вокруг ячейки не будет отображаться вообще, включая и совмещенные границы смежных ячеек;
- dotted – линия границы будет иметь точечный вид;
- dashed – линия границы будет иметь пунктирный вид;
- solid – линия границы будет сплошной;
- double – линия границы будет двойной;
- groove – линия границы будет иметь объемный рифленый вид с эффектом вдавленности;
- ridge – линия границы будет иметь объемный рифленый вид с эффектом выпуклости;
- inset – линия границы будет иметь объемный вид с эффектом вдавленности;
- outset – линия границы будет иметь объемный вид с эффектом выпуклости.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="robots" content="noindex"> <title>Установка границ элементов</title> <style> p{ margin-top: 5em; padding: 2em; width: 400px; min-height: 40px; border: solid 15px green; } /* Стили границ по отдельности */ .border_1{ border-top-style: solid; border-right-style: dashed; border-bottom-style: groove; border-left-style: double; } </style> </head> <body> <p class="border_1"> Стили границ по отдельности<br> border-top-style: solid;<br> border-right-style: dashed;<br> border-bottom-style: groove;<br> border-left-style: double; </p> </body> </html>
Пример №1. Определение стиля границ элементов
Следует отметить, что свойство border-style может принимать через пробел два, три или даже четыре значения (см. пример №2):
- одно значение – стиль задается для всех четырех сторон элемента;
- два значения – первое значение задает стиль верхней и нижней границы элемента, второе – правой и левой;
- три значения – первое значение задает стиль верхней границы элемента, второе – правой и левой, третье – нижней границы элемента;
- четыре значения – границы устанавливаются по часовой стрелке: верхняя, правая, нижняя и левая.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Сокращенное свойства border-style</title> <style> p{ margin-top: 5em; padding: 2em; width: 400px; min-height: 40px; border: solid 15px green; } /* Четыре значения */ .border_1{ border-style: none dotted dashed solid; } /* Три значения */ .border_2{ border-style: double groove ridge; } /* Два значения */ .border_3{ border-style: inset outset; } /* Одно значение */ .border_4{ border-style: dashed; } </style> </head> <body> <p class="border_1"> Четыре значения<br> border-style: none dotted dashed solid; </p> <p class="border_2"> Три значения<br> border-style: double groove ridge; </p> <p class="border_3"> Два значения<br> border-style: inset outset; </p> <p class="border_4"> Одно значение<br> border-style: dashed; </p> </body> </html>
Пример №2. Использование сокращенного свойства border-style
Ширина границ элемента,
css-свойство border-width и его производные
Для установки ширины границ используются похожие ненаследуемые свойства border-width, border-top-width, border-bottom-width, border-left-width, border-right-width (см. пример №3). Все они могут принимать ряд значений, которые определяют ширину границы:
- ширина – принимаются любые единицы измерения, используемые в CSS;
- thin – устанавливает тонкую границу;
- medium – устанавливает среднюю границу;
- thick – устанавливает толстую границу.
Опять же, свойство border-width может принимать через пробел два, три или даже четыре значения:
- одно значение – ширина задается для всех четырех сторон элемента;
- два значения – первое значение задает ширину верхней и нижней границы элемента, второе – правой и левой;
- три значения – первое значение задает ширину верхней границы элемента, второе – правой и левой, третье – нижней границы элемента;
- четыре значения – ширина границ устанавливается по часовой стрелке: для верхней границы, затем правой, нижней и левой.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Установка ширины границ элементов</title> <style> p{ margin-top: 5em; padding: 2em; width: 400px; min-height: 40px; border: solid 15px green; } /* Переопределяем ширину границ */ /* Ширина границ по отдельности */ .border_1{ border-top-width: thin; border-right-width: 3px; border-bottom-width: thick; border-left-width: 0.8em; } /* Четыре значения в сокращенном свойстве */ .border_2{ border-width: thin medium thick 10px; } /* Три значения в сокращенном свойстве */ .border_3{ border-width: 1px medium 0.5em; } /* Два значения в сокращенном свойстве */ .border_4{ border-width: 0.1em 0.3em; } /* Одно значение в сокращенном свойстве */ .border_5{ border-width: 5px; } </style> </head> <body> <p class="border_1"> Ширина границ по отдельности<br> border-top-width: thin;<br> border-right-width: 3px;<br> border-bottom-width: thick;<br> border-left-width: 0.8em; </p> <p class="border_2"> Четыре значения<br> border-width: thin medium thick 10px; </p> <p class="border_3"> Три значения<br> border-width: 1px medium 0.5em; </p> <p class="border_4"> Два значения<br> border-width: 0.1em 0.3em; </p> <p class="border_5"> Одно значение<br> border-width: 5px; </p> </body> </html>
Пример №3. Установка ширины границ элементов
Цвет границ элемента,
css-свойство border-color и его производные
Для установки цвета границ используются ненаследуемые свойства border-color, border-top-color, border-bottom-color, border-left-color, border-right-color (см. пример №4). Все они принимают в качестве значений цвет либо специальное значение transparent, делающее рамку прозрачной (бесцветной), при этом сама граница остается, влияя на размеры элемента. Свойство border-color, кроме того, может принимать через пробел два, три или даже четыре значения, которые задают цвет границ по описанному выше алгоритму:
- одно значение – цвет задается для всех четырех сторон элемента;
- два значения – первое значение задает цвет верхней и нижней границы элемента, второе – правой и левой;
- три значения – первое значение задает цвет верхней границы элемента, второе – правой и левой, третье – нижней границы элемента;
- четыре значения – цвет границ устанавливается по часовой стрелке: для верхней границы, затем правой, нижней и левой.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Установка цвета границ элементов</title> <style> p{ margin-top: 5em; padding: 2em; width: 400px; min-height: 40px; border: solid 15px; } /* Цвета границ через слова */ .border_1{ border-left-color: black; border-right-color: red; border-top-color: green; border-bottom-color: blue; } /* Цвета границ в rgb */ .border_2{ border-left-color: #000000; border-right-color: #FF0000; border-top-color: #00FF00; border-bottom-color: #0000FF; } /* Цвета границ в rgba */ .border_3{ border-left-color: rgba(0,0,0,0.7); border-right-color: rgba(255,0,0,0.7); border-top-color: rgba(0,255,0,0.7); border-bottom-color: rgba(0,0,255,0.7); } /* Цвета границ в hsl */ .border_4{ border-left-color: hsl(0,0%,0%); border-right-color: hsl(0,100%,50%); border-top-color: hsl(120,100%,50%); border-bottom-color: hsl(240,100%,50%); } /* Цвета границ в hsla */ .border_5{ border-left-color: hsla(0,0%,0%,0.5); border-right-color: hsla(0,100%,50%,0.5); border-top-color: hsla(120,100%,50%,0.5); border-bottom-color: hsla(240,100%,50%,0.5); } /* Цвета границ в сокращенном свойстве */ .border_6{ border-color: #00FF00 blue rgb(255,0,0) black; } </style> </head> <body> <p class="border_1"> Цвета границ через слова<br> border-left-color: black;<br> border-right-color: red;<br> border-top-color: green;<br> border-bottom-color: blue; </p> <p class="border_2"> Цвета границ в rgb<br> border-left-color: #000000;<br> border-right-color: #FF0000;<br> border-top-color: #00FF00;<br> border-bottom-color: #0000FF; </p> <p class="border_3"> Цвета границ в rgba<br> border-left-color: rgba(0,0,0,0.7);<br> border-right-color: rgba(255,0,0,0.7);<br> border-top-color: rgba(0,255,0,0.7);<br> border-bottom:-color rgba(0,0,255,0.7); </p> <p class="border_4"> Цвета границ в hsl<br> border-left-color: hsl(0,0%,0%);<br> border-right-color: hsl(0,100%,50%);<br> border-top-color: hsl(120,100%,50%);<br> border-bottom-color: hsl(240,100%,50%); </p> <p class="border_5"> Цвета границ в hsla<br> border-left-color: hsla(0,0%,0%,0.5);<br> border-right-color: hsla(0,100%,50%,0.5);<br> border-top-color: hsla(120,100%,50%,0.5);<br> border-bottom-color: hsla(240,100%,50%,0.5); </p> <p class="border_5"> Цвета границ в сокращенном свойстве<br> border-color: #00FF00 blue rgb(255,0,0) black; </p> </body> </html>
Пример №4. Установка цвета границ элементов
Универсальные css-свойства border,
border-top, border-bottom, border-right и border-left
Имеется возможность задать все характеристики границы элемента одновременно при помощи универсальных ненаследуемых свойств border, border-top, border-bottom, border-left, border-right (см. пример №5). Стиль, ширину и цвет при этом нужно указывать через пробел, но в любом порядке.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Установка границ элементов</title> <style> p{ margin-top: 5em; padding: 2em; width: 400px; min-height: 40px; color: red; background-color: yellow; } .border_1{border: solid;} .border_2{border: dashed 2px;} .border_3{border: double green;} .border_4{border: dotted #0000FF 10px;} </style> </head> <body> <p class="border_1"> border: solid<br> По умолчанию используется цвет шрифта и<br> border-width: medium </p> <p class="border_2"> border: dashed 2px<br> По умолчанию используется цвет шрифта<br> </p> <p class="border_3"> border: double green<br> По умолчанию: border-width: medium </p> <p class="border_4"> border: dotted #0000FF 5px </p> </body> </html>
Пример №5. Установка границ элементов
Скругление границ элемента,
css-свойство border-radius и его производные
Внешний вид границ элементов можно также изменять за счет величины скругления углов границ элементов. Делается это за счет использования ненаследуемых ствойств border-radius, border-top-left-radius, border-top-right-radius, border-bottom-left-radius, border-bottom-right-radius. Все они принимают в качестве радиуса значения в любых доступных в CSS единицах измерения, а также процентах, отсчет которых производится относительно ширины блока. Также можно через слеш / задавать сразу два радиуса, если подразумевается сгругление по эллипсу (см. рисунок №6 и пример №7). Свойства срабатывают и при отсутствии границ, в этом случае происходит скругление фона элемента.
Рис. №6. Схема скругления углов рамки элемента
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Установка радиусов границ элементов</title> <style> p{ margin-top: 5em; padding: 2em; width: 400px; min-height: 40px; border: solid 15px green; } /* Скругление углов по окружности */ .border_1{ border-top-left-radius: 15px; border-top-right-radius: 30px; border-bottom-right-radius: 15px; border-bottom-left-radius: 30px; } /* Скругление углов по эллипсу */ .border_2{ border-top-left-radius: 1em 2.5em; border-top-right-radius: 1em 2.5em; border-bottom-right-radius: 1em 2.5em; border-bottom-left-radius: 1em 2.5em; } </style> </head> <body> <p class="border_1"> Скругление углов по окружности<br> border-top-left-radius: 15px;<br> border-top-right-radius: 30px;<br> border-bottom-right-radius: 15px;<br> border-bottom-left-radius: 30px; </p> <p class="border_2"> Скругление углов по эллипсу<br> border-top-left-radius: 1em 2.5em;<br> border-top-right-radius: 1em 2.5em;<br> border-bottom-right-radius: 1em 2.5em;<br> border-bottom-left-radius: 1em 2.5em; </p> </body> </html>
Пример №7. Установка радиусов границ элементов
Свойство border-radius, кроме того, может принимать через пробел два, три или даже четыре значения (см. пример №8):
- одно значение – радиус задается для всех четырех углов элемента;
- два значения – первое значение задает радиус верхнего левого и нижнего правого углов элемента (расположены по диагонали), второе – верхнего правого и нижнего левого углов элемента (расположены по диагонали);
- три значения – первое значение задает радиус верхнего левого угла элемента, второе – верхнего правого и нижнего левого углов элемента (расположены по диагонали), третье – нижнего правого угла элемента;
- четыре значения – радиусы устанавливаются по часовой стрелке для верхнего левого и верхнего правого углов, затем для нижнего правого и нижнего левого углов элемента.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Сокращенное свойство border-radius</title> <style> p{ margin-top: 5em; padding: 2em; width: 400px; min-height: 40px; border: solid 15px green; } /* Два значения для скругления по эллипсу */ .border_1{ border-radius: 10px 20px / 20px 40px; } /* Одно значение для скругления по эллипсу */ .border_2{ border-radius: 20px / 40px; } </style> </head> <body> <p class="border_1"> Два значения для скругления по эллипсу<br> border-radius: 10px 20px / 20px 40px; </p> <p class="border_2"> Одно значение для скругления по эллипсу<br> border-radius: 20px / 40px; </p> </body> </html>
Пример №8. Использование сокращенного свойства border-radius
Внешняя рамка элемента, css-свойства outline,
outline-style, outline-width и outline-color
Если необходимо выделить элемент внешней рамкой, при этом не влияя на его размеры или положение в документе, используются ненаследуемые свойства outline, outline-style, outline-width, outline-color (см. пример №9). Все они могут принимать практически те же значения, что и соответствующие свойства, использующиеся для определения внешнего вида границ элементов. Отличие есть только у свойства outline-color, принимающего вместо специального значения transparent значение invert, которое указывает браузеру на необходимость инверсии цвета для того, чтобы гарантировать видимость границы при любом цвете фона элемента.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Установка контура элементов</title> <style> p{ width: 300px; height: 150px; margin: 5em; padding: 1em; } /* Сокращенное свойство */ .p_1{ border: 5px solid violet; outline: dashed 5px green; outline-offset: 10px; } /* Цвет задаем отдельно */ .p_2{ border: 5px solid violet; outline: groove 8px; outline-color: invert; outline-offset: 5px; } /* Стиль задаем отдельно */ .p_3{ border: 5px solid violet; outline: 5px rgba(0%,0%,100%,0.4); outline-style: double; outline-offset: 1em; } /* Ширину задаем отдельно */ /* Контур будет внутри */ .p_4{ border: 5px solid violet; outline: inset hsla(240,100%,50%,0.5); outline-width: 1em; outline-offset: -2em; } </style> </head> <body> <p class="p_1"> Сокращенное свойство<br> outline: dashed 5px green;<br> outline-offset: 10px; </p> <p class="p_2"> Цвет задаем отдельно<br> outline: groove 8px;<br> outline-color: invert;<br> outline-offset: 5px; </p> <p class="p_3"> Стиль задаем отдельно<br> outline: 5px rgba(0%,0%,100%,0.4);<br> outline-style: double;<br> outline-offset: 1em; </p> <p class="p_4"> Ширину задаем отдельно<br> Контур будет внутри<br> outline: inset hsla(240,100%,50%,0.5);<br> outline-width: 1em;<br> outline-offset: -2em; </p> </body> </html>
Пример №9. Установка контура элементов
Расстояние между внешней и внутренней границами,
css-свойство outline-offset
Для внешних границ дополнительно определено еще одно полезное ненаследуемое свойство outline-offset, которое позволяет задавать расстояние между внешней и внутренней границами. В качестве значения свойство принимает величину расстояния в любых доступных единицах измерения CSS (см. пример №9). Кроме того, разрешается использовать и отрицательные значения, тогда рамка будет отображена внутри самого элемента.
На практике, в процессе верстки страниц желательно использовать распространенный прием обнуления всех отступов, показанный в примере №10. Дело в том, что разные браузеры могут по-разному задавать внутренние и внешние отступы элементов, что может приводить к нежелательным эффектам для веб-мастера. Поэтому лучше обнулить все отступы и задавать их самостоятельно в зависимости от конкретной ситуации.
/* Обнуляем отступы */ *{ margin: 0; /* Обнуляем внешние отступы */ padding: 0; /* Обнуляем внутренние отступы */ outline: 0; /* Обнуляем толщину внешней границы */ } /* Остальные стили */
Пример №10. Обнуление отступов элементов
Создание теней, css-свойство box-shadow
Вместо использования внешней рамки имеется возможность эффективного выделения элементов при помощи теней. Для этого применяется ненаследуемое свойство box-shadow, которое создает одну или несколько теней, значения которых тогда нужно перечислять через запятую. Формат записи свойства имеет вид {box-shadow: смещение_x смещение_y размытие растяжение цвет inset} (см. пример №11), где:
- смещение_x – обязательный параметр, который в случае положительных значений смещает тень относительно элемента по горизонтали вправо, а в случае отрицательных значений – влево; если значение параметра равно нулю, то смещение отсутствует;
- смещение_y – обязательный параметр, который в случае положительных значений смещает тень относительно элемента вверх, а в случае отрицательных значений – вниз; если значение параметра равно нулю, то смещение отсутствует;
- размытие – необязательный параметр, который устанавливает радиус размытия тени; чем больше радиус, тем больше тень становится размытой и осветвленной, особенно по краям; если параметр не указывается, то браузер по умолчанию установит радиус размытия равный нулю, в результате чего тень будет полностью четкой с резким контуром;
- растяжение – необязательный параметр, который в случае положительного значения растягивает тень, а в случае отрицательного значения сжимает тень; если же значение не будет установлено, то браузер по умолчанию установит растяжение равное нулю и тень будет иметь те же размеры, что и элемент;
- цвет – определяет цвет тени; т.к. браузеры по умолчанию задают разный цвет тени, то желательно всегда задавать этот необязательный параметр;
- inset – тень будет выводиться внутри элемента, при этом она будет располагаться над фоном, но под любым содержимым элемента; данный параметр не является обязательным и может применяться как в качестве первого параметра, так и последнего в списке;
- none – тень добавляться не будет (используется по умолчанию).
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Установка теней элементов</title> <style> p{ width: 300px; height: 100px; margin-top: 7em; } .p_1{ border: solid 5px red; background-color: yellow; box-shadow: 10px 10px 50px 15px blue; } .p_2{ border: solid 5px orange; background-color: violet; box-shadow: 5px 5px 8px 10px blue inset, 10px 10px 8px 10px green, 15px 15px 8px 10px red } </style> </head> <body> <p class="p_1"> Одна тень. </p> <p class="p_2"> Несколько теней. </p> </body> </html>
Пример №11. Использование свойства box-shadow
Для указания числовых значений параметров свойства box-shadow разрешается использовать все доступные в CSS единицы измерения, а для указания цвета использовать все доступные в CSS цветовые модели.
Быстрый переход к другим страницам
- Определение размеров элементов
- Установка границ элементов
- Определение отступов элементов
- Вернуться к оглавлению учебника