Bordure entre éléments
Signature : | Mis en ligne le : 03/07/2008
Catégorie(s) :
  • Linux Pratique
  • | Domaine :
    Commentez

    Retrouvez cet article dans : Linux Pratique 40

    L'objectif est ici de créer une bordure uniquement ENTRE les éléments d'une liste. Nous pourrions utiliser la propriété border-bottom, me direz-vous. Oui mais voilà, nous souhaitons qu'il n'y ait une bordure qu'entre chaque élément, autrement dit, ni après le dernier, ni avant le premier. On peut donc oublier border-bottom (ou même border-top) qui génère un résultat non conforme à nos souhaits (Fig. 1).

    /img-articles/lp/40/art-19/fig-1.jpg

    Utilisation du sélecteur first-child

    Le pseudo-format first-child permet de spécifier que le premier élément enfant d'un élément HTML reçoit un aspect particulier. En l'occurrence, nous pouvons utiliser alors la propriété border-top pour définir la bordure supérieure de chaque élément de la liste, puis utiliser le sélecteur first-child pour supprimer la bordure du premier élément (Fig. 2). Observez le résultat sur la figure 2. Voilà un moyen simple et pratique de parvenir à notre but. Mais voilà, le pseudo-format first-child n'est malheureusement pas reconnu par le navigateur Internet Explorer v.6.0 et sûrement par d'autres navigateurs... En revanche, on notera qu’IE 7.0 permet enfin l'utilisation de ce pseudo-format tellement pratique !

    /img-articles/lp/40/art-19/fig-2.jpg

    Mais nous pouvons tout de même songer à une solution alternative... La première solution qui nous vient à l'esprit est de créer une classe spécifique pour le premier (ou le dernier) élément de la liste, auquel cas l'utilisation de border-top (ou border-bottom) peut être mise en place : HTML : CSS : Cependant, cette solution n'est pas très pratique et en plus, n'est pas réalisable si vous n'avez pas accès au code complet de la page Web en question (cas de moteurs de blogs et CMS qui ne permettent pas toujours la modification du squelette de base de la page).

    Masquer la bordure indésirable

    L'autre solution qui s'offre à nous, plutôt que de supprimer la bordure en trop, est de la masquer. Pour ce faire, nous allons utiliser la technique des marges négatives : Ce qui donne le résultat que vous pouvez observer sur la figure 3.

    /img-articles/lp/40/art-19/fig-3.jpg

    La marge supérieure des items de la liste est en retrait de 1px, ce qui correspond à l'épaisseur de la bordure supérieure. De cette façon, la bordure supérieure du premier élément de la liste est masqué, car il sort du conteneur (<ul>). Néanmoins, ceci n'est valable que pour Internet Explorer 6.0, cette fois-ci ! Qu'à cela ne tienne, nous n'avons qu'à ajouter le sélecteur first-child vu ci-dessus pour assurer le résultat sous IE 7.0 et Firefox 2.0 :

    Cas d'une liste horizontale

    Dans le cas d'une liste horizontale (élément fréquemment utilisé pour matérialiser les menus de sites Web), il faudra tout d'abord penser à une chose : une liste est par défaut un élément de type bloc, donc les items se positionnent par défaut les uns en dessous des autres. Pour qu'ils se placent les uns à côtés des autres (position horizontale), il ne faut pas oublier d'utiliser la propriété display: inline;. Revenons à notre problème de bordure. C'est la bordure de gauche (border-left) qui nous intéresse ici. Comme précédemment, on utilisera first-child (pour Firefox) pour supprimer la première bordure de la liste, ainsi que le retrait de la marge de gauche (pour Internet Explorer) (Fig. 4).

    /img-articles/lp/40/art-19/fig-4.jpg

    Attention, sous Internet Explorer 6.0, cette méthode ne fonctionne que si l'on définit le conteneur, autrement dit, l'élément <ul> comme flottant à gauche :

    Application : créer des bordures entre les cellules d'un tableau

    Notre objectif est d'obtenir un tableau similaire à la figure suivante (Fig. 5). Ce type de formatage est en effet plus " léger " que le quadrillage classique d'un tableau.

    /img-articles/lp/40/art-19/fig-5.jpg

    Lors du formatage du tableau, vous serez peut-être tenté d'utiliser la propriété border-spacing pour fixer (voire annuler) l'espace entre les bordures du tableau. Mais attention : cette propriété n'est toujours pas reconnue par Internet Explorer 7.0. Il faudra donc utiliser la mention cellspacing dans le code HTML de la base (ceci demeure pour l'instant conforme à la recommandation XHTML strict). En outre, n'oubliez pas que sous Internet Explorer, il est impossible d'utiliser la propriété border-width si elle n'est pas utilisée conjointement avec la propriété border-style. Si votre tableau comporte une bordure externe, il est également possible d'utiliser la propriété border-collapse. En effet, cette dernière permet de préciser si les bordures d'un tableau doivent être fusionnées (border-collapse: collapse;) ou distinctes (border-collapse: separate;). (On supprimera le sélecteur td:first-child qui devient inutile). Dans notre cas, nous utiliserons border-collapse:collapse; De cette manière, la bordure externe du tableau et la bordure gauche de la première colonne vont fusionner : nous obtiendrons ainsi l'effet souhaité (Fig. 6a). Néanmoins, il faudra veiller à ce que l'épaisseur de la bordure externe soit supérieure à l'épaisseur de la bordure de gauche des cellules. Dans le cas contraire, dans le navigateur Firefox, les bordures internes " prennent le dessus " par rapport à la bordure externe (Fig. 6b).

    /img-articles/lp/40/art-19/fig-6.jpg

    Avec une image d'arrière-plan

    Au lieu de définir une bordure, il est tout à fait possible de définir une image d'arrière-plan pour les cellules du tableau. Cette image sera positionnée tout à gauche de chaque cellule (Fig. 7). Pour Firefox, on utilisera le pseudo-format first-child afin de supprimer l'image d'arrière-plan pour la première colonne. Et pour les versions d'Internet Explorer antérieures à la version 7.0, on utilise à nouveau la technique des marges négatives : L'utilisation d'une image d'arrière-plan peut nous permettre ainsi quelques fantaisies (Fig. 8)...

    /img-articles/lp/40/art-19/t1.jpg

    Retrouvez cet article dans : Linux Pratique 40

    Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : GNU/Linux Magazine 149
    Édito : GNU/Linux Magazine HS N°60
    Édito : Misc 61
    Édito : Linux Pratique 71
    Édito : Linux Essentiel N°25
    Communication RSS Com. RSS Presse
    Lancement de la plateforme de vente en ligne de PDF des Éditions Diamond ! Un...
    Misc N°61 – Communiqué de presse
    GNU/Linux Magazine N°149 – Communiqué de presse
    GNU/Linux Magazine HS N°60 – Communiqué de presse
    Linux Pratique N°71 – Communiqué de presse
    prochainement moteur de recherches des articles
     
    :
    :
    Jours heures minutes secondes
    En kiosque Flux RSS

    Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...