Кратко
СкопированоСвойство border закругляет углы почти у любого элемента. И даже если у блока не задана явная рамка.
🔮 Волшебное свойство! Часто нужно в работе, поскольку дизайнеры не любят острые углы.
Пример
СкопированоСамая простая штука — кнопка с закруглёнными краями:
<button class="button">Купить</button>
<button class="button">Купить</button>
.button { border: 2px solid transparent; border-radius: 6px;}
.button {
border: 2px solid transparent;
border-radius: 6px;
}
Обрати внимание, что мы переопределили стандартную рамку кнопки и слегка закруглили углы. Так же можно сбросить рамку с помощью none, скругление всё равно останется.
Как понять
СкопированоСвойство border задаёт радиус закругления каждого из углов элемента.
Если значение задано в процентах, то оно будет высчитываться от размеров элемента: горизонтальные размеры будут высчитываться от ширины элемента, а вертикальные — соответственно, от высоты (поэтому для квадратного элемента можно задать border, чтобы сделать его круглым).
Как пишется
СкопированоПройдёмся по синтаксису:
div { /* радиус в пикселях */ border-radius: 5px; /* радиус в процентах */ border-radius: 50%; /* разные радиусы для каждого из четырёх углов элемента */ border-radius: 5px 0 0 50%;}
div {
/* радиус в пикселях */
border-radius: 5px;
/* радиус в процентах */
border-radius: 50%;
/* разные радиусы для каждого из четырёх углов элемента */
border-radius: 5px 0 0 50%;
}
Можно управлять степенью закругления каждого из углов в отдельности или задать одно значение для всех углов сразу. Причём значение на самом деле состоит из двух — скругления по горизонтальной оси и по вертикальной. Чтобы явно задать скругление для каждой из осей (т. е. получить не круглое значение, а эллипсоидное), это значение следует записывать через символ /:
.ellipse { border-radius: 2em / 50%;}
.ellipse {
border-radius: 2em / 50%;
}
Такая запись совсем не означает, что наше скругление будет равно результату деления 5em на какой-то размер, а эквивалентна такой записи:
.ellipse { border-top-left-radius: 2em 50%; border-top-right-radius: 2em 50%; border-bottom-right-radius: 2em 50%; border-bottom-left-radius: 2em 50%;}
.ellipse {
border-top-left-radius: 2em 50%;
border-top-right-radius: 2em 50%;
border-bottom-right-radius: 2em 50%;
border-bottom-left-radius: 2em 50%;
}
Подсказки
Скопировано💡 Значение по умолчанию: 0.
💡 border сработает даже если не будет задана видимая рамка.
💡 Чтобы увидеть результат работы свойства, надо задать фоновую заливку или картинку блоку, к которому применяется закругление углов. Или рамку, или фон для родительского элемента. Что-то, что отделит белое от белого 🤗
💡 Можно управлять радиусом закругления каждого угла в отдельности при помощи свойств:
border— радиус закругления для левого верхнего угла.- top - left - radius border— радиус закругления для правого верхнего угла.- top - right - radius border— радиус закругления для правого нижнего угла.- bottom - right - radius border— радиус закругления для левого нижнего угла.- bottom - left - radius
На практике
Скопированосоветует
Скопировано🛠 Если вы не уверены, что блок всегда будет квадратным, то для подстраховки можно указывать закругление в абсолютных единицах. Причём указать значение, бо́льшая чем максимальная ширина и высота блока. Например, border. Если в этой ситуации указывать закругление в процентах, то значение будет считаться от ширины и высоты. Что приведёт к вытягиванию блока в яйцо:
советует
Скопировано🛠 Самый крутой лайфхак — это круглые элементы при помощи border. Они часто нужны для всяких лейблов на странице.
<button class="icon" data-notifications="3"></button>
<button class="icon" data-notifications="3"></button>
.icon { background-image: url(eyes.png);}.icon::after { content: attr(data-notifications); /* равные ширина */ width: 25px; /* и высота */ height: 25px; /* закругляем углы на 50% */ border-radius: 50%; color: #ffffff; background-color: #ed4242;}
.icon {
background-image: url(eyes.png);
}
.icon::after {
content: attr(data-notifications);
/* равные ширина */
width: 25px;
/* и высота */
height: 25px;
/* закругляем углы на 50% */
border-radius: 50%;
color: #ffffff;
background-color: #ed4242;
}