Quiero tener una lista "interna" con viñetas de lista o números decimales alineados con bloques de texto superiores. ¡Las segundas líneas de las entradas de la lista deben tener la misma sangría como la primera fila!
P.ej:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor. Aenean Aenean massa.
Cum sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Donec quam felis,
1. Text
2. Text
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor.
CSS proporciona solo dos valores para su "posición de estilo de lista": dentro y fuera. Con las segundas líneas "internas" están alineadas con los puntos de la lista, no con la línea superior:
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
Ancho "fuera" de mi lista ya no está al ras con bloques de texto superiores.
Los experimentos de ancho de texto, sangría, relleno izquierdo y margen izquierdo funcionan para listas desordenadas, pero fallan para las listas ordenadas porque depende del número de caracteres de la lista decimal:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor.
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
11. Text
12. Text
"11." y "12." no están alineados con el bloque de texto superior en comparación con "3" y "4.".
Entonces, ¿dónde está el secreto sobre las listas ordenadas y la sangría de segunda línea? ¡Gracias por tu esfuerzo!
fuente
Respuestas:
Actualizar
Esta respuesta está desactualizada. Puede hacer esto mucho más simple, como se señala en otra respuesta a continuación:
Ver https://www.w3schools.com/cssref/pr_list-style-position.asp
Respuesta original
Me sorprende ver que esto aún no se ha resuelto. Puede utilizar el algoritmo de diseño de tabla del navegador (sin usar tablas) de esta manera:
Demostración: http://jsfiddle.net/4rnNK/1/
Para que funcione en IE8, use la
:before
notación heredada con dos puntos.fuente
foo
es sólo una cadena arbitraria (id), que se utiliza para conectar loscounter-reset
,counter-increment
ycounter()
propiedades.position: relative
en<li>
yposition: absolute
sobre el contenido generado. Consulte jsfiddle.net/maryisdead/kgr4k para ver un ejemplo.40px
? Eso se romperá cuando los mostradores sean más anchos que eso . El punto principal de usar el diseño de la tabla es que el navegador ajustará automáticamente el contenido.Creo que esto hará lo que estás buscando.
JSFiddle: https://jsfiddle.net/dzbos70f/
fuente
1em
no es igual al espacio de la sangría. Las líneas no se alinearán perfectamente en cuanto a píxeles. En segundo lugar, ¿qué pasa cuando la lista alcanza el número 10? 100? La sangría de texto no funcionará, no estará alineada. Esta respuesta debe ser rechazada.1em
. oi60.tinypic.com/a0eyvs.jpg El primer elemento de la lista está utilizando la técnica de sangría de texto anterior. Comparado con su aspecto normal con list-style-position: en el exterior, está desalineado, apagado por un píxel.La forma más fácil y limpia, sin ningún truco, es simplemente sangrar el
ul
(ool
), así:Esto da el mismo resultado que la respuesta aceptada: https://jsfiddle.net/5wxf2ayu/
Captura de pantalla:
fuente
list-style-position: outside
a<li>
.Mira este violín:
http://jsfiddle.net/K6bLp/
Muestra cómo sangrar manualmente ul y ol usando CSS.
HTML
CSS
También edité tu violín
http://jsfiddle.net/j7MEd/3/
Anótelo.
fuente
type
atributo de<ol>
parece estar en desuso en HTML 5. Utilice en sustyle="list-style-type: "
lugar.Puede establecer el margen y el relleno de un
ol
oul
en CSSfuente
Creo que solo necesita poner la lista 'bala' fuera del relleno.
fuente
Puede usar CSS para seleccionar un rango; en este caso, desea enumerar los elementos 1-9:
Luego ajuste los márgenes en esos primeros elementos de manera apropiada:
Véalo en acción aquí: http://www.wortfm.org/wort-madison-charts-for-the-week-beginning-11192012/
fuente
El siguiente CSS hizo el truco:
fuente
mi solución es bastante similar a la de Pumbaa80 , pero sugiero usar en
display: table
lugar dedisplay:table-row
parali
element. Entonces será algo como esto:Así que ahora podemos usar para espaciar los márgenes entre
li
'sfuente
Yo mismo aprecio bastante esta solución:
fuente
Las listas ol, ul funcionarán si lo desea, también puede usar una tabla con borde: ninguna en el CSS.
fuente
CSS proporciona solo dos valores para su "posición de estilo de lista": dentro y fuera. Con las segundas líneas "internas" están alineadas con los puntos de la lista, no con la línea superior:
En listas ordenadas, sin intervención, si asigna a "posición-estilo-lista" el valor "dentro", la segunda línea de un elemento de lista larga no tendrá sangría, pero volverá al borde izquierdo de la lista (es decir, se alineará a la izquierda con el número del artículo). Esto es peculiar de las listas ordenadas y no ocurre en listas desordenadas.
Si en cambio le das a "list-style-position" el valor "afuera", la segunda línea tendrá la misma sangría que la primera línea.
Tenía una lista con un borde y tuve este problema. Con "list-style-position" establecido en "inside", mi lista no se veía como quería. Pero con "list-style-position" establecido en "outside", los números de los elementos de la lista quedaron fuera del cuadro.
Resolví esto simplemente estableciendo un margen izquierdo más amplio para toda la lista, que empujó toda la lista hacia la derecha, nuevamente en la posición en la que estaba antes.
CSS:
ol.classname {margin: 0; padding: 0;}
ol.classname li {margin: 0.5em 0 0 0; padding-left: 0; list-style-position: outside;}
HTML:
fuente
Ok, volví y descubrí algunas cosas. Esta es una SOLUCIÓN EN BRUTO a lo que estaba proponiendo, pero parece ser funcional.
Primero, hice los números una serie de listas desordenadas. Una lista desordenada normalmente tendrá un disco al comienzo de cada elemento de la lista (
Luego, hice que se mostrara toda la lista: tabla-fila. Aquí, ¿por qué no te pego el código en lugar de comentarlo?
CSS:
}
}
Esto parece alinear el texto en el segundo div con los números en la lista ordenada en el primer div. He rodeado tanto la lista como el texto con una etiqueta para poder decirle a todos los divs que se muestren como bloques en línea. Esto los alineó muy bien.
El margen está ahí para poner un espacio entre el punto y el inicio del texto. De lo contrario, corren uno contra el otro y parece una monstruosidad.
Mi empleador quería que el texto envolvente (para entradas bibliográficas más largas) se alineara con el comienzo de la primera línea, no con el margen izquierdo. Originalmente estaba inquieto con un margen positivo y una sangría de texto negativa, pero luego me di cuenta de que cuando cambié a dos divs diferentes, esto tuvo el efecto de hacer que todo el texto se alineara porque el margen izquierdo del div fue el margen donde el texto comenzó naturalmente. Por lo tanto, todo lo que necesitaba era un margen de 0.2em para agregar algo de espacio, y todo lo demás se alineaba perfectamente.
Espero que esto ayude si OP estaba teniendo un problema similar ... Me costó entenderlo.
fuente
Tuve este mismo problema y comencé a usar la respuesta del usuario123444555621 . Sin embargo, también necesitaba agregar
padding
yborder
a cada unoli
, lo que esa solución no permite porque cada unoli
es untable-row
.Primero, usamos a
counter
para replicar losol
números de.Luego nos ponemos
display: table;
en cada unoli
ydisplay: table-cell
en el:before
para darnos la sangría.Finalmente, la parte difícil. Como no estamos utilizando un diseño de tabla para todo,
ol
debemos asegurarnos de que cada uno:before
tenga el mismo ancho. Podemos usar lach
unidad para mantener aproximadamente el ancho igual al número de caracteres. Para mantener los anchos uniformes cuando:before
difiere el número de dígitos para los , podemos implementar consultas de cantidad . Suponiendo que sabe que sus listas no serán de 100 artículos o más, solo necesita una regla de consulta de cantidad para indicar:before
que cambie su ancho, pero puede agregar fácilmente más.fuente