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
span
relativamente posicionado, luego puede controlar el espacio por laleft
propiedad delspan
.fuente
<SPAN>
puede utilizarid
oclass
etiquetar, 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-block
descriptor 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-position
para 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-top
a 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: outside
y rellenar losLI
elementos 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-indent
en<UL>
o<LI>
para negar la distancia impuesta por el navegador entre la viñeta y el<LI>
contenido. Es decir, aumentepadding-left
como se muestra arriba para aumentar la distancia y reduzcatext-indent
para 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-left
atributo en los elementos de la lista (¡ no en la lista misma!).fuente
list-style-position
está 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-position
debe 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:before
y una imagen de fondo, y asignarposition: relative
yposition:absolute
ali
yli: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:-1em
para la<li>
etiqueta.Entonces,
list-style-position: inside
para 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-right
le permite mover el texto más cerca de la viñetatext-indent
asegura que varias líneas de texto aún se alineen correctamentefuente
usar
<span style="display: flex;">
dentro de cada uno<li>
.fuente