Preciso adicionar separadores entre os elementos de navegação. Os separadores são imagens.
Minha estrutura HTML é como: ol > li > a > img
.
Aqui chego a duas soluções possíveis:
- Para adicionar mais
li
tags para separação (boo!), - Incluir separador na imagem de cada elemento (é melhor, mas possibilita que o usuário clique em, por exemplo, "Home", mas vá para "Serviços", pois estão um atrás do outro e o usuário pode clicar acidentalmente no separador que pertence a "Serviços");
O que fazer?
css
navigation
usability
separator
daGrevis
fonte
fonte
Respostas:
Basta usar a imagem separadora como imagem de fundo no
li
.Para que apareça apenas entre os itens da lista, posicione a imagem à esquerda do
li
, mas não no primeiro.Por exemplo:
Este CSS adiciona a imagem a cada item da lista que segue outro item da lista - em outras palavras, todos eles, exceto o primeiro.
NB. Esteja ciente de que o seletor adjacente (li + li) não funciona no IE6, então você terá que apenas adicionar a imagem de fundo ao li convencional (com uma folha de estilo condicional) e talvez aplicar uma margem negativa a uma das bordas.
fonte
:before
pseudo seletor evita que ele apareça após o último elemento.border-left
para desenhar uma linha vertical entre os itens.Se não houver uma necessidade urgente de usar imagens para os separadores, você pode fazer isso com CSS puro.
Isso coloca uma barra entre cada item da lista, assim como a imagem na pergunta original descrita. Mas como estamos usando os seletores adjacentes , ele não coloca a barra antes do primeiro elemento. E como estamos usando o
:before
pseudo seletor, ele não coloca um no final.fonte
Você pode adicionar um
li
elemento onde deseja adicionar divisorEm CSS, você pode adicionar o seguinte código.
Isso aumentará sua velocidade de execução, pois não carregará nenhuma imagem. apenas teste .. :)
fonte
A outra solução está OK, mas não há necessidade de adicionar o separador no último se usar : depois ou no início se estiver usando : antes .
TÃO:
caso: depois
case: antes
fonte
Para obter o separador centralizado verticalmente em relação ao texto do menu,
fonte
Adicione o separador ao
li
fundo e certifique-se de que o link não expanda para cobrir o separador, o que significa que o separador não será clicável.fonte
Para aqueles que usam Sass , escrevi um mixin para este propósito:
Exemplo:
O que lhe dará isso:
fonte
Eu acredito que a melhor solução para isso, é o que eu uso, e essa é uma borda css natural:
Pode ser necessário cuidar do preenchimento como:
Finalmente, se você não quiser que o último li tenha essa borda separada, dê a seu último filho "nenhum" em "borda direita" assim:
Boa sorte :)
fonte
Coloque-o como plano de fundo no elemento da lista:
A seguir, recomendo uma marcação diferente para acessibilidade:
vez de incorporar as imagens embutidas, coloque o texto como texto, coloque uma extensão em cada uma, aplique a imagem como plano de fundo no e, em seguida, oculte o texto com display: none - this oferece muito mais flexibilidade de estilo e permite que você use tiling com uma imagem bg de 1px de largura, economiza largura de banda e você pode incorporá-lo em um sprite CSS, o que economiza chamadas HTTP:
HTML:
CSS:
ATUALIZAÇÃO OK, vejo que outros obtiveram respostas semelhantes antes de mim - e observo que John também inclui um meio para evitar que o separador apareça antes do primeiro elemento, usando o seletor li + li - o que significa qualquer li vindo após o outro li.
fonte