J'ai plusieurs éléments HTML identiques les uns après les autres:
<span>1</span>
<span>2</span>
<span>3</span>
Je recherche la meilleure façon d'ajouter de l'espace ENTRE les éléments en utilisant uniquement CSS
[no space] [1] [space 10px] [2] [space 10px] [3] [no space]
Aditionellement:
- Veuillez noter la compatibilité du navigateur de vos reçus
METTRE À JOUR
Il semble que je n'étais pas clair. Je ne souhaite pas utiliser de MARKUP HTML SUPPLÉMENTAIRE comme
<span></span> <span></span> <span class="last_span"></span>
Je ne veux pas utiliser de tableaux
Je veux que le premier et le dernier span soient ciblés automatiquement par CSS
Je ne veux pas utiliser javascript
Exigence facultative: la dernière étendue peut être NOT LAST CHILD de la balise parent, mais ce sera la LAST SPAN de la balise parent. Les travées n'ont pas d'autres balises entre elles.
text
span
s est-il variable?span
éléments sont générés par le service Web auquel je n'ai pas accès. Je ne peux donc pas changer le balisage. Cependant, je peux utiliser pleinement CSSRéponses:
Une bonne façon de le faire est la suivante:
Chaque
span
précédé d'unspan
(donc, tousspan
sauf le premier) auramargin-left: 10px
.Voici une réponse plus détaillée à une question similaire: séparateurs entre éléments sans hacks
la source
.sidebar-img + .sidebar-text { margin-left: 40px; }
Utilisez simplement une marge ou un rembourrage.
Dans votre cas particulier, vous ne pouvez utiliser
margin:0 10px
que le 2<span>
.METTRE À JOUR
Voici une belle solution CSS3 ( jsFiddle ):
Sélection d'élément avancé à l' aide de sélecteurs aiment
:nth-child()
,:last-child
,:first-of-type
, etc. est pris en charge depuis Internet Explorer 9.la source
span
manuellement? Cela devrait être le travail du CSSspan
s etdiv
s (qui sont des éléments de bloc). Votre solution est valable de toute façon si vous définissezdiv
s comme des éléments inline ...ajoutez ces règles au conteneur parent:
Bonne référence: https://cssreference.io/
Compatibilité du navigateur: https://gridbyexample.com/browsers/
la source
grid-auto-columns="max-content"
peut également être utile. Cela fera correspondre la taille de l'élément de la grille au contenu. De plus, la compatibilité du navigateur ne devrait plus être un problème: caniuse.com/#feat=css-gridC'est si simple.
Vous pouvez styliser les éléments en excluant le premier, juste dans une ligne de code:
et c'est fait, sans aucune manipulation de classe.
la source
span.Showing ~ span.Showing
place despan.Showing + span.Showing
.~
est le sélecteur général des frères et sœurs, où l'on n'a pas besoin de suivre directement un autre.Vous pouvez profiter du fait qu'il
span
s'agit d'un élément en ligneCependant, cette solution échouera si vous avez plus d'un mot de texte dans votre étendue
la source
la source
Vous pouvez écrire comme ceci:
la source
<span>
est un élément en ligne, vous ne pouvez donc pas les espacer sans le mettre à niveau. Essaye çaHorizontal
Verticale
Compatible avec tous les navigateurs.
la source
Vous devez envelopper vos éléments dans un conteneur, puis utiliser de nouvelles fonctionnalités CSS3 telles que la grille css , un cours gratuit , puis utiliser
grid-gap:value
celui qui a été créé pour votre problème spécifiquela source
Ou, au lieu de définir la marge et de la remplacer, vous pouvez simplement la définir correctement tout de suite avec le combo suivant:
la source
:first-of-type
et des:last-of-type
sélecteurs CSS.not
support du navigateur d'expressionla source
Si vous souhaitez aligner divers éléments et que vous souhaitez avoir la même marge sur tous les côtés, vous pouvez utiliser ce qui suit. Chaque élément avec
container
, quel que soit son type, recevra la même marge environnante.Si vous souhaitez aligner des éléments dans une ligne, mais que le premier élément touche le bord le plus à gauche de
container
et que tous les autres éléments soient espacés de manière égale, vous pouvez utiliser ceci:la source