Ответ 1
Граничный радиус:
Во-первых, вам нужно понять, что свойство border-radius принимает 2 значения. Эти значения представляют собой радиусы на оси X/Y четвертого эллипса, определяющие форму угла.
Если задано только одно из значений, второе значение равно первому. Таким образом, border-radius: x
эквивалентен border-radius:x/x;
,
Значения процентов
Ссылаясь на спецификации W3C: CSS-фон и границы уровня 3-го уровня с граничным радиусом, это то, что мы можем прочитать относительно процентных значений:
Проценты: см. Соответствующий размер поля рамки.
Таким образом, border-radius:50%;
определяет raddi эллипса таким образом:
- радиусы на оси X составляют 50% ширины контейнеров
- радиусы по оси Y составляют 50% высоты контейнеров
Пиксель и другие единицы
Использование одного значения, отличного от процента радиуса границы (em, in, связанных с видовым экраном, cm...), всегда будет приводить к эллипсу с теми же радиусами X/Y. Другими словами, круг.
Когда вы устанавливаете border-radius:999px;
радиусы круга должны быть 999px. Но другое правило применяется, когда кривые перекрываются, уменьшая радиусы круга до половины размера самой маленькой стороны. Таким образом, в вашем примере он равен половине высоты элемента: 50 пикселей.
В этом примере (с элементом фиксированного размера) вы можете получить тот же результат с обоими px и процентами. Поскольку элемент равен 230px x 100px
, border-radius: 50%;
эквивалентно border-radius:115px/50px;
(50% обеих сторон):
div {
display: inline-block;
background: teal;
width: 230px;
height: 100px;
padding: 40px 10px;
box-sizing: border-box;
font-family: courier;
font-size: 0.8em;
color: #fff;
}
.percent {
border-radius: 50%;
}
.pixels {
border-radius: 115px/50px;
}
<div class="percent">border-radius:50%;</div>
<div class="pixels">border-radius:115px/50px;</div>