¿Cómo hago para que las viñetas de una lista desordenada se centren con el texto?

6 minutos de lectura

  el avatar de usuario de una persona
una persona

Cuando trato de centrar un <ul> el texto en el <li> centros, pero las viñetas permanecen en el extremo izquierdo de la página. ¿Hay alguna forma de hacer que las viñetas permanezcan con el texto cuando está centrado?

#abc{text-align: center; }

<div id="section1">
<div id="abc">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
<div/>
<div/>

  • Probaría esto (CSS). stackoverflow.com/questions/7516005/…

    – Adán T.

    11 de marzo de 2015 a las 2:01

  • Esto se hace automáticamente para mí en Firefox

    – Rayyán

    23 de diciembre de 2020 a las 14:32

  • Puede usar .parentOfUl{ text-align:center;} y luego ul{ display:inline-block; }, y por último li{ text-align:center; }.

    – patrick james

    23 de abril de 2022 a las 11:11

Agregar list-style-position: inside hacia ul elemento. (ejemplo)

El valor predeterminado para el list-style-position propiedad es outside.

ul {
    text-align: center;
    list-style-position: inside;
}
<ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
</ul>

Otra opción (que arroja resultados ligeramente diferentes) sería centrar todo el ul elemento:

.parent {
  text-align: center;
}
.parent > ul {
  display: inline-block;
}
<div class="parent">
  <ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
  </ul>
</div>

  • ¿Soy solo yo o hay un margen adicional/relleno entre la viñeta real y el texto?

    – Pico

    06/03/2017 a las 20:09

  • @Pico: ¿te refieres al valor predeterminado? padding-left: 40px? De lo contrario, es posible que se esté refiriendo a las inconsistencias entre navegadores con respecto al espaciado como se indica en MDN: developer.mozilla.org/en-US/docs/Web/CSS/list-style-position

    –Josh Crozier

    06/03/2017 a las 20:14

  • Tu segundo método es el único que funcionó para mí.

    – MacroMan

    26 de septiembre de 2019 a las 13:17

  • ¡SALVADOR DE LA VIDA! ¡Muchas gracias por esto! Estaba teniendo un montón de problemas con una viñeta personalizada, casi a punto de rendirme. ¡Supongo que solo necesitaba una búsqueda más en Google!

    – Greenreader9

    10 ago 2021 a las 20:20

  • Extraño… En mi caso, la primera solución da como resultado que las viñetas vayan a líneas separadas del texto. Verificó todos los elementos en CSS y no puede encontrar la causa.

    – webrightnow

    16 de agosto de 2021 a las 12:02

Puedes hacer eso con list-style-position: inside; sobre el ul elemento :

ul {
    list-style-position: inside;
}

Ver violín de trabajo

  • Esto fue bueno, aunque estaba tratando de encontrar una manera de configurarlo a través de bootstrap. No pude encontrar nada que funcionara usando bootstrap puramente. ¡Gracias por compartir!

    – Harlín

    8 de junio de 2019 a las 11:47

Avatar de usuario de Junaid
Junaid

TL;RD

ul {
  padding-left: 0;
  list-style-position: inside;
}

Explicación:
la primera propiedad padding-left: 0 borra el relleno/espaciado predeterminado para el ul elemento mientras list-style-position: inside hace los puntos/viñetas de li alineado como un texto normal.

Así que este código

<p>The ul element</p>
<ul>
asdfas
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ul>

sin ningún CSS nos dará esto:
ingrese la descripción de la imagen aquí

pero si agregamos el CSS en la parte superior, eso nos dará esto:
ingrese la descripción de la imagen aquí

  • Si bien este fragmento de código puede resolver la pregunta, incluyendo una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para lectores en el futuro, y es posible que esas personas no conozcan los motivos de su sugerencia de código.

    – Clijsters

    12 de enero de 2021 a las 8:58

Encontré la respuesta hoy. Tal vez sea demasiado tarde, pero aún así creo que es mucho mejor. Revisa este https://jsfiddle.net/Amar_newDev/khb2oyru/5/

Intenta cambiar el código CSS: <ul> max-width:1%; margin:auto; text-align:left; </ul>

ancho máximo: 80% o algo así.

Intenta experimentar, quizás encuentres algo nuevo.

avatar de usuario de latitov
latitov

Así es como lo haces.

Primero, decora tu lista de esta manera:

<div class="p">
<div class="text-bullet-centered">&#8277;</div>
text text text text text text text text text text text text text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text text text text text text text text text 
</div>
<div class="p">
<div class="text-bullet-centered">&#8277;</div>
text text text text text text text text text text text text text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text text text text text text text text text 
</div>

Agrega este CSS:

.p {
    position: relative;
    margin: 20px;
    margin-left: 50px;
}
.text-bullet-centered {
    position: absolute;
    left: -40px;
    top: 50%;
    transform: translate(0%,-50%);
    font-weight: bold;
}

Y listo, funciona. Cambiar el tamaño de una ventana, para ver que efectivamente funciona.

Como beneficio adicional, puede cambiar fácilmente la fuente y el color de las viñetas, lo cual es muy difícil de hacer con las listas normales.

.p {
  position: relative;
  margin: 20px;
  margin-left: 50px;
}

.text-bullet-centered {
  position: absolute;
  left: -40px;
  top: 50%;
  transform: translate(0%, -50%);
  font-weight: bold;
}
<div class="p">
  <div class="text-bullet-centered">&#8277;</div>
  text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
  text text text text text text text text text text text text text
</div>
<div class="p">
  <div class="text-bullet-centered">&#8277;</div>
  text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
  text text text text text text text text text text text text text
</div>

¿Ha sido útil esta solución?