Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

388
Vistas
Flexbox: ¿cómo envolver un elemento flexible una vez que el ancho de otro elemento flexible es 0?

Obtuve un contenedor flexible que contiene 2 elementos. Aquí hay una demostración de JSFiddle . El primero es un encabezado dinámico con texto. El segundo es un contenedor para múltiples botones dinámicos . Dinámico, lo que significa que el texto se genera con javascript y no tiene un width específico y puede haber de 2 a 4 botones según el usuario (por lo que no puedo configurar flex-basis o el width en una cantidad específica de px en estos elementos flexibles).

Establecí el desbordamiento del texto en hidden y la propiedad de text-overflow en ellipsis .

Ahora me gustaría que los botones se ajusten a una nueva línea solo cuando el texto haya desaparecido por completo. Esto es lo que quiero decir:

ingrese la descripción de la imagen aquí

Este artículo me ha llevado a creer que tiene algo que ver con la propiedad flex-basis .

El primer problema con la envoltura flexible es que los artículos flexibles solo comenzarán a envolverse si su base flexible total es mayor que el tamaño del contenedor flexible.

Sin embargo, independientemente de las propiedades que pruebo, parece que no puedo hacer que funcione como quiero.

 .wrapper { display: flex; justify-content: space-between; border: 1px solid red; max-width: 600px; } .flex-wrapper { display: flex; min-width: 0; } .header { overflow: hidden; display: inline-block; text-overflow: ellipsis; white-space: nowrap; line-height: 24px; } .actions { display: flex; /* Only wrap once the text is fully gone and not visible anymore. */ /* flex-wrap: wrap; */ } .actions button:not(:last-child) { margin-right: 10px; }
 <div class="wrapper"> <div class="flex-wrapper"> <div class="header"> Lorem ipsum dolar sit amet constructeur </div> </div> <div class="actions"> <button> button1 </button> <button> button2 </button> <button> button3 </button> <button> button4 </button> </div> </div>

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede aproximarse a esto usando una gran flex-shrink en el primer contenedor. Esto le dará más prioridad al primer contenedor para el efecto de contracción.

 .wrapper { display: flex; justify-content: space-between; border: 1px solid red; max-width: 600px; } .flex-wrapper { display: flex; min-width: 0; flex-shrink:99999; } .header { overflow: hidden; display: inline-block; text-overflow: ellipsis; white-space: nowrap; line-height: 24px; } .actions { display: flex; flex-wrap: wrap; column-gap:10px; /* you can use gap with flexbox*/ }
 <div class="wrapper"> <div class="flex-wrapper"> <div class="header"> Lorem ipsum dolar sit amet constructeur </div> </div> <div class="actions"> <button> button1 </button> <button> button2 </button> <button> button3 </button> <button> button4 </button> </div> </div>

También puede simplificar todo el código como a continuación:

 .wrapper { display: flex; border: 1px solid red; max-width: 600px; } .flex-wrapper { flex-basis:0; flex-grow:1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 24px; } .actions { display: flex; flex-wrap: wrap; column-gap:10px; /* you can use gap with flexbox*/ }
 <div class="wrapper"> <div class="flex-wrapper"> Lorem ipsum dolar sit amet constructeur </div> <div class="actions"> <button> button1 </button> <button> button2 </button> <button> button3 </button> <button> button4 </button> </div> </div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda