2010-02-16 18 views
37

¿Cómo se hace que los DIV flotantes que quedan uno junto al otro no se envuelvan cuando el navegador se redimensiona de modo que la ventana gráfica se vuelve más pequeña?¿Cómo puedo evitar que los elementos Div flotantes se envuelvan cuando se vuelve a clasificar según el tamaño del navegador?

div { 
    float: left; 
} 

Por ejemplo, cuando el navegador está completamente maximiza la div s línea de arriba como esto:

|div| |div| |div| |div| |div| |div| |div| |div| 

Pero cuando la re-tamaño del navegador más pequeño que esto sucede:

|div| |div| |div| |div| |div| 
|div| |div| |div| 

¿Cómo puede ¿No configuro el div s cuando el navegador se vuelve a clasificar según el tamaño más pequeño?

Respuesta

25

Ajústelos en otro div, que tenga un ancho (o min-ancho) especificado.

<div class="parentContainer"> 
    <div class="floater"></div> 
    <div class="floater"></div> 
    <div class="floater"></div> 
</div> 

.parentContainer { 
    /* The width of the parent needs to be equal to the total width of the children. 
    Be sure to include margins/padding/borders in the total. */ 
    width: 600px; 
    overflow: auto; 
} 

También ayuda a tener overflow: auto especificado en el div que contiene, para permitir su altura para que coincida con el niño flota.

+0

no pudimos conseguir que esto funcione (http://jsfiddle.net/ajkochanowicz/tSpLx/) –

+0

@ajkochanowicz lo que no funciona para usted? Cuando cambio el tamaño de la ventana "resultado" a menos de 400 px, los flotantes permanecen en su configuración 3,3,2 como se anuncia. – AaronSieb

+0

Cada div se flota a la izquierda. No sé qué es "publicidad" una configuración 3,3,2. Si todos flotaron a la izquierda, ¿por qué no continúan escapando del div horizontalmente? –

9

Hacer el div contenedor alrededor de ellos

.container { 
width: 500px; 
white-space: nowrap; 
overflow: visible/hidden/scroll - whichever suits you; 
} 
+0

ese no es el caso con los hijos 'float-left'. –

+0

Establecí el ancho del contenedor al 100% - funciona en mi caso. Podría ayudarte en el tuyo. –

7

Soy consciente de que está de moda odio en tablas, pero pueden ser útiles.
http://jsfiddle.net/td6Uw/
En lugar de dejar flotantes los divs, colóquelos en una tabla y envuelva la tabla con un div de tamaño limitado. El TR evitará envolverse.
Además, utilicé los DIV dentro de los TD para facilitar el diseño de las células. Podrías darle estilo a los TD si pasas el tiempo, pero creo que son difíciles de estilizar y, por lo general, no me gustan y solo uso el método DIV-in-TD que usa mi violín.

18

Estoy bastante tarde para el juego, pero esto es lo que he encontrado que funciona:

Digamos que usted tiene una navegación estructurada como:

<nav> 
    <ul> 
     <li><a href="#">Example Link</a></li> 
     <li><a href="#">Example Link</a></li> 
     <li><a href="#">Example Link</a></li> 
    </ul> 
</nav> 

conseguirlo para mostrar los enlaces en línea, sin envoltura, simplemente puede usar:

nav ul { 
    white-space: nowrap; 
} 

nav ul li { 
    display: table-cell; 
} 

No hay anchos fijos ni nada requerido.

violín: http://jsfiddle.net/gdf3prb4/

+0

Este es el mejor método IMO, y el único método que funciona fácilmente (al menos para mí). Los otros métodos de hacer un divisor envoltorio con un ancho fijo podrían funcionar bien si sabe exactamente cuántos píxeles desea, pero en el mundo de hoy, donde los tamaños de pantalla son siempre diferentes, no desea confiar en anchos fijos ya que eso evita usted de hacer un sitio web dinámico. – edwardtyl

+1

Este método fue el más relevante para mi situación (excepto flexbox, que todavía parece ser un poco crapshoot en los navegadores que queríamos admitir); sin embargo, en mi caso descubrí que también necesitaba 'display: table' en el envoltura 'ul' para mantener el 100% de altura original de las columnas dentro. Con eso, el 'white-space: nowrap' en ese padre tampoco parece ser necesario, el ancho de las columnas termina distribuyéndose no excediendo el 100% del todo de todos modos. – natevw

+0

@JacobTheDev Definitivamente el método más idiomático y flexible, debe ser aceptado. Me alegro de poder exagerar la marca de 5 k con mi voto positivo :-) – davnicwil

2

En realidad, es muy simple. Ejemplo de código:

Element { 
white-space: nowrap; 
} 
+0

no puedo entender por qué esta no es la respuesta número uno ahha –

+0

Por Dios, esto fue todo. Nada más aquí funcionó. FWIW, puse esto en el elemento parental "div". – Qix

Cuestiones relacionadas