Un espace entre les éléments de la liste en ligne-bloc [dupliquer]
cette question a déjà une réponse ici:
- Comment supprimer l'espace entre les éléments en ligne-bloc? 35 réponses
possible Duplicate:
marge non désirée dans les éléments de la liste en ligne-bloc
comment supprimer" Invisible space "de HTML
pourquoi les éléments de la liste en ligne-Bloc ont-ils une place? Peu importe comment je fais mes articles de liste dans un menu, j'obtiens toujours des espaces.
css lang-css prettyprint-override">li {
border: 1px solid black;
display: inline-block;
height: 25px;
list-style-type: none;
text-align: center;
width: 50px;
}
ul {
padding: 0;
}
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
8 réponses
j'ai vu ceci et j'ai répondu dessus avant:
après d'autres recherches j'ai
découvert que inline-block
est un
méthode dépendante de whitespace et
dépend de la police de caractères. Dans ce cas 4px est rendu.
Pour éviter cela, vous pourriez courir votre
li
s ensemble en une ligne, ou bloc
les étiquettes d'extrémité et les étiquettes de début ensemble
comme ceci:
<ul> <li> <div>first</div> </li><li> <div>first</div> </li><li> <div>first</div> </li><li> <div>first</div> </li> </ul>
comme mentionné dans d'autres réponses et commentaires, la meilleure pratique pour résoudre ce problème est d'ajouter font-size: 0;
à l'élément parent:
ul {
font-size: 0;
}
ul li {
font-size: 14px;
display: inline-block;
}
c'est mieux pour la lisibilité HTML (en évitant d'exécuter les tags ensemble etc). L'effet d'espacement est dû au paramètre d'espacement de la police, vous devez donc la Réinitialiser pour les éléments inlinés et la Réinitialiser pour le contenu. dans.
Solution:
ul {
font-size: 0;
}
ul li {
font-size: 14px;
display: inline-block;
}
vous devez définir la taille de police de parent à 0
j'ajouterais la propriété CSS de float left comme vu ci-dessous. Qui se débarrasse de l'espace supplémentaire.
ul li {
float:left;
}
en fait, ceci n'est pas spécifique à display:inline-block
, mais s'applique également à display:inline
. Ainsi, en plus de la solution de David Horák, cela fonctionne aussi:
ul {
font-size: 0;
}
ul li {
font-size: 14px;
display: inline;
}
une autre solution, similaire à solution de Gerbus , mais cela fonctionne également avec le dimensionnement relatif de police.
ul {
letter-spacing: -1em; /* Effectively collapses white-space */
}
ul li {
display: inline;
letter-spacing: normal; /* Reset letter-spacing to normal value */
}
j'ai eu le même problème, quand j'ai utilisé un bloc-inline sur mon menu j'ai eu l'espace entre chaque" li " j'ai trouvé une solution simple, Je ne me souviens pas où je l'ai trouvé, de toute façon voici ce que j'ai fait.
<li><a href="index.html" title="home" class="active">Home</a></li><!---->
<li><a href="news.html" title="news">News</a></li><!---->
<li><a href="about.html" title="about">About Us</a></li><!---->
<li><a href="contact.html" title="contact">Contact Us</a></li>
vous ajoutez un signe de commentaire entre chaque extrémité de, et le début de : "li" Puis l'espace horizontal disparaît. Espérons que la réponse à la question Merci
il suffit de supprimer les ruptures entre les li dans votre code html... fais les li en une seule ligne..
même si elle n'est pas basée sur inline-block
, cette solution pourrait valoir la peine d'être considérée (permet à peu près le même contrôle de formatage des niveaux supérieurs).
ul {
display: table;
}
ul li {
display: table-cell;
}
- IE8+ & les principaux navigateurs compatibles
- Relative/police fixe indépendants de la taille du
- code HTML format indépendant (pas besoin de coller
</li><li>
)