Crear un separador de tubo a través de CSS

A menudo se puede ver una serie de enlaces distribuidos horizontalmente separados por pipe "|", vertical el símbolo gráfico dell'asticella. . Además, si hay una buena escritura HTML, te das cuenta de que esta lista de enlaces - aparentemente horizontal - no son más que listas con viñetas UL o OL . De ello se desprende que, en lugar de escribir:

1
2
3
< p >
"#1" > Link 1 < / a > | < a href = "#2" > Link 2 < / a > | < a href = "#n" > Link n < / a > < un href = "# 1"> Link 1 </ un > | < un href = "# 2"> Link 2 </ un > | < un href = "# n"> Enlace n </ un >
</ p >

Sería mejor utilizar:

1
2
3
4
5
< ul >
= "#1" > Link 1 < / a >< / li > < a > < un href = "# 1"> Link 1 </ un > </ a >
= "#2" > Link 2 < / a >< / li > < a > < un href = "# 2"> Link 2 </ un > </ a >
= "#n" > Link n < / a >< / li > < a > < un href = "# n"> Enlace n </ un > </ a >
</ ul >

Sin embargo, añade la tubería como un código de carácter sucia tan limpio. Nos puede utilizar alternativamente una frontera, utilice el 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;
}

La obtención de:

Podemos ver dos problemas: el primer enlace tiene el padding a la izquierda y el último eslabón tiene las tuberías a la derecha, que no es agradable de ver! del CSS2, per formattare graficamente la nostra lista. Esto es lo que usted puede utilizar las clases pseudo- :first-child y :last-child de CSS2, el formato gráfico de nuestra lista. Utilizando la siguiente hoja de estilo en el HTML en primer lugar:

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 ; frontera: 1px solid # 666;
}
/ * Eliminar el relleno del "primer hijo", el primer LI * /
ul li: first-child {
0 12px 0 0 ; padding: 0 12px 0 0;
}

/ * Elimina el borde "último hijo", LI * /
ul li: last-child {
0 0 0 12px ; padding: 12px 0 0 0;
none ; border: none;
}

Obteniendo así un mejor resultado:

Por supuesto, como sucede a menudo, presta atención a la compatibilidad con diferentes navegadores, especialmente Internet Explorer.

Variación de la flota

Incluso mejor, si se quiere evitar la float , utilice 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, al menos en FireFox :)

4 comentarios para "crear un separador de tubo a través de CSS"

  1. 09 de septiembre 2008 Julio:

    ¿Por qué, según su punto de vista, la sintaxis

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

    es peor

      <A href = "....? 

    En términos de codificación, no veo ninguna ventaja evidente, o más bien, ya veo, pero todavía relativamente insignificantes y pueden integrarse. Se está perdiendo algo?

  2. 09 de septiembre 2008 Giovambattista Fazioli :

    @ Julio: la calidad de código que tienden a escribir HTML, sin importar el acabado gráfico. De ello se desprende que una "lista" de los vínculos, siendo sólo una lista, debe aparecer como UL LI . A continuación, mostrar en forma horizontal o vertical, debe ser - de hecho - la tarea de la CSS. Sin embargo no hay nada malo en escribir una secuencia de vínculos como una serie de TAG A . La cuestión es que la eliminación de las hojas de estilo como se muestra en la página? Mediante una secuencia de TAG A , separados por tubos, por lo que será visible, incluso en ausencia de la hoja de estilos. Utilizando en su lugar una lista UL LI página todavía se vean bien y legibles sin hoja de estilo.

  3. 12 de junio 2009 SXE:

    Trucos interesantes. Sin embargo, intentando la última solución (en sustitución de la flota con display: inline), el diseño de los cambios en el menú un poco. Ese es el relleno no es igual a la derecha e izquierda, como es el caso con el flotador.

    S.

  4. 15 de junio 2009 Giovambattista Fazioli :

    ; anche se molto dipende dal browser utilizzato. @ SXE: evidentemente, el comportamiento de float no es idéntico al display:inline ; aunque mucho depende del navegador utilizado. il display:inline è, a mio avviso, migliore rispetto al float che, come ben sai, ha altri problemi di layout… Sin embargo, que actúa sobre el margin y padding en display:inline es, en mi opinión, mejor que la float , como usted bien sabe, tiene otros problemas de diseño ...

Deja un comentario

XHTML PERMISO TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <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