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/>
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;
}
-
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
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:
pero si agregamos el CSS en la parte superior, eso nos dará esto:
-
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.
latitov
Así es como lo haces.
Primero, decora tu lista de esta manera:
<div class="p">
<div class="text-bullet-centered">⁕</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">⁕</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">⁕</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">⁕</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>
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