CSS : tr et background
Aujourd'hui en faisant de l'intégration web j'ai voulu ajouter une image de fond sur une balise tr, c'est bien la première fois que je le faisais, honnêtement je ne pensais pas que c'était possible et encore moins valide (W3C)... et ben je me trompais !
Le but était d'avoir une sorte de box avec un effet d'ombre, ce qui implique 3 images : header, le centre qui est répété (repeat-y) et le footer. Dans cette box j'avais un tableau qui empiétait sur le header, comme le montre l'image :
Pour le code HTML j'ai donc fais comme ceci :
| Colonne 1 | Colonne 2 |
Après plusieurs heures passés à intégrer le design, je me suis aperçu que ça ne passait pas sur IE 6 et 7 : L'image est répétée dans chaque td, comme le montre l'image :
Après avoir cherché sur google j'ai trouvé une solution qui fixe le problème :
tr {
background-image: url(toto);
}
td {
background-position: expression(-this.offsetLeft);
}
ou sur un tbody :
tbody {
background-image:url(foo);
}
td {
background-position:expression(-this.offsetLeft + " " + -this.offsetTop);
}
Pour tester l'astuce voici un lien. Si vous avez trouvé mieux n'hésitez pas à me le dire, j'apprends chaque jour.
Content de cet article?
Aucun trackbacks pour l'instant

16 septembre 2009
C’est dommage que IE ne supporte pas CSS 3 et l’attribut First-child (http://www.w3.org/TR/CSS2/selector.html#first-child). Ça serait tellement plus simple et plus beau à lire
Mais sympa cette petite astuce avec expression (que je connaissais pas)
16 septembre 2009
C’est clair que c’est crade. Avec jquery ya peut être moyen de faire ça, j’ai pas essayé mais bon. Vive le CSS 3 \o/ !