302 votes

Comment supprimer l'indentation d'un élément de liste non ordonnée ?

Je veux supprimer toutes les indentations de ul . J'ai essayé de régler margin , padding , text-indent a 0 mais sans succès. Il semble que le réglage text-indent à un nombre négatif fait l'affaire - mais est-ce vraiment le seul moyen de supprimer l'indentation ?

1 votes

Difficile à dire sans votre HTML et CSS, mais l'utilisation d'un CSS Reset/Normalize composé de règles ul{padding : 0 ; margin : 0;} fait l'affaire dans la plupart des cas. Je suis sûr que l'indentation du texte n'a rien à voir avec cela.

0 votes

Sans voir ce que vous faites réellement, il est difficile de dire quel est le problème. La définition de la marge et du remplissage de l'ul à 0 devrait fonctionner sur tous les navigateurs.

6 votes

"Ça n'a pas marché. Et je ne peux pas utiliser la réinitialisation CSS. Mes modifications font partie d'un cadre web géant sur lequel travaillent plus de 60 personnes" - Haha en effet. Alors vous n'avez pas posé votre question clairement !

491voto

j08691 Points 86464

Définissez le style de la liste et le remplissage à gauche à rien.

ul {
    list-style: none;
    padding-left: 0;
}

ul {
  list-style: none;
  padding-left: 0;
}

<ul>
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>

Pour maintenir les balles, vous pouvez remplacer le list-style: none avec list-style-position: inside ou le raccourci list-style: inside :

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

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

<ul>
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>

23 votes

Vous pouvez supprimer les retraits et conserver la numérotation/les puces en utilisant : ul { list-style-position : inside ; padding-left : 0;}

5 votes

Eh bien, maintenant que vous avez édité votre réponse, les puces sont maintenues, mais il y a toujours le problème que les <li>s avec plusieurs lignes de texte n'indentent pas correctement toutes les lignes. Si tu continues à éditer, tu finiras peut-être par trouver ma solution :D

0 votes

La deuxième solution qui conserve la balle ne semble plus fonctionner (Chrome 55 sur Windows). Des alternatives ?

106voto

Jpsy Points 2811

Ma solution préférée pour supprimer l'indentation de <ul> est une simple ligne CSS :

ul { padding-left: 1.2em; }

<p>A leading line of paragraph text</p>
<ul>
    <li>Bullet points align with paragraph text above.</li>
    <li>Long list items wrap around correctly. Long list items wrap around correctly. Long list items wrap around correctly. Long list items wrap around correctly. Long list items wrap around correctly. </li>
    <li>List item 3</li>
</ul>
<p>A trailing line of paragraph text</p>

Cette solution est non seulement légère, mais présente de multiples avantages :

  • Il aligne joliment à gauche les puces de <ul> sur le texte du paragraphe normal qui les entoure (= retrait de <ul> supprimé).
  • Les blocs de texte à l'intérieur des éléments <li> restent correctement indentés s'ils s'enroulent sur plusieurs lignes.

Infos sur l'héritage :
Pour les versions 8 et inférieures d'IE, vous devez utiliser margin-left à la place :

    ul { margin-left: 1.2em; }

0 votes

J'ai déjà expliqué tous les problèmes dans mon message, @aioobe. Mais encore une fois : La réponse acceptée (statut à ce jour, car après mon post original, elle a été modifiée plusieurs fois pour l'améliorer) maintient maintenant les puces (si vous utilisez le deuxième exemple donné), mais elle n'indente pas correctement le texte multiligne à puces. Voici le bidule du deuxième exemple de la réponse acceptée, modifié pour montrer l'effet : jsfiddle.net/v6nyuq6f/88 Et voici le même violon corrigé avec mon approche : jsfiddle.net/v6nyuq6f/89

2 votes

Nous sommes donc en 2016 et se fier à une valeur qui n'est "pas parfaite pour tous les navigateurs" est la solution la plus propre pour ce problème assez commun. Existe-t-il un moyen d'obtenir la largeur exacte du symbole de l'élément, peut-être en utilisant des fonctionnalités CSS3 ?

0 votes

Juste pour être sûr : ul { padding-left:1.2em; margin-left: 0; }

9voto

Graham Points 21

Ajoutez ceci à votre CSS :

ul { list-style-position: inside; }

Cela placera les éléments li dans le même retrait que les autres paragraphes et textes.

Réf : http://www.w3schools.com/cssref/pr_list-style-position.asp

7 votes

Sur les <li>s avec plusieurs lignes de texte, list-style-position: inside aligne le texte de la deuxième ligne et de toutes les lignes suivantes sur la puce. Ce n'est certainement pas souhaitable.

7voto

John Conde Points 102874

Enlevez le rembourrage :

padding-left: 0;

4voto

naeluh Points 143

Pouvez-vous fournir un lien ? merci Je peux jeter un coup d'oeil Il est probable que votre sélecteur css n'est pas assez puissant.

padding:0!important;

1 votes

Les dimensions ne sont pas nécessaires lorsqu'on spécifie 0.

13 votes

!important es EVIL

0 votes

@Madbreaks Cela peut fonctionner si le sélecteur est le bon et que le cas d'utilisation est correct, mais vous avez raison, probablement pas celui-là, peut-être que dans ce cas, il y a une règle css principale qui doit être remplacée en changeant le fichier de base, alors il a été laissé en place comme s'il ne s'agissait pas de pirater le noyau ? Je ne sais pas, je me trompe peut-être

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X