- Руководство по свойству outline в CSS
- Как разница между Outlines и Borders
- Стилизация Outline
- Свойство outline-width
- Свойство outline-color
- Сокращенное свойство outline
- Удаление контура outline у активных ссылок
- Похожие посты
- Руководство по свойству opacity в CSS
- Руководство по таблицам в CSS
- Руководство по свойству margin в CSS
- border vs outline
- Tip
- Все о свойстве border
- Основы
- Border-Radius
- Несколько границ
- Изменение углов
- CSS фигуры
- Создание Speech Bubble
- Итог
Руководство по свойству outline в CSS
CSS-свойство outline позволяет вам определить область контура вокруг элемента.
Контур — это линия, которая рисуется сразу за границей элемента. Контуры обычно используются для обозначения фокуса или активного состояния таких элементов как кнопки, ссылки, поля формы и т. д.
В этом разделе мы разберем, как установить стиль, цвет и ширину контура.
Как разница между Outlines и Borders
Контур ( outline ) выглядит очень похожим на границу ( border ), но имеет отличительные особенности:
- Контуры не занимают места, всегда располагаются над элементом и могут перекрывать другие элементы на странице;
- В отличие от границ, для контура не получится установить разные цвета или стили для каждой из сторон;
- Контуры не оказывают никакого влияния на окружающие элементы, кроме наложения;
- В отличие от границ, контуры не изменяют размер или положение элемента;
- Контуры могут быть не прямоугольными, но вы не можете создавать контуры в виде окружности.
Если вы наметите контур на элементе, он займет столько же места на веб-страницах, как если бы у вас не было на нем контура. Контур перекрывает поля margins (прозрачная область за пределами границы) и окружающие элементы.
Стилизация Outline
Свойство outline-style устанавливает стиль контура элемента, например: solid , dotted и т. д.
Свойство outline-style может иметь одно из следующих значений: none , solid , dashed , dotted , double , inset , outset , groove , и ridge . Теперь давайте взглянем на следующую иллюстрацию: она дает вам представление о различиях между типами стилей контура.
Значение none не отображает контур. Значения inset , outset , groove и ridge создают 3D-подобный эффект, который зависит от значения цвета контура. Обычно этот эффект достигается созданием «тени» из двух цветов, которые немного светлее и темнее, чем цвет контура.
Давайте попробуем следующий пример и посмотрим, как это работает:
Вы должны указать outline-style , чтобы контур отображался вокруг элемента, потому что по умолчанию он имеет значение none . Ширина или толщина контура по умолчанию является medium , а цвет контура по умолчанию такой же, как и color текста.
Свойство outline-width
Свойство outline-width определяет ширину контура, добавляемого в элемент.
Посмотрим следующий пример, чтобы понять, как это на самом деле работает:
Ширина контура может быть указана с использованием любого значения, например, px , em , rem и т. д. Его также можно указать с помощью одного из трех ключевых слов: thin , medium , и thick Процентные или отрицательные значения недопустимы — как и свойство border-width .
Свойство outline-color
Свойство outline-color устанавливает цвет контура элемента.
Это свойство принимает те же значения, что и свойство color .
Следующие правила добавляют сплошной контур синего цвета вокруг абзацев.
CSS-свойство outline-width или outline-color не будут работать, если используются раздельно. Используйте свойство outline-style , чтобы сначала установить стиль контура.
Сокращенное свойство outline
CSS-свойство outline является кратким свойством для установки одного или нескольких отдельных свойств outline-style , outline-width и outline-color в одном правиле.
Давайте посмотрим на следующий пример, чтобы понять, как он работает:
Если значение для отдельного свойства outline пропущено или не указано, вместо него будет использоваться значение по умолчанию для этого свойства, если оно есть.
Например, если значение для свойства outline-color отсутствует или не указано при установке контуров, свойство color элемента будет использоваться в качестве значения для контура элемента.
В следующем примере контур будет представлять собой сплошную зеленую линию шириной 5 пикселей:
Но в случае outline-style отсутствие значения не будет отображать контуры вообще, поскольку значением по умолчанию для этого свойства является none . В следующем примере контура не будет:
Удаление контура outline у активных ссылок
Свойство outline используется для удаления контура вокруг активных ссылок.
Однако, рекомендуется применять некоторый альтернативный стиль, чтобы указать, что ссылка имеет фокус, т.к. на мобильных устройствах удобнее показывать какой элемент нажался.
Следующий пример показывает, как убрать контур у ссылок
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка 5 / 5. Количество оценок: 3
Оценок пока нет. Поставьте оценку первым.
Похожие посты
Руководство по свойству opacity в CSS
CSS-свойство opacity означает непрозрачность и теперь является частью спецификаций CSS3. Старые браузеры имеют разные способы управления непрозрачностью. Opacity в Firefox, Safari, Chrome, Opera и IE9 Вот самый простой синтаксис для назначения непрозрачности CSS во всех современных браузерах. Приведенное выше правило сделает элемент абзаца непрозрачным на 70% (или прозрачным на 30%). Свойство opacity принимает значение от…
Руководство по таблицам в CSS
Таблицы обычно используются для отображения каких-либо упорядоченных табличных данных. После того, как вы создали HTML-таблицу, с помощью CSS вы можете значительно улучшить ее внешний вид. CSS предоставляет несколько свойств, которые позволяют вам управлять компоновкой и представлением элементов таблицы. В этом разделе вы увидите, как использовать CSS для стилизации таблиц. Добавление границ (border) в таблицы CSS-свойство…
Руководство по свойству margin в CSS
CSS-свойство margin позволяют вам установить интервал вокруг границы элемента (или края блока элемента, если у него нет определенной границы). На цвет элемента не влияет цвет фона background-color, он всегда прозрачен. Однако, если родительский элемент имеет цвет фона, он будет виден через область margin. Margin для отдельных сторон Вы можете установить margin для отдельных сторон используя…
Разработка сайтов для бизнеса
Если у вас есть вопрос, на который вы не знаете ответ — напишите нам, мы поможем разобраться. Мы всегда рады интересным знакомствам и новым проектам.
border vs outline
The primary purpose of outline is to support accessibility. It provides visual feedback for links, buttons when users navigate between them with the Tab key.
You shouldn’t remove outline style from elements when they are being focused. Setting outline: none or outline: 0 will make the page inaccessible for the people who don’t use mouse or have a visual impairment.
One of the first and popular CSS reset library removed the outline, but the author leaves a comment that reminds us to define the focus styles:
/* remember to define focus styles! */
:focus
outline: 0;
>
But this reset was removed in the latest version.
If you have to remove the outline style, then it’s recommended to provide alternative styles. Here are some pure CSS based solutions:
a:focus
background: . ;
color: . ;
>
a:focus
outline: thin dotted;
>
There’s another approach which uses JavaScript to handle the events. If we detect there is a mouse event, then remove the outline style. In the other case, if a keyboard event is detected then we restore the outline style.
Here is a piece of code demonstrating this idea:
// Append a custom style to `head`
const style = document.createElement('style');
document.head.appendChild(style);
const remove = () => (style.innerHTML = ':focus < outline: 0 >');
const restore = () => (style.innerHTML = '');
// Remove the outline initially
remove();
document.addEventListener('mousedown', () => restore());
document.addEventListener('keydown', () => remove());
Some other websites such as Github use a similar approach. Starting with a CSS class that resets the outline property:
.intent-mouse a:focus
outline: 0;
>
Initially, the CSS class is added to the body element:
body class="intent-mouse">
.
body>
By detecting the keyboard and mouse events, we can remove the class or add it back to the body element:
document.addEventListener('mousedown', () =>
document.body.classList.add('intent-mouse');
>);
document.addEventListener('keydown', (e) =>
// If users press the Tab key
// then we assume that they intent to use the keyboard to navigate
if (e.key === 'Tab')
document.body.classList.remove('intent-mouse');
>
>);
Tip
The outline property is useful when you want to visualize elements on the page. In the following sample code, we iterate over all the elements and set the outline property with a random hex color:
[].forEach.call(document.querySelectorAll('*'), (ele) =>
const color = `#\$ `;
ele.style.outline = `1px solid \$ `;
>);
Of course, you will need an opposite command to reset the outline property:
[].forEach.call(document.querySelectorAll('*'), (ele) => ele.style.removeProperty('outline'));
You can change the selector from * to whatever you want to match the set of particular elements, for example:
// Set the outline for links only
[].forEach.call(
document.querySelectorAll('a'),
.
);
Все о свойстве border
Все знакомы с css параметром border, но есть ли вещи, которые мы не знаем о нем?
Основы
border-width: thick; border-style: solid; border-color: black;
Например у параметра border-width есть три параметра: thin, medium, thick:
Если необходимо менять цвет границы при наведении на объект:
Border-Radius
border-radius — это новый параметр CSS3 для отображения закругленных углов, который корректно работает во всех современных браузерах, за исключением Internet Explorer 8 (и более старых версий).
Для каждого угла можно назначить свое закругление:
border-top-left-radius: 20px; border-top-right-radius: 0; border-bottom-right-radius: 30px; border-bottom-left-radius: 0;
В приведенном примере необязательно назначать «0» border-top-right-radius и border-bottom-left-radius, если они не наследуют значения, которые должны быть изменены.
Всю конструкцию можно сжать в одну строку:
/* top left, top right, bottom right, bottom left */ border-radius: 20px 0 30px 0;
Здесь описаны самые простые и популярные примеры применения параметра border. Перейдем к более сложным.
Несколько границ
Border-Style
solid, dashed, and dotted — самые популярные значения параметра border-style, но давайте рассмотрим другие, например, groove and ridge.
border: 20px groove #e3e3e3;
border-color: #e3e3e3; border-width: 20px; border-style: groove;
Outline
Этот способ отлично работает, но ограничен созданием двойной рамки. Если вам необходимо отобразить несколько границ элемента, то необходимо использовать другую технику.
Псевдоэлементы
.box < width: 200px; height: 200px; background: #e3e3e3; position: relative; border: 10px solid green; >/* Create two boxes with the same width of the container */ .box:after, .box:before < content: ''; position: absolute; top: 0; left: 0; bottom: 0; right: 0; >.box:after < border: 5px solid red; outline: 5px solid yellow; >.box:before
Возможно это не самое элегантное решение, однако оно работает
Box-Shadow
Изменение углов
border-radius: 50px / 100px; /* horizontal radius, vertical radius */
border-top-left-radius: 50px 100px; border-top-right-radius: 50px 100px; border-bottom-right-radius: 50px 100px; border-bottom-left-radius: 50px 100px;
Эта техничка бывает полезна, если необходимо имитировать искривление, а не закругление. Например, так можно получить эффект скрученной бумаги:
CSS фигуры
Наиболее частым примером использования CSS фигур является отображение стрелок. Чтобы понять, как это работает, необходимо разобраться с использованием отдельного border-color для каждой стороны и установкой значения «0» для width и height:
А теперь оставляем только синий треугольник:
Создание Speech Bubble
Теперь нужно расположить стрелку-треугольник в нужном месте. Вот наш цветной квадратик:
Оставляем только четверть квадратика:
Теперь перемещаем ниже и закрашиваем:
.speech-bubble < /* … other styles */ border-radius: 10px; >.speech-bubble:after < content: ''; position: absolute; width: 0; height: 0; border: 15px solid; border-top-color: #292929; top: 100%; left: 50%; margin-left: -15px; /* adjust for border width */ >
Примеры применения:
/* Speech Bubbles Usage: Apply a class of .speech-bubble and .speech-bubble-DIRECTIONHi there*/ .speech-bubble < position: relative; background-color: #292929; width: 200px; height: 150px; line-height: 150px; /* vertically center */ color: white; text-align: center; border-radius: 10px; font-family: sans-serif; >.speech-bubble:after < content: ''; position: absolute; width: 0; height: 0; border: 15px solid; >/* Position the Arrow */ .speech-bubble-top:after < border-bottom-color: #292929; left: 50%; bottom: 100%; margin-left: -15px; >.speech-bubble-right:after < border-left-color: #292929; left: 100%; top: 50%; margin-top: -15px; >.speech-bubble-bottom:after < border-top-color: #292929; top: 100%; left: 50%; margin-left: -15px; >.speech-bubble-left:after
Вертикальное центрирование текста
минус использования line-height при вертикальном центрировании в ограничении текста одной строкой. Для решения этой проблемы, можно применить display: table к нашему Speech Bubble и display: table-cell к тексту:
.speech-bubble < /* other styles */ display: table; >.speech-bubble p
Еще один пример нестандартного использования границ:
Итог
Использование параметра border не ограничивается одним лишь «1px solid black», с помощью границ можно создавать различные фигуры, причем достаточно один раз написать CSS-класс и применять его к множеству элементов на странице.