Tengo varios elementos HTML iguales uno tras otro:
<span>1</span>
<span>2</span>
<span>3</span>
Estoy buscando la mejor manera de agregar espacio ENTRE los elementos usando solo CSS
[no space] [1] [space 10px] [2] [space 10px] [3] [no space]
Adicionalmente:
- Anote la compatibilidad del navegador de sus recibos
ACTUALIZAR
Parece que no estaba claro. No quiero usar NINGÚN MARCADO HTML ADICIONAL como
<span></span> <span></span> <span class="last_span"></span>
No quiero usar tablas
Quiero que el primer y el último tramo sean segmentados automáticamente por CSS
No quiero usar javascript
Requisito opcional: el último intervalo no puede ser el ÚLTIMO HIJO de la etiqueta principal, pero será el ÚLTIMO VARÓN de la etiqueta principal. Los intervalos no tienen otras etiquetas entre ellos.

textspans variable?spanelementos los genera el servicio web al que no tengo acceso. Entonces no puedo cambiar el marcado. Sin embargo, puedo usar CSS por completoRespuestas:
Una buena forma de hacerlo es esta:
Cada
spanprecedido por unspan(por lo tanto, todosspanexcepto el primero) tendránmargin-left: 10px.Aquí hay una respuesta más detallada a una pregunta similar: separadores entre elementos sin hacks
fuente
.sidebar-img + .sidebar-text { margin-left: 40px; }Solo use margen o relleno.
En su caso específico,
margin:0 10pxsolo podría usar el 2do<span>.ACTUALIZAR
Aquí hay una buena solución CSS3 ( jsFiddle ):
De selección de elementos avanzada utilizando selectores como
:nth-child(),:last-child,:first-of-type, etc. está soportado desde Internet Explorer 9.fuente
spanmanualmente? Este debería ser el trabajo del CSSmargin-leftsobre el últimospan, que no es exactamente lo que OP quería.spans ydivs (que son elementos de bloque). Su solución es válida de todos modos si definedivs como elementos en línea ...agregue estas reglas al contenedor principal:
Buena referencia: https://cssreference.io/
Compatibilidad del navegador: https://gridbyexample.com/browsers/
fuente
grid-auto-columns="max-content"también puede ser útil. Hará que el tamaño del elemento de la cuadrícula coincida con el contenido. Además, la compatibilidad del navegador ya no debería ser un problema: caniuse.com/#feat=css-gridEso es tan fácil.
Puede diseñar elementos excluyendo el primero, solo en una línea de código:
y listo, sin manipulación de clases.
fuente
span.Showing ~ span.Showinglugar despan.Showing + span.Showing.~es el selector general de hermanos, donde uno no necesita seguir directamente a otro.Puede aprovechar el hecho de que
spanes un elemento en líneaSin embargo, esta solución se romperá si tiene más de una palabra de texto en su espacio
fuente
fuente
Puedes escribir así:
fuente
<span>es un elemento en línea, por lo que no puede espaciarlos sin que esté a nivel de bloque. Prueba estoHorizontal
Vertical
Compatible con todos los navegadores.
fuente
Debe envolver sus elementos dentro de un contenedor, luego usar las nuevas funciones de CSS3 como la cuadrícula css , curso gratuito y luego usar las
grid-gap:valueque se crearon para su problema específicofuente
O, en lugar de establecer el margen y anularlo, puede configurarlo correctamente de inmediato con el siguiente combo:
fuente
:first-of-typey los:last-of-typeselectores de CSS.notcompatibilidad con el navegador de expresionesfuente
Si desea alinear varios elementos y desea tener el mismo margen alrededor de todos los lados, puede usar lo siguiente. Cada elemento dentro
container, independientemente del tipo, recibirá el mismo margen circundante.Si desea alinear elementos en una fila, pero el primer elemento toca el borde más a la izquierda
containery todos los demás elementos están igualmente espaciados, puede usar esto:fuente