2011-11-18 14 views
23

He¿Limpiando bloques en línea?

.centered-holder { 
    margin-left: auto; 
    margin-right: auto; 
    clear: left; 
    display: inline-block; 
} 

Entonces

<div class="centered-holder">misc content 1</div> 
<div class="centered-holder">misc content 2</div> 
<div class="centered-holder">misc content 3</div> 

Yo sólo quiero uno máximo por línea, es esto realmente posible de alguna manera? Es una aplicación iPhone HTML5, por lo que las restricciones más antiguas del navegador no son un problema.

+4

La propiedad 'clear' habrá elementos afectan solamente a flotaban, que no tienen nada flotaba. – animuson

+0

realmente claro no necesita ser aplicado a un elemento flotante, puede aplicarlo a un elemento en línea para evitar que aparezca. Necesito alguna solución comparable – Baconbeastnz

+0

No, no es necesario aplicarla a un elemento * flotado *, pero solo borra los elementos * flotados *. No 'borrará' un elemento de bloque en línea porque no está 'flotando' en el lado izquierdo o derecho.Si los quiere en líneas separadas, la siguiente solución debería funcionar. Tal vez podrías dar un mejor ejemplo de lo que intentas hacer. – animuson

Respuesta

36

Dependen de sus declaraciones CSS y su margen de beneficio, pero se puede tratar de poner esta declaración CSS en el contenedor principal:

white-space: pre-line; 

Con este enfoque a evitar transformar el .centered-holder a un elemento de bloque, y usted todavía se puede usar, por ejemplo, el text-align:center en el contenedor primario.


pre-línea de - Este valor hará que las secuencias de espacios en blanco para colapsar en un solo carácter de espacio. Los saltos de línea ocurrirán donde sea necesario para llenar recuadros de línea, y en líneas nuevas en el marcado (o en apariciones de "\ a" en el contenido generado). En otras palabras, es como normal, excepto que respetará los saltos de línea explícitos.

Puede encontrar más información aquí sobre white-space:


Para finalizar, puede utilizar estas declaraciones CSS:

.parent-container { 
    white-space: pre-line /* Create new line for each DIV */; 
    line-height:0 /* Mask the extra lines */; 
    *white-space: pre /*FixIE7*/; 
    *word-wrap: break-word /*FixIE7*/; 
} 

.centered-holder { 
    display: inline-block; 
    line-height:100% /* Restore a default line-height */; 
    *display: inline /*FixIE7*/; 
    *zoom: 1 /*FixIE7*/; 
} 

Encontré esta pregunta muy interesante, así que doy también las declaraciones de CSS para IE6-7 (pre-line y inline-block arreglos). Debería ser útil para otras personas que tienen un problema similar.

+3

Buena respuesta ...... + 1 – anglimasS

+1

Gracias gran respuesta:) Descubrí que también puede tener solo bloques en su tira de contenido principal, luego golpear un texto-alinear: centro; en ellos. Luego coloque los bloques en línea adentro. Al hacer esto, su contenido se centra (porque el bloque padre abarca todo el ancho, y centra el bloque en línea dentro) – Baconbeastnz

+0

¡lo posee hermano :)! –

4

Si quita display: inline-block;, se apilarán uno encima del otro.

Los elementos de nivel de bloque comienzan en una nueva línea, y un DIV es de nivel de bloque por defecto.

+1

sí lo sé. Lo que pasa es que tengo text-align: centrar en mi contenedor porque me gusta la capacidad de autocentrado, parece que podría tener que hacer esto con JS – Baconbeastnz

+0

Siempre podría agregar: .concentrador: después { contenido :"\UN"; } Parece un truco. – enduro

1

O puede simplemente agregar un solo div con bloque de visualización después de los bloques en línea.

.centered-holder { 
    margin-left: auto; 
    margin-right: auto; 
    clear: left; 
    display: inline-block; 
} 
.clear-inline { 
    display: block; 
} 

Entonces

<div class="centered-holder">misc content 1</div> 
<div class="clear-inline"></div> 
<div class="centered-holder">misc content 2</div> 
<div class="clear-inline"></div> 
<div class="centered-holder">misc content 3</div> 
<div class="clear-inline"></div> 
+3

Eso es una mala práctica y muy hacky. – 30secondstosam

+3

Bueno, esto ES CSS. Hacky es su segundo nombre. – zundi

+1

Esto también se puede lograr con pseudoelementos, por lo que es un poco menos hacky. Ver http://codepen.io/ivancamilov/pen/jqmWEL –

Cuestiones relacionadas