par
Cyrano » 09 sept. 2007, 08:34
Salut,
pour positionner des coins arrondis, il faut qu'ils soient en position "absolute".
Schématiquement, on a un contenant, par exemple un bloc <div> : à l'intérieur, on va jouter quatre éléments qui contiendront les images des quatre coins. Pour se faciliter la vie, le contenant et les coins seront bien identifiés par un attribut id ou encore par un attribut "class" si on a plusieurs contenants utilisant les mêmes éléments.
Un élément positionné en "absolute" l'est par rapport au premier élément parent (dans l'arborescence DOM) qui est lui même positionné. Donc on commence par positionner le contenant en "relative par exemple.
Le code HTML va donc ressembler à quelque chose comme ceci (Attention, tu noteras que je mets deux classes aux images de coins) :
Code : Tout sélectionner
<div id="mon_bloc_1" class="coins_arrondis">
<p>Du contenu juste pour meubler...</p>
<img id="c_hg_1" class="coins_bloc c_hg" src="./img/c_hg.png" alt="" />
<img id="c_hd_1" class="coins_bloc c_hd" src="./img/c_hd.png" alt="" />
<img id="c_bg_1" class="coins_bloc c_bg" src="./img/c_bg.png" alt="" />
<img id="c_bd_1" class="coins_bloc c_bd" src="./img/c_bd.png" alt="" />
</div>
Si j'utilise deux classes pour les images, c'est parce que l'une des deux est la même pour les quatre images, ça va me permettre de préciser des règles communes à toutes, l'autre classe est spécifique et les propriétés CSS ne pointeront que pour cet élément.
Maintenant, il s'agit de positionner tout ça :
Code : Tout sélectionner
/* D'abord, positionner le contenant */
div.coins_arrondis {
position: relative;
width: 200px;
height: 300px;
padding: 0;
}
/* On définit les règles communes aux quatre coins */
img.coins_bloc {
position: absolute;
width: 10px;
height: 10px;
}
/* On établit maintenant les règles individuelles de chaque coin */
img.c_hg {
top: 0;
left: 0;
}
img.c_hd {
top: 0;
right: 0;
}
img.c_bg {
bottom: 0;
left: 0;
}
img.c_bd {
bottom: 0;
right: 0;
}
Voilà, c'est en fin de compte relativement simple. Attention cependant : si ceci fonctionne très bien avec les navigateurs respectant les standards, le positionnement devient vite un petit cauchemar avec Internet Explorer 6. Mais dans le cas présent, tu ne devrais pas avoir de surprises.
Attention à un point particulier : si tu définis un "padding" pour le contenant, cette marge risque d'élargir le contenant d'autant avec Firefox, ce qui n'est pas le but recherché. Donc mets le padding à 0 et ajoute plutôt un margin aux éléments contenus (sauf pour les coins bien entendu.
Il existe des variantes pour tout ça, digère déjà celle-ci et explore si tu envisages d'autres options.