Border-radius w procentach (%) i pikselach (px) lub em
124
Jeśli użyję wartości piksela lub em dla border-radius, promień krawędzi jest zawsze łukiem kołowym lub kształtem pigułki, nawet jeśli wartość jest większa niż największy bok elementu.
Kiedy używam procentów , promień krawędzi jest eliptyczny i zaczyna się na środku każdej strony elementu, co daje kształt owalu lub elipsy :
Po pierwsze, musisz zrozumieć, że właściwość border-radius przyjmuje 2 wartości. Te wartości to promienie na osi X / Y ćwiartki elipsy określającej kształt narożnika.
Jeśli ustawiona jest tylko jedna z wartości, druga wartość jest równa pierwszej. Więc border-radius: xjest równoważne border-radius:x/x;.
Więc border-radius:50%;definiuje raddi elipsy w ten sposób:
promienie na osi X stanowią 50% szerokości kontenerów
promienie na osi Y stanowią 50% wysokości kontenerów
Piksel i inne jednostki
Użycie jednej wartości innej niż procent dla promienia obramowania (em, in, jednostki związane z rzutnią, cm ...) zawsze da w wyniku elipsę o takich samych promieniach X / Y. Innymi słowy, koło .
Po ustawieniu border-radius:999px;promienie okręgu powinny wynosić 999px. Ale inna zasada jest stosowana, gdy krzywe zachodzą na siebie, zmniejszając promienie koła do połowy rozmiaru najmniejszego boku. W twoim przykładzie jest to równe połowie wysokości elementu: 50 pikseli.
W tym przykładzie (z elementem o stałym rozmiarze) możesz uzyskać ten sam wynik zarówno w pikselach, jak i procentach. Ponieważ element jest 230px x 100px, border-radius: 50%;jest równa border-radius:115px/50px;50% (po obu stronach)
div {display: inline-block;background: teal;width:230px;height:100px;padding:40px10px;box-sizing: border-box;font-family: courier;font-size:0.8em;color:#fff;}.percent {border-radius:50%;}.pixels {border-radius:115px/50px;}
Doskonała odpowiedź. Szkoda, że procentowe wartości promienia są obliczane oddzielnie dla szerokości i wysokości. Oznacza to, że nie mogę uzyskać okrągłych rogów, które skalują się wraz z rozmiarem obiektu, nie znając proporcji obiektu. Czy nie byłoby miło, gdyby procent zastosowany do większego z wymiarów obiektów?
Chris Dennis
4
@ChrisDennis To nieprawda. Jak powiedział OP, możesz po prostu użyć border-radius: 999px;. W ten sposób uzyskasz okrągłe rogi i masz pewność, że skalują się wraz z Twoim żywiołem
Gust van de Wal
9
Ale mogę nie chcieć półokrągłych końcówek pudełka. Chciałbym móc określić promień x jako, powiedzmy, 10% szerokości pudełka i promień y równy promieniu x.
Chris Dennis,
4
Hej, czy zrobiłeś inny post z własną odpowiedzią, taki jak ten? Byłbym wdzięczny za przeczytanie tych.
Ced,
3
Ale to, co faktycznie działa z procentami, to: border-radius: 50%/100%(Testowane w Chrome 60 + 61)
denns
6
Po prostu podziel pierwszą wartość przez żądany% ... więc jeśli chcesz, aby border-radius wynosił 50%, napisz:
Czy to nie tylko 25% szerokości i 50% wysokości? To nie to samo, co 50% wysokości w obu kierunkach X i Y.
mpen
co to do cholery jest ta składnia! to działa! Nigdy nie wiedziałem, że istnieje, to miłe!
Uri Kutner
To tylko matematyka, stary
CyberJ
1
Nie wiem, jakiego rodzaju matematykę robiłeś, ale to nie jest „tylko matematyka”. Jest to specjalnie zdefiniowany skrót dla border-radius, który nie ma nic wspólnego z dzieleniem arytmetycznym. w3.org/TR/css-backgrounds-3/#border-radius
border-radius: 999px;
. W ten sposób uzyskasz okrągłe rogi i masz pewność, że skalują się wraz z Twoim żywiołemborder-radius: 50%/100%
(Testowane w Chrome 60 + 61)Po prostu podziel pierwszą wartość przez żądany% ... więc jeśli chcesz, aby border-radius wynosił 50%, napisz:
lub inny przykład:
Możesz łatwo wykonać matematykę w js lub SASS.
źródło