Radio del borde en porcentaje (%) y píxeles (px) o em
124
Si utilizo un valor de píxel o em para el radio del borde, el radio del borde es siempre un arco circular o una forma de píldora, incluso si el valor es mayor que el lado más grande del elemento.
Cuando uso porcentajes , el radio del borde es elíptico y comienza en el medio de cada lado del elemento, lo que da como resultado una forma ovalada o elipse :
Primero, debe comprender que la propiedad border-radius toma 2 valores. Estos valores son los radios en el eje X / Y de un cuarto de elipse que define la forma de la esquina.
Si solo se establece uno de los valores, el segundo valor es igual al primero. Entonces border-radius: xes equivalente a border-radius:x/x;.
Porcentajes: consulte la dimensión correspondiente del cuadro de borde.
Entonces border-radius:50%;define el raddi de la elipse de esta manera:
el radio en el eje X es el 50% del ancho de los contenedores
el radio en el eje Y es el 50% de la altura de los contenedores
Pixel y otras unidades
El uso de un valor que no sea un porcentaje para el radio del borde (em, pulg, unidades relacionadas con la ventana gráfica, cm ...) siempre dará como resultado una elipse con los mismos radios X / Y. En otras palabras, un círculo .
Cuando establezca, border-radius:999px;los radios del círculo deben ser de 999 px. Pero se aplica otra regla cuando las curvas se superponen reduciendo el radio del círculo a la mitad del tamaño del lado más pequeño. Entonces, en su ejemplo, es igual a la mitad de la altura del elemento: 50px.
Para este ejemplo (con un elemento de tamaño fijo) puede obtener el mismo resultado con px y porcentajes. Tal como está el elemento 230px x 100px, border-radius: 50%;es equivalente a border-radius:115px/50px;(50% de ambos lados):
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;}
Excelente respuesta. Es una pena que los valores de radio porcentual se calculen por separado para el ancho y el alto. Significa que no puedo obtener esquinas circulares que escalen con el tamaño del objeto, sin conocer la relación de aspecto del objeto. ¿No sería bueno si el porcentaje se aplicara a la mayor de las dimensiones de los objetos?
Chris Dennis
4
@ChrisDennis Eso no es cierto. Como dijo OP, simplemente puede usar border-radius: 999px;. De esta manera obtiene sus esquinas circulares y estar seguro de que escalan con su elemento
Ráfagas van de Wal
9
Pero es posible que no quiera extremos semicirculares para la caja. Me gustaría poder especificar el radio x como, digamos, el 10% del ancho de la caja y el radio y igual al radio x.
Chris Dennis
4
Oye, ¿hiciste otra publicación con respuesta propia como esta? Agradecería leerlos.
Ced
3
Pero lo que realmente funciona con el porcentaje es: border-radius: 50%/100%(Probado en Chrome 60 + 61)
denns
6
Simplemente divida el primer valor por el% que desee ... así que si desea un radio de borde del 50%, escriba:
¿No es solo el 25% del ancho y el 50% de la altura? Eso no es lo mismo que el 50% de la altura en las direcciones X e Y.
mpen
¿Qué diablos es esta sintaxis? ¡funciona! Nunca supe que existía, ¡es lindo!
Uri Kutner
Es solo matemático hermano
CyberJ
1
No sé qué tipo de matemáticas has estado haciendo, pero no son "solo matemáticas". Es una abreviatura especialmente definida para border-radius que no tiene nada que ver con la división aritmética. w3.org/TR/css-backgrounds-3/#border-radius
border-radius: 999px;
. De esta manera obtiene sus esquinas circulares y estar seguro de que escalan con su elementoborder-radius: 50%/100%
(Probado en Chrome 60 + 61)Simplemente divida el primer valor por el% que desee ... así que si desea un radio de borde del 50%, escriba:
u otro ejemplo:
Puede hacer los cálculos fácilmente en js o SASS.
fuente