2010-11-12 6 views
6

Tengo un elemento <a> como bloque en línea con un ancho fijo. Me gustaría mostrar las cajas <a> una al lado de la otra, dos cajas por fila (exactamente como en el first example). PERO si cada elemento del cuadro está en una nueva línea en el código fuente (second example), las casillas obtienen un margen invisible, que puede ver si echa un vistazo al ejemplo con p. Ej. las herramientas de desarrollo de Chrome. El ancho y el relleno del envoltorio principal y el margen de cada recuadro se calculan exactamente, de modo que el margen invisible agregado empuje el segundo recuadro hacia abajo en la siguiente fila.Cómo eliminar el margen invisible creado por un salto de línea en el código fuente en el bloque en línea <a> elemento

Podría simplemente usar el código del primer ejemplo (todos los elementos sin saltos de línea directamente uno detrás del otro), pero me gustaría saber cómo puedo eliminar este margen invisible para que los dos cuadros encajen de nuevo al lado de cada uno otro en el div wrapper (como en el primer ejemplo), incluso si cada elemento <a> está en una nueva línea en el código fuente.

Ejemplos:

1.) Sin salto de línea en el código (el diseño que quiero tener): http://jsfiddle.net/mLa93/2/

2.) Con salto de línea en el código (línea agregada rompe después <a> elemento de cambios de diseño) : http://jsfiddle.net/mLa93/3/

+0

no he entendido correctamente, no quiere formatear el HTML o buscar. ¿Estás hablando cuando hacemos viewsource, debe estar bien formateado – kobe

+0

¿Qué tal si lo flotamos? –

+0

Pensé en eso, pero si el número de cajas de enlace es desigual (como 3 cajas por fila y tienes 5 cajas), me gustaría que las 2 últimas cajas se centraran en el centro en lugar de estar alineadas a la derecha o izquierda. – wowpatrick

Respuesta

8

Como fcalderan sugirió white-space:nowrap en el padre debería funcionar. Ver http://jsfiddle.net/kkpKg/ para un ejemplo. Si no es así, entonces debes estar haciendo algo diferente o incorrecto.

Ok, ahora lo entiendo :-)

La mejor solución es a dejar de lado los saltos de línea, sin embargo, si usted no quiere eso, la siguiente mejor sería hacer comentarios a cabo:

<div id="wrap"> 
     <a href="#">box 1</a><!-- 
    --><a href="#">box 2</a><!-- 
    --><a href="#">box 3</a> 
    </div> 

Si eso no es una posibilidad que lo único que se me ocurre (y es soportado por los navegadores actuales) es establecer el line-heightfont-size en #wrap a cero y vuelve a su tamaño original en los enlaces :

#wrap { 
    font-size: 0; 
} 
#wrap a { 
    font-size: 14px; 
} 
+0

Todavía no funciona, vea el ejemplo en la pregunta: http://jsfiddle.net/mLa93/4/ – wowpatrick

+0

Su tercer ejemplo se ve exactamente como lo quiere en Chrome, FF e IE8. Tal vez es un navegador específico? O tal vez me falta completamente lo que quieres. ¿Puedes publicar un dibujo de cómo esperas que se vea? – RoToRa

+0

Lo comprobé con Chrome, Safari y FF en OS X. Lo que quiero tener son los cuadros ordenados como en el primer ejemplo (todos los cuadros en el contenedor, dos en la primera fila, uno en el lado izquierdo en la segunda fila), pero con 'white-space: nowrap' como en el tercer ejemplo, el tercer cuadro está fuera del rapero en la misma fila. – wowpatrick

0

tratar de utilizar white-space:nowrap el elemento padre (el envase de sus enlaces) y probablemente white-space: normal en enlaces

+0

buena idea ... esto podría funcionar también. –

+0

Parece que no funciona. Puse todos los cuadros de enlace en un contenedor div separado con espacio en blanco: nowrap y establecí todos los enlaces espacio en blanco: normal, pero el problema es que los enlaces se rompen en ese contenedor. – wowpatrick

1

¡No me di cuenta que esta pregunta era de hace un año!
Dado que ha pasado tanto tiempo tratando de resolver esto, hice algunas investigaciones y encontré una pregunta similar. He ajustado el código aquí
solution
y debería funcionar now.I coloca a 5 cuadras por el caso de flotador que usted ha mencionado antes

EDIT: el problema era sus márgenes. Tienes un relleno de 10px y márgenes de 10px. Si hubiera hecho su div 230px (3x10px + 2x100px), habría obtenido el mismo efecto que el primer violín.

+0

Gracias, pero eso todavía no es todo. Reformulé la pregunta, así que espero que esté más claro lo que quiero ... – wowpatrick

+1

Es porque la nueva línea agrega espacio. La solución más sencilla para esto sería hacer tu div 228px. http://jsfiddle.net/mLa93/10/ Estoy seguro de que puedes ignorar la nueva línea de una manera complicada pero no valdrá la pena. – LostLin

+0

Tienes razón, esa es una opción. Lo miré más de cerca, y con FF 4 RC en Mac, el salto de línea en el código fuente agrega un margen invisible de 2px a la izquierda y un margen invisible de 4px en el lado derecho. Tienes razón, realmente no vale la pena el tiempo, como dije uno puede (y eso también es lo que hago en ATM) simplemente escribe las etiquetas en una línea. También me parece más fácil que tener que cambiar los márgenes/almohadillas si una dosis no quiere cambiar el ancho de la caja. Pero aún me gustaría saber qué regla de diseño de CSS/HTML provoca este comportamiento y cómo solucionarlo correctamente. – wowpatrick

Cuestiones relacionadas