2012-07-19 10 views
15

Tengo varios elementos en HTML que quiero mantener agrupados cuando se envuelven. Creo que la respuesta está en algunos CSS (o incluso en JavaScript), pero no estoy seguro. Por ejemplo, tengo varios elementos establecidos así:Mantener juntos los elementos envueltos

<label A><input A><label B><input B><label C><input C> 

Lo que pasa es que los usuarios a veces cambiar el tamaño de la ventana del navegador, y terminamos con esto:

<label A><input A><label B> 
<input B><label C><input C> 

En el ejemplo anterior, el la entrada B no está al lado de su elemento de entrada. ¿Hay alguna manera de agrupar la etiqueta y la entrada para que se envuelvan juntas? Probé los divs y reuní los elementos en una tabla con "nowrap", con resultados mixtos. No me molesta el ajuste de líneas, solo necesito mantener juntas la etiqueta y el elemento de entrada.

+0

Sé que esto es muy antigua, pero ¿podría enviar su solución por favor? –

+0

Wow, lo siento, acabo de ver tu comentario. Ya no tengo esta fuente, pero prueba las cosas en las respuestas a continuación. Eso es todo lo que hice. HTH :) – Frecklefoot

Respuesta

5

También puede valer la pena mirar la configuración de los padres divs alrededor de cada par que desea mantener juntos - Sé que dijo que probó esto, pero también les dio un ancho fijo y la pantalla: en línea; y debería funcionar

ALSOO include float: left/right; (choose only one) De esta forma, si la ventana del navegador es demasiado pequeña para mostrarlas una al lado de la otra, tomará el par final y lo colocará sobre la siguiente línea, pero debe mantener todos los elementos juntos y uno al lado del otro.

+0

engañado con esto un poco, y finalmente lo conseguí. Gracias a ** ton **! También resolvió algunos otros problemas de renderización que la página estaba experimentando. – Frecklefoot

+0

Me alegro de poder ayudar :) – Dom

0

Puede poner cada etiqueta/grupo de entrada en <span> y luego establecer el css en display:inline. Estoy bastante seguro de que esto lo mantendrá agrupado. Dependiendo del diseño de su sitio y CSS anterior, puede que tenga que modificar el span css.

14

Pruebe algo como esto:

<label>First Name: 
    <input type="text"> 
</label> 
<label>Last Name: 
    <input type="text"> 
</label> 

y establecer

label { 
    display: inline-block; 
} 

demostración http://dabblet.com/gist/3145028

Alternativa: abrigo tanto <label> y <input> en un <div> con display: inline-block

+0

Gracias, Ana! Me encanta esta solución: ¡simple y elegante! ¡Más una demostración para que pueda verlo en acción!Lamentablemente, no funciona para mí. Esta página tiene TONELADAS de CSS, y otra cosa en el CSS impide que funcione correctamente. :( – Frecklefoot

+0

¿Podría detallar un poco sobre eso? Tal vez edite su pregunta original sobre cómo se comportó cuando probó las alternativas en las respuestas. – Ana

5

Ponga una ll de esos elementos en un div como este:

<div style="white-space: nowrap"> 
    ... 
</div> 
+0

Sí, lo intenté. No tiene ningún efecto en absoluto .((Los elementos aún se rompen aparte. – Frecklefoot

0

ya que dijo que esto era en una mesa, esto es probablemente lo que estaba buscando: http://jsfiddle.net/DX9G7/

HTML:

<table border="0" cellspacing="0" cellpadding="0"> 
    <colgroup> 
     <col width="30%" /> 
     <col width="30%" /> 
     <col width="40%" /> 
    </colgroup> 
    <tr> 
     <td> 
      <div class="form-row"> 
       <label>A</label> 
       <input type="text" /> 
      </div> 
      <div class="form-row"> 
       <label>B</label> 
       <input type="text" /> 
      </div> 
      <div class="form-row"> 
       <label>C</label> 
       <input type="text" /> 
      </div> 
     </td> 
    </tr> 
</table>​ 

Usted ahora puede modificar su CSS de la manera que desee.

5

La respuesta simple es envolver elementos en otro elemento que tiene una pantalla: bloque en línea como estilo. Así que ...

<span class='wrapper'> 
    <span class='left-side'></span> 
    <span class='right-side'></span> 
</span> 

Y

.wrapper { 
    display: inline-block; 
} 
Cuestiones relacionadas