tipos poner lista linea inicio etiqueta elementos bloques html css xhtml

html - lista - poner elementos en linea css



display: margen extra de bloque en lĂ­nea (12)

¿Puedes publicar un enlace al HTML en cuestión?

En última instancia, debería poder hacer:

div { margin:0; padding: 0; }

para eliminar el espaciado ¿Esto solo está en un navegador en particular o en todos ellos?

Esta pregunta ya tiene una respuesta aquí:

Estoy trabajando con algunos div s que están configurados para display: inline-block y tienen un height y width . En el HTML, si hay un salto de línea después de cada div hay un margen automático de 5 píxeles para agregar a la derecha y a la parte inferior del div.

Ejemplo:

<div>Some Text</div> <div>Some Text</div>

¿Hay alguna propiedad que haya pasado por alto que me permita restablecer el margen automático?

Actualizar

Por lo que he encontrado, no hay forma de eliminar el margen ... excepto si tiene todo en la misma línea o si agrega comentarios para comentar los saltos de línea. ejemplo:

<div>Some Text</div><!-- --><div>Some Text</div>

No es la mejor solución, pero aún más fácil de leer si tienes varias líneas.


Después de luchar con este tema muchas veces, encontré una solución muy elegante en HTML 5. En HTML 5, no debe cerrar varias etiquetas (li, p, etc.); la ambición de convertirse en XML se ha ido para siempre. Por ejemplo, la forma preferida de hacer una lista es:

<ul> <li> <a ...>...</a> <li> <a ...>...</a> </ul>

Los navegadores DEBEN cerrar el LI y deben hacerlo sin introducir espacios en blanco, resolviendo este problema. Si todavía tienes la mentalidad XML, se siente mal, pero una vez que superas eso, te ahorras muchas pesadillas. Y esto no es un truco, ya que se basa en la redacción de la especificación HTML 5. Mejor, dado que no cerrar las etiquetas es generalizado, espero que no haya problemas de compatibilidad (aunque no se han probado). La ventaja es que los formateadores HTML manejan esto bien.

Un pequeño ejemplo resuelto: http://cssdesk.com/Ls7fK



Los divs son tratados como elementos en línea. Del mismo modo que un espacio o salto de línea entre dos tramos crearía un espacio, lo hace entre bloques en línea. Puede darles un margen negativo o establecer word-spacing: -1; en el contenedor circundante.


Me encontré con el mismo problema. Lo que me causó fue un montón de espacios en blanco ( &nbsp; ) que inserté. Después de eliminarlos, el problema fue resuelto.


Otra solución a esto es usar un minificador de HTML. Esto funciona mejor con un proceso de compilación de Grunt, donde el HTML se puede minimizar sobre la marcha.

Se eliminan los saltos de línea y los espacios en blanco adicionales, lo que soluciona el problema del margen perfectamente, y le permite escribir el marcado como lo desee en el IDE (no </li><li> ).


Para el registro, ese reinicio de margen y relleno no funcionó, pero esta cita de uno de los comentarios anteriores resultó ser crucial y resolvió el problema para mí: "Si pongo los divs en la misma línea, el margen desaparece ".


Puedes obtener un espacio vertical a pesar de que NO TIENES NINGÚN ESPACIO BLANCO entre los elementos del bloque en línea.

Para mí, esto fue causado por line-height . La solución simple fue:

div.container { line-height: 0; } div.container > * { line-height: normal; }



Una forma más limpia de eliminar esos espacios es mediante el uso de float: left; :

DEMO

HTML:

<div>Some Text</div> <div>Some Text</div>

CSS:

div { background-color: red; float: left; }

Es compatible con todos los navegadores nuevos . Nunca lo entendí, ¿por qué cuando IE dictaminó que muchos desarrolladores no lo hicieron? Su sitio funciona bien en Firefox / Chrome, pero hoy, cuando IE se ha reducido al 14.3% . de todos modos, no tenía muchos problemas en IE-9 aunque pensara que no es compatible, por ejemplo, la demostración anterior funciona bien.



El espacio en blanco afecta a los elementos en línea .

Esto no deberia venir como sorpresa. Lo vemos todos los días con span, strong y otros elementos en línea. Establezca el tamaño de la fuente en cero para eliminar el margen adicional.

.container { font-size: 0px; letter-spacing: 0px; word-spacing: 0px; } .container > div { display: inline-block; margin: 0px; padding: 0px; font-size: 15px; letter-spacing: 1em; word-spacing: 2em; }

El ejemplo se vería así.

<div class="container"> <div>First</div> <div>Second</div> </div>

Una versión jsfiddle de esto. jsfiddle.net/QtDGJ/1