Criar um separador de tubo através de CSS

Muitas vezes você pode ver um número de links distribuídos horizontalmente separados por pipe "|", o símbolo gráfico dell'asticella vertical. . Além disso, se houver uma boa escrita HTML, você percebe que esta lista de links - aparentemente horizontal - nada mais são que listas com marcas UL ou OL . Segue-se que em vez de escrever:

1
2
3
< p >
"#1" > Link 1 < / a > | < a href = "#2" > Link 2 < / a > | < a href = "#n" > Link n < / a > < um href = "# 1"> Link 1 </ uma > | < um href = "# 2"> Link 2 </ uma > | < um href = "# n"> Link n </ uma >
</ p >

Seria melhor usar:

1
2
3
4
5
< ul >
= "#1" > Link 1 < / a >< / li > < será > < um href = "# 1"> Link 1 </ um > </ eles >
= "#2" > Link 2 < / a >< / li > < será > < um href = "# 2"> Link 2 </ um > </ eles >
= "#n" > Link n < / a >< / li > < será > < um href = "# n"> Link n </ um > </ eles >
</ ul >

Mas adicione o tubo como um código de caractere suja tão limpa. Podemos usar em alternativa uma fronteira, usando o código:

1
2
3
4
5
6
ul li {
none ; list-style: none;
left ; float: left;
0 12px 0 12px ; padding: 12px 0 0 12px;
1px solid #666 ; border-right: 1px solid # 666;
}

Obtenção de:

Podemos ver dois problemas: o primeiro link tem o padding do lado esquerdo e tem a última ligação dos tubos para a direita, o que não é bom ver! del CSS2, per formattare graficamente la nostra lista. Isto é assim que você pode usar as classes pseudo- :first-child e :last-child de CSS2 formato, gráfica para nossa lista. Usando a folha de estilo a seguir sobre o HTML primeiro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ul li {
none ; list-style: none;
left ; float: left;
0 12px 0 12px ; padding: 12px 0 0 12px;
1px solid #666 ; margem: 1px solid # 666;
}
/ * Remove o preenchimento do "primeiro filho", o primeiro LI * /
ul li: first-child {
0 12px 0 0 ; padding: 0 12px 0 0;
}

/ * Remove a borda "último filho", LI * /
ul li: last-child {
0 0 0 12px ; padding: 12px 0 0 0;
none ; border: none;
}

Obtendo assim um melhor resultado:

Claro que, como muitas vezes acontece, preste atenção a compatibilidade com navegadores diferentes, especialmente Internet Explorer.

Variação do flutuador

Ainda melhor, se você quiser evitar a float , use este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
ul li {
none ; list-style: none;
inline ; display: inline;
0 12px 0 12px ; padding: 12px 0 0 12px;
1px solid #666 ; border-right: 1px solid # 666;
}
ul li: first-child {
0 12px 0 0 ; padding: 0 12px 0 0;
}
ul li: last-child {
0 0 0 12px ; padding: 12px 0 0 0;
none ; border: none;
}

Resultados idênticos, pelo menos no FireFox :)

4 comentários para "Criar um separador de tubo através de CSS"

  1. 09 de setembro de 2008 Julius:

    Por que, de acordo com seu ponto de vista, a sintaxe

      <A href = "# 1" ..... 

    é pior

      <A href = "....? 

    Em termos de codificação, não vejo nenhuma vantagem óbvia, ou melhor, eu vejo, mas ainda relativamente insignificante e pode ser integrado. Ele está faltando alguma coisa?

  2. 09 de setembro de 2008 Giovambattista Fazioli :

    @ Julius: qualidade de código que você tendem a escrever HTML, não importa onde o acabamento gráfico. Segue-se que "a lista", uma das ligações, sendo apenas uma lista, devem ser listados como UL LI . Em seguida, exibi-lo na horizontal ou vertical, deve ser - de fato - a tarefa de CSS. No entanto não há nada errado com a escrita de uma sequência de links como uma série de TAG A . A questão é que eliminando as folhas de estilo, como mostrado na página? Usando uma seqüência de TAG A , separados por tubos, para que eles serão visíveis, mesmo na ausência da folha de estilo. Usando, em vez de uma lista UL LI página ainda bonita e legível, sem folha de estilo.

  3. Junho 12, 2009 SXE:

    Truques interessantes. No entanto, tentando a última solução (que substitui o flutuador com display: inline), o layout do menu muda um pouco. Que é o preenchimento não é igual à direita e à esquerda, como é o caso com o float.

    S.

  4. 15 de junho de 2009 Giovambattista Fazioli :

    ; anche se molto dipende dal browser utilizzato. @ SXE: obviamente, o comportamento float não é idêntico ao do display:inline ; embora muito depende do browser usado. il display:inline è, a mio avviso, migliore rispetto al float che, come ben sai, ha altri problemi di layout… No entanto, sob a margin e padding em display:inline é, na minha opinião, melhor do que a float , como você bem sabe, tem problemas de layout outras ...

Deixe um comentário

XHTML PERMIT TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CÓDIGO DE INSERÇÃO:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL