2011-07-23 3 views
1

Comment créer une table sans bord extérieur mais avec des bordures intérieures uniquement. Quelque chose comme this one (Voir en bas à droite dans la page). Je sais que je peux le créer manuellement comme ils l'ont fait, je veux donner une classe à chaque td mais n'est pas là une meilleure façon de réaliser cela?Seule bordure intérieure de la table css

Répondre

5

Non, ils ne l'ont pas fait comme ça, c'est fait de manière sympa! :)

Cela supprime la bordure droite des cellules.

.sidebar-stats td:last-child, .sidebar-stats th:last-child { 
    border-right: 0 none; 
} 

(De la même manière, vous pouvez enlever le bas-frontière pour la dernière ligne Vous pouvez utiliser Firebug pour analyser leur CSS, aide un beaucoup!)

+0

malheureusement cela fonctionne avec IE? – Shaokan

+2

@Shaokan: ': last-child' ne fonctionne que dans IE9 et supérieur. Il convient de souligner que les sites n'ont pas à être identiques dans tous les navigateurs. Ceci est seulement un problème esthétique mineur, donc c'est bien de le laisser glisser pour IE7/8. – thirtydot

+0

bien, ouais je suis d'accord. Je préfère utiliser -webkit-border-radius au lieu de lutter contre les divs et les images pour créer des coins arrondis par exemple, mais je demande quand même d'être sûr :) Merci! – Shaokan

0

Vous pouvez styler les éléments td pour avoir des bordures, puis donner votre table border:0, et assurez-vous d'ajouter également border-collapse:collapse à la table. Cela devrait ressembler à ceci à la fin:

table { 
border:0; 
border-collapse:collapse; 
} 

td { 
border:1px gray solid; 
border-collapse:collapse; 
} 
+0

cela ne fonctionne pas – Shaokan

1

Voici une solution qui va travailler dans tous les navigateurs, mais vous devez ajouter une classe CSS à la plus droite et de <td> de » bas dans votre table (vs avoir à donner une classe à chaque <td>)

<table> 
    <tr><td class="inner">text</td><td class="inner right">text</td></tr> 
    <tr><td class="inner bottom">text</td><td class="inner bottom right">text</td></tr> 
</table> 

.inner { 
    border-bottom: 1px solid #CCC; 
    border-right: 1px solid #CCC;  
} 

.right { 
    border-right: 0; 
} 

jsFiddle: http://jsfiddle.net/HS4nQ/3/

+0

Merci mec pour vos efforts :) En fait, c'est ce que j'ai mentionné en posant la question, que s'il y a une autre façon de le faire plutôt que de cette façon :) Encore, +1 pour vos efforts – Shaokan

0

Ceci est la: variation du premier enfant:

http://jsfiddle.net/6Z7R9/

table.mytable > * > tr > th, 
table.mytable > * > tr > td { 
    border-left: 10px solid red; 
    border-top: 10px solid red; 
} 

table.mytable > * > tr > th, 
table.mytable > * > tr > td:first-child { 
    border-left: none; 
} 

table.mytable > *:first-child > tr:first-child > th, 
table.mytable > *:first-child > tr:first-child > td { 
    border-top: none; 
} 
Questions connexes