Border
Свойства
border-*задают границы элемента: ширину, стиль, цвет. Границы являются частью блочной модели и влияют на размеры элемента (приbox-sizing: content-box). Поддерживаются логические свойства для RTL-языков иborder-imageдля сложных эффектов.
Зачем нужно
Границы визуально отделяют элементы, создают структуру интерфейса, подчёркивают интерактивные состояния (фокус, выделение). От простых линий до сложных узоров через border-image.
Где используется
- Карточки, таблицы, формы
- Разделители секций
- Интерактивные состояния (focus, selected)
- Декоративные элементы
- CSS-арт (треугольники, фигуры)
Предпосылки
- Что такое CSS — синтаксис
- Margin и Padding — блочная модель
Базовый синтаксис
/* Shorthand */
.box {
border: 2px solid #333;
/* border: width style color */
}
/* Развёрнуто */
.box {
border-width: 2px;
border-style: solid;
border-color: #333;
}
/* Без границы */
.clean { border: none; }
.clean { border: 0; }
border-style
.solid { border-style: solid; } /* ────── */
.dashed { border-style: dashed; } /* - - - - */
.dotted { border-style: dotted; } /* . . . . */
.double { border-style: double; } /* ══════ */
.groove { border-style: groove; } /* Вдавленная */
.ridge { border-style: ridge; } /* Выпуклая */
.inset { border-style: inset; } /* Утопленный элемент */
.outset { border-style: outset; } /* Выступающий элемент */
.none { border-style: none; } /* Нет границы */
.hidden { border-style: hidden; } /* Скрытая (для таблиц) */
Отдельные стороны
.box {
border-top: 3px solid red;
border-right: 2px dashed blue;
border-bottom: 1px dotted green;
border-left: none;
}
/* Только нижняя граница */
.underline {
border: none;
border-bottom: 2px solid #3498db;
}
/* Отдельные свойства сторон */
.box {
border-top-width: 3px;
border-top-style: solid;
border-top-color: red;
}
border-image
Изображение или градиент в качестве границы:
/* Градиентная граница */
.gradient-border {
border: 3px solid transparent;
border-image: linear-gradient(45deg, #667eea, #764ba2) 1;
}
/* Скруглённая градиентная граница (workaround) */
.rounded-gradient {
position: relative;
background: white;
border-radius: 12px;
}
.rounded-gradient::before {
content: "";
position: absolute;
inset: -3px;
border-radius: 14px;
background: linear-gradient(45deg, #667eea, #764ba2);
z-index: -1;
}
/* border-image из файла */
.fancy {
border: 20px solid transparent;
border-image-source: url("border-pattern.png");
border-image-slice: 30;
border-image-repeat: round;
}
border-imageне работает сborder-radius— границы становятся прямоугольными.
Логические свойства (Logical Properties)
.box {
/* Физические → Логические */
border-block-start: 2px solid #333; /* = border-top (LTR) */
border-block-end: 2px solid #333; /* = border-bottom */
border-inline-start: 2px solid #333; /* = border-left (LTR) */
border-inline-end: 2px solid #333; /* = border-right */
/* Shorthand */
border-block: 2px solid #333; /* top + bottom */
border-inline: 2px solid #333; /* left + right */
}
Трюк: CSS-треугольники
/* Треугольник через прозрачные границы */
.triangle-down {
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 15px solid #333;
}
.triangle-right {
width: 0;
height: 0;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
border-left: 15px solid #333;
}
/* Стрелка тултипа */
.tooltip::after {
content: "";
position: absolute;
bottom: -8px;
left: 50%;
transform: translateX(-50%);
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-top: 8px solid #333;
}
Частые ошибки
-
border: nonevsborder: 0— оба работают, ноborder: 0сбрасывает ширину, аborder: none— стиль -
border увеличивает размер при
box-sizing: content-box:.box { width: 200px; border: 5px solid; } /* Итого: 210px. Решение: box-sizing: border-box */ -
border-image+border-radius— не совместимы, радиус игнорируется -
Забыт
border-style—border-widthиborder-colorбез стиля не отображаются:.box { border-width: 2px; border-color: red; } /* Ничего не видно! Нужен border-style: solid */
Практика
- Стилизовать карточку с разными границами на каждой стороне
- Создать CSS-треугольник для стрелки тултипа
- Применить
border-imageс градиентом - Использовать логические свойства
border-block,border-inline
Связанные темы
- Border-radius — скругление углов
- Outline — внешний контур
- Box-shadow — тени
- Margin и Padding — блочная модель