Me gustaría controlar cuánto espacio horizontal empuja una bala <li>hacia la derecha en un<ol> o <ul>.
Es decir, en lugar de tener siempre
*  Some list text goes
   here.Me gustaría poder cambiar eso para ser
*         Some list text goes
          here.o
*Some list text goes
 here.Miré a mi alrededor pero solo pude encontrar instrucciones para desplazar todo el bloque hacia la izquierda o hacia la derecha, por ejemplo, http://www.alistapart.com/articles/taminglists/
                    
                        html
                                css
                                html-lists
                                
                    
                    
                        erjiang
fuente
                
                fuente

Respuestas:
Coloque su contenido en un lugar
spanrelativamente posicionado, luego puede controlar el espacio por laleftpropiedad delspan.fuente
<SPAN>puede utilizaridoclassetiquetar, eche un vistazo al W3C . Si la pregunta es si puede transmitir un significado semántico, vea esta respuesta . Técnicamente, la<SPAN>etiqueta es un elemento en línea no semántico en sí mismo, pero de alguna manera ofrece una mayor flexibilidad en su reutilización. Hoy en día, creo que uno puede usar elinline-blockdescriptor para permitir una gama mucho mayor de opciones de formato.Para resumir las otras respuestas aquí, si desea un control más preciso sobre el espacio entre viñetas y el texto en un
<li>elemento de la lista, sus opciones son:(1) Use una imagen de fondo:
Ventajas:
background-positionpara colocar la imagen prácticamente en cualquier lugar que desee en relación con el texto, utilizando píxeles, ems o%Desventajas
2. Use relleno en la
<li>etiquetaVentajas:
<li>, puede agregar tanto espacio horizontal adicional entre la viñeta y el texto como deseeDesventajas
(3) Envuelva el texto en un
<span>elemento extraVentajas:
padding-topa la<span>. Alguien más puede tener una solución para esto, sin embargo ...)Desventajas
Esperamos algunas nuevas características de estilo de lista en CSS4, para que podamos crear viñetas más inteligentes sin recurrir a imágenes o marcas adicionales :)
fuente
outside.display: block;al elemento span para que el texto ajustado también se alineara (también terminé usando etiquetas de anclaje en lugar de espacios)Esto debería hacerlo. Asegúrese de colocar sus balas en el exterior. También puede usar pseudo elementos CSS si puede soltarlos en IE7 hacia abajo. Realmente no recomiendo usar pseudo elementos para este tipo de cosas, pero funciona para controlar la distancia.
fuente
list-style-position: outsidey rellenar losLIelementos le permite aumentar la distancia entre los puntos de viñeta, pero aún así no funciona al revés más allá de un desplazamiento especificado por el navegador. Ver este JS Bin .text-indenten<UL>o<LI>para negar la distancia impuesta por el navegador entre la viñeta y el<LI>contenido. Es decir, aumentepadding-leftcomo se muestra arriba para aumentar la distancia y reduzcatext-indentpara reducir la distancia entre la viñeta y el contenido según lo desee.<LI>envoltura en una segunda línea, esas líneas posteriores terminan siendo sangradas en función del margen / relleno / sangría que logramos deshacer para la primera líneatext-indent. SuspiroAntigua pregunta, pero el: antes del pseudo elemento funciona bien aquí.
Funciona muy bien y no requiere muchas reglas adicionales o html.
¡Salud!
fuente
margin-left: -5px<li>Para list-style-type: en línea :
Es casi lo mismo que la respuesta de DSMann8 pero menos código CSS.
Solo necesitas
Salud
fuente
list-style-position: inside, ¡lo cual es genial!Puede usar el
padding-leftatributo en los elementos de la lista (¡ no en la lista misma!).fuente
list-style-positionestá configurado como predeterminadooutside.<span>elemento solo para fines de diseño.Usar sangría de texto en li funciona mejor.
sangría de texto: -x px; moverá la bala más cerca de li y viceversa.
El uso de relativo en el intervalo de la izquierda negativa podría no funcionar correctamente con versiones anteriores para IE. PD: evita dar posiciones tanto como puedas.
fuente
Aquí hay otra solución usando css counter y pseudo elementos. Me parece más elegante, ya que no requiere el uso de marcado html adicional ni clases de CSS:
Utilizo espacios no rompibles para que el espaciado solo afecte a la primera línea de los elementos de mi lista (si el elemento de la lista tiene más de una línea de largo). Puedes usar relleno aquí en su lugar.
fuente
Antigua pregunta pero aún relevante. Recomiendo usar negativo
text-indent.list-style-positiondebe seroutside.Pros:
Contras:
fuente
Una lista desordenada comienza con la etiqueta ul. Cada elemento de la lista comienza con Los elementos de la lista se marcarán con viñetas (pequeños círculos negros) de forma predeterminada:
Salida:
La propiedad de sangría de texto especifica la sangría de la primera línea en un bloque de texto.
Nota: Se permiten valores negativos. La primera línea se sangrará a la izquierda si el valor es negativo.
fuente
Parece que puede (de alguna manera) controlar el espaciado utilizando relleno en la etiqueta <li>.
El problema es que no parece permitirte arrugarlo como tu ejemplo final.
Para eso, puede intentar desactivar list-style-type y usar & bull;
fuente
Parece que hay una solución mucho más limpia si solo desea reducir el espacio entre la viñeta y el texto:
fuente
También puede utilizar un reemplazo de imagen de fondo como alternativa, que le brinda un control total sobre el posicionamiento vertical y horizontal.
Ver la respuesta a esta pregunta
fuente
Definición y uso
La propiedad de posición de estilo de lista especifica si los marcadores de elementos de lista deben aparecer dentro o fuera del flujo de contenido.
Fuente: http://www.w3schools.com/cssref/pr_list-style-position.asp
fuente
Puede usar
ul li:beforey una imagen de fondo, y asignarposition: relativeyposition:absolutealiyli:before, respectivamente. De esta manera, puede crear una imagen y colocarla donde desee en relación con el li.fuente
Úselo
padding-left:1em; text-indent:-1empara la<li>etiqueta.Entonces,
list-style-position: insidepara la<ul>etiqueta.fuente
La siguiente solución funciona bien cuando desea mover el texto más cerca de la viñeta e incluso si tiene varias líneas de texto.
margin-rightle permite mover el texto más cerca de la viñetatext-indentasegura que varias líneas de texto aún se alineen correctamentefuente
usar
<span style="display: flex;">dentro de cada uno<li>.fuente