2012-03-12 10 views
17

Tengo una lista de enlaces vinculados a un cuadro bastante angosto; lo suficientemente estrecha como para que algunos enlaces se envuelvan.CSS anula la altura de línea en el ajuste de palabra

línea-altura se establece en 30px, lo que está bien para los enlaces no envueltos; sin embargo, para un enlace cuyo texto es lo suficientemente largo como para forzar un ajuste de línea, también se aplica una altura de línea de 30 píxeles, lo que hace que parezca que hay dos enlaces y no solo una continuación del texto del enlace.

Me gustaría de alguna manera (sin js o en el extremo del middleware calcular la longitud de la cadena) para que el texto del enlace envuelto tenga una altura de línea de 10px aproximadamente para dar una impresión visual de continuación y no separación.

Respuesta

34

Line-height se supone que debe establecer el espaciado entre líneas (particularmente, cuando se envuelven). Lo que probablemente esté buscando es margin en el objeto li. Si configura el line-height en el valor más pequeño que desea cuando las líneas se ajustan y establece el margin en el valor que desea entre los elementos, debería estar listo.

ver si esto hace lo que quiere:

li { 
    padding: 10px 0 0 0; 
    margin: 30px 0; 
    line-height: 10px; 
} 
+2

Bien, voy a votar mejor que eso. – thepriebe

+2

Debería obtener más rep para las soluciones de caso de borde como este, pero solo puede marcarlo como respondido 1X. Tuve que estar débil para hacerlo bien, pero este es "el" camino a seguir. Es interesante que la altura de línea parece ser totalmente ignorada cuando el margen es el mayor valor. – virtualeyes

+4

¡Gracias por aceptar! El menor 'line-height' se ignora porque' margin' y 'line-height' son valores de" colapso ". El valor 'line-height' esencialmente pone un margen vertical en cada línea. Cuando dos objetos con margen vertical son adyacentes, el más pequeño de los dos márgenes se "colapsó" a cero, dejando solo el valor más grande. Lo siento, pero no tengo un enlace a la especificación para esto. – TLS

6

lo haría this way

li { 
    list-style-position: inside; 
    margin: 20px; 
} 

ul { 
    width: 200px; 
    border: solid 1px; 
} 

O se podría establecer la "primera línea" pseudo elemento como en this example

li { 
    padding: 10px 0 0 0; 
    margin: 10px; 
    line-height: 30px; 
} 
li:first-line { 
    margin: 10px; 
    line-height: 10px; 
} 
ul { 
    width: 200px; 
} 
+0

fresco, pero no dados, no puede conseguir envuelto por defecto line-height cambió. Lo ideal sería que el texto envuelto apareciera justo debajo con un espaciado de 5 píxeles. Mantendré el toqueteo ... – virtualeyes

+0

Claro. Si desea publicar su código, estaré encantado de ayudarlo. – thepriebe

+0

Hago +1 en la opción de primera línea, mi css fu es bastante débil, por lo que las pepitas como esta son geniales al encontrarlas ;-) – virtualeyes

Cuestiones relacionadas