Tenho vários elementos HTML idênticos, um após o outro:
<span>1</span>
<span>2</span>
<span>3</span>
Estou procurando a melhor maneira de adicionar espaço ENTRE os elementos usando apenas CSS
[no space] [1] [space 10px] [2] [space 10px] [3] [no space]
Além disso:
- Anote a compatibilidade do navegador dos seus recibos
ATUALIZAR
Parece que não estava claro. Não quero usar QUALQUER MARCAÇÃO HTML ADICIONAL, como
<span></span> <span></span> <span class="last_span"></span>
Não quero usar tabelas
Quero que o primeiro e o último período sejam direcionados automaticamente por CSS
Não quero usar javascript
Requisito opcional: o último período não pode ser ÚLTIMO FILHO da tag pai, mas será o ÚLTIMO SPAN da tag pai. Os spans não têm nenhuma outra tag entre eles.
text
span
s é variável?span
elementos são gerados pelo serviço da web ao qual não tenho acesso. Portanto, não posso alterar a marcação. No entanto, posso usar totalmente o CSSRespostas:
Uma boa maneira de fazer isso é:
Cada
span
precedido por umspan
(portanto, todosspan
exceto o primeiro) terámargin-left: 10px
.Aqui está uma resposta mais detalhada para uma pergunta semelhante: Separadores entre elementos sem hacks
fonte
.sidebar-img + .sidebar-text { margin-left: 40px; }
Basta usar margem ou preenchimento.
No seu caso específico, você poderia usar
margin:0 10px
apenas no 2º<span>
.ATUALIZAR
Aqui está uma boa solução CSS3 ( jsFiddle ):
Elemento de seleção avançada usando seletores gosto
:nth-child()
,:last-child
,:first-of-type
, etc. é suportado desde que o Internet Explorer 9.fonte
span
manualmente? Este deve ser o trabalho do CSSmargin-left
sobre o últimospan
, que não é exatamente o que o OP queria.span
s ediv
s (que são elementos de bloco). Sua solução é válida de qualquer maneira se você definirdiv
s como elementos inline ...adicione essas regras ao contêiner pai:
Boa referência: https://cssreference.io/
Compatibilidade do navegador: https://gridbyexample.com/browsers/
fonte
grid-auto-columns="max-content"
também pode ser útil. Isso fará com que o tamanho do item da grade corresponda ao conteúdo. Além disso, a compatibilidade do navegador não deve ser mais um problema: caniuse.com/#feat=css-gridIsso é tão fácil.
Você pode definir o estilo dos elementos excluindo o primeiro, apenas em uma linha de código:
e pronto, sem manipulação de classe.
fonte
span.Showing ~ span.Showing
vez despan.Showing + span.Showing
.~
é o seletor geral de irmãos, onde um não precisa seguir diretamente o outro.Você pode tirar vantagem do fato de que
span
é um elemento embutidoNo entanto, essa solução será interrompida se você tiver mais de uma palavra de texto em seu intervalo
fonte
fonte
Você pode escrever assim:
fonte
<span>
é um elemento embutido para que você não possa espaçá-los sem torná-los nivelados. Tente istoHorizontal
Vertical
Compatível com todos os navegadores.
fonte
Você deve envolver seus elementos dentro de um contêiner e, em seguida, usar os novos recursos CSS3, como grade css , curso gratuito e, em seguida, usar o
grid-gap:value
que foi criado para o seu problema específicofonte
Ou, em vez de definir a margem e não substituí-la, você pode apenas defini-la corretamente imediatamente com a seguinte combinação:
fonte
:first-of-type
e:last-of-type
seletores CSS.not
o suporte ao navegador de expressãofonte
Se quiser alinhar vários itens e quiser ter a mesma margem em todos os lados, você pode usar o seguinte. Cada elemento dentro
container
, independentemente do tipo, receberá a mesma margem circundante.Se você deseja alinhar itens em uma linha, mas o primeiro elemento toca a borda esquerda de
container
e todos os outros elementos estão igualmente espaçados, você pode usar isto:fonte