Межі-радіус у відсотках (%) та пікселях (px) або em


124

Якщо я використовую значення пікселя або em для радіуса кордону, радіус краю завжди є круговою дугою або формою таблетки, навіть якщо значення перевищує найбільшу сторону елемента.

Коли я використовую відсотки , радіус краю є еліптичним і починається посередині кожної сторони елемента, що призводить до овальної або еліпсисної форми :

піксель (px) радіус межівідсоток (%) межі-радіус

Значення пікселя для радіуса кордону:

Відсоткове значення для радіуса кордону:

Чому радіус кордону у відсотках не діє так само, як радіус межі, встановлений із значеннями пікселів чи ем?

Відповіді:


181

Межі-радіус:

Спочатку потрібно зрозуміти, що властивість радіус межі приймає 2 значення. Ці значення - радіуси на осі X / Y чверті еліпса, що визначають форму кута.
Якщо встановлено лише одне зі значень, то друге значення дорівнює першому. Так що border-radius: xеквівалентно border-radius:x/x;.

Значення відсотків

Звертаючись до специфікацій W3C: Модуль фонових фонів та границь модуля 3 рівня властивості радіус кордону, це те, що ми можемо прочитати щодо процентних значень:

Відсотки: див. Відповідний розмір поля рамки.

Отже border-radius:50%;визначає raddi еліпса таким чином:

  • радіуси на осі X становлять 50% від ширини контейнерів
  • радіуси на осі Y становлять 50% від висоти контейнерів

Межі-радіус у відсотках (%) складають еліпсис

Піксельні та інші одиниці

Використання одного значення, відмінного від відсотка для радіуса кордону (em, в, одиниці, пов’язані з оглядом, см ...), завжди призведе до еліпса з однаковими радіусами X / Y. Іншими словами, коло .

При встановленні border-radius:999px;радіусів кола має бути 999 пікс. Але інше правило застосовується, коли криві перекриваються, зменшуючи радіуси кола до половини розміру найменшої сторони. Тож у вашому прикладі вона дорівнює половині висоти елемента: 50 пікс.

Прикордонний радіус у пікселях (px) має форму таблетки


У цьому прикладі (з елементом фіксованого розміру) ви можете отримати однаковий результат і з 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>


6
Відмінна відповідь. Шкода, що значення процентного радіусу розраховуються окремо для ширини та висоти. Це означає, що я не можу отримати кругові кути, які масштабуються з розміром об'єкта, не знаючи співвідношення сторін об'єкта. Не було б непогано, якби відсоток застосовувався до більшої розмірності об'єктів?
Кріс Денніс

4
@ChrisDennis Це неправда. Як OP сказав, ви можете просто використовувати border-radius: 999px;. Таким чином ви отримуєте свої круглі кути і впевнені, що вони масштабуються з вашим елементом
Gust van de Wal

9
Але я, можливо, не хотів би напівкруглих кінців до коробки. Я хотів би мати можливість вказати x-радіус як, скажімо, 10% ширини коробки та y-радіус, рівний x-радіус.
Кріс Денніс

4
Гей, ти робив інший самовідповідальний пост, як це? Буду вдячний прочитати їх.
Сід

3
Але те, що насправді працює з відсотком, це: border-radius: 50%/100%(Тестовано в Chrome 60 + 61)
1717

6

Просто розділіть перше значення на%, який ви хочете .. тому, якщо ви хочете радіус межі 50%, напишіть:

border-radius: 25%/50%; 

або інший приклад:

border-radius: 15%/30%;

Ви можете легко зробити математику в js або SASS.


1
Хіба це не лише 25% ширини і 50% висоти? Це не те саме, що 50% висоти в X і Y напрямку.
mpen

який чорт у цьому синтаксисі! це працює! Я ніколи не знав, що воно існує, це приємно!
Урі Кутнер

Це просто математичний
брато

1
Я не знаю, якою математикою ви займалися, але це не "просто математика". Це спеціально визначена стенограма для радіуса кордону, яка взагалі не має нічого спільного з арифметичним поділом. w3.org/TR/css-backgrounds-3/#border-radius
MI Wright
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.