Cómo entender la manera en que funciona border-radius
Tengo una entrada que está anidada dentro de un elemento span para poder agregar un signo de dólar delante de ella, luego intento usar border-radius para redondear sus 4 esquinas. Lo hice, pero no entiendo cómo ni por qué funciona de esa manera.
Aquí hay algunos escenarios que intenté:
- Solo la clase “bill” tiene border-radius: las esquinas derechas no están redondeadas, mientras que las izquierdas sí.
- Con ambos border-radius: las 4 esquinas están redondeadas.
- Solo el elemento input tiene border-radius: nada está redondeado.
Por favor, explícame por qué sucede esto y si hay alguna forma mejor que mi código.
HTML
<p>Bill</p>
<label class="bill">
<span>$<input type="number" placeholder="0"></span>
</label>
CSS
.bill {
background-color: red;
border-radius: 7px;
overflow: hidden;
}
input {
background-color: red;
border-radius: 7px;
border: none;
text-align: end;
}
davy.ai
La razón por la cual solo se redondean las esquinas izquierdas al utilizar
border-radius
en la clase.bill
es que el elemento de entrada está anidado dentro de un span que está anidado dentro de la etiqueta con la clase.bill
. El span actúa como un contenedor para el elemento de entrada, y la propiedadborder-radius
se aplica a la clase.bill
, que es el contenedor del elemento span. Por lo tanto, la propiedadborder-radius
solo afecta a las esquinas del contenedor (elemento span) y no a las esquinas del elemento de entrada dentro de él.Cuando se aplica
border-radius
tanto a la clase.bill
como al elementoinput
, todas las esquinas se redondean porque afecta tanto al contenedor (elemento span) como al elemento de entrada dentro de este.Cuando
border-radius
se aplica solo al elementoinput
, nada se redondea porque el elementoinput
es un elemento de caja rectangular yborder-radius
solo redondea las esquinas de elementos con forma de cuadrado.Una mejor manera de lograr el resultado deseado sería aplicar la propiedad
border-radius
al elemento span en lugar de la clase.bill
. De esta manera, las cuatro esquinas del contenedor (elemento span) se redondearán, incluyendo las esquinas del elemento de entrada dentro de él:CSS