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.
text
span
s variable?span
elementos 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
span
precedido por unspan
(por lo tanto, todosspan
excepto 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 10px
solo 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
span
manualmente? Este debería ser el trabajo del CSSmargin-left
sobre el últimospan
, que no es exactamente lo que OP quería.span
s ydiv
s (que son elementos de bloque). Su solución es válida de todos modos si definediv
s 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.Showing
lugar despan.Showing + span.Showing
.~
es el selector general de hermanos, donde uno no necesita seguir directamente a otro.Puede aprovechar el hecho de que
span
es 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:value
que 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-type
y los:last-of-type
selectores de CSS.not
compatibilidad 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
container
y todos los demás elementos están igualmente espaciados, puede usar esto:fuente