es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
}
Tags:  , , , ,

Answer

  1. Avatar for 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 propiedad border-radius se aplica a la clase .bill, que es el contenedor del elemento span. Por lo tanto, la propiedad border-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 elemento input, 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 elemento input, nada se redondea porque el elemento input es un elemento de caja rectangular y border-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

    .bill span {
      background-color: red;
      border-radius: 7px;
      overflow: hidden;
    }
    
    input {
      background-color: red;
      border: none;
      text-align: end;
    }
    

Comments are closed.