Version complète: sur le forum Webmaster Hub : Un problème de débutant
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > (X)HTML et CSS
Sylmandel
Bonjour a tous,

Voila jusqu'a present, je faisais l'ensemble de mes sites a l'aide de tableaux imbriques. Cet technique n'etant plus du tout a la mode et surtout grace a ce site et d'autres, je me suis rendu compte que gerer toute la disposition du site a partir d'une feuille de style c'est vraiment ..... SUPER

Je suis donc en train de me lancer dans les CSS (que je n'utilisais jusqu'a present que pour les textes et autre liens) et surtout dans les balise DIV. Malheuresuement je rencontre mon premier probleme des mon header :'(

En gros, j'ai une banniere header.jpg qui est centre en haut de la page et de chaque cote j'ai deux images differentes qui sont le prolongement de ma baniere : headerLeft.gif et headerRight.gif. Je voudrais en fait que sous n'importe quelle resolution, mon header prenne toute la largeur disponible. Mon probleme etant qu'actuellement je n'arrive pas a avoir des DIV de taille dynamique sur les cotes.

Voici mon code a l'heure actuelle:

index.html
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>[ Système d'Informatisation du Livret de Formation ]</title>
        <link href="css/style.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div id="page">
            <div id="headerLeft"></div>
            <div id="header"></div>
            <div id="headerRight"></div>
        </div>
    </body>
</html>


style.css
CODE
* {
padding: 0;
margin: 0;
}

body {
background: #000000;
height: 100%;
}

div#page {
height: 100%;
}


div#header {
background: url(../img/header.jpg) no-repeat;
width: 900px;
height: 127px;
margin-left:auto;
margin-right:auto;
float: left;
}

div#headerLeft {
background: url(../img/headerLeft.gif) repeat-x;
width: 300px;
height: 127px;
float: left;
}

div#headerRight {
background: url(../img/headerRight.gif) repeat-x;
width: 300px;
height: 127px;
float: right;
}


Mon probleme vient donc de la propriete width des DIV headerLeft et Right (fixee a 300px pour le moment), enfin je pense, mais je ne sais pas comment faire pour qu'ils prennent la place qui reste de chaque cote de mon DIV header.

Merci d'avance
marcelman
Pourquoi diviser ton header en 3 images au lieu d'en faire une seule ?

Par ailleurs, dans ton CSS, je n'indiquerais pas div#header mais #header. Cela te permettrais d'utiliser d'autres balises dans ta feuille html. Par exemple un conteneur dans lequel tu aurais <p id...> avec les mêmes propriétés que <div id...>.
Chief
Met le floating div's dans le header:

CODE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>[ Système d'Informatisation du Livret de Formation ]</title>
<style type="text/css">

* {
padding: 0;
margin: 0 auto;
}

body {
background: #000000;
height: 100%;
}

div#page {
height: 100%;
}


div#header {
background: red url(../img/header.jpg) no-repeat;
width: 100%;
height: 127px;
float: left;
}

div#headerLeft {
background: blue url(../img/headerLeft.gif) repeat-x;
width: 300px;
height: 127px;
float: left;
}

div#headerRight {
background: white url(../img/headerRight.gif) repeat-x;
width: 300px;
height: 127px;
float: right;
}
</style>
</head>

<body>
<div id="page">
<div id="header">
<div id="headerLeft"></div>
<div id="headerRight"></div>
</div>
</div>
</body>
</html>
Sylmandel
Pourquoi j en ai fais 3 ?

Ben en fait le header.jpg ne fais que 900 et je souhaiterais que l'espace restant de chaque cote soit comble par headerLeft et headerRight qui sont simpelment des bouts d'images qui correspondent avec les bords de mon header.
En fonction de la resolution les deux autres div left et right s'agrandissent ou se rapetissent afin que j'ai toujous mon header au centre et que ca fasse comme si il y avait l image tout le long

Je vais expliquer ce que j'aurais fait avec les tableau et peut etre que quelqu'un comprendra:

CODE
<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td background="img/headerLeft.gif">&nbsp;</td>
        <td width="900" height="127" background="img/header.jpg">&nbsp;</td>
        <td background="img/headerRight.gif">&nbsp;</td>
    </tr>
</table>


Ce bout de code mepermet d'obetenir exactement ce que je veux, mon header au centre et le reste de l'espace occupe par mon header left et mon headerright
Sylmandel
Personne ne voit ou je me suis p-e mal exprime, si c'est la cas dites le moi j'essaierais de mieux vous expliquer le probleme que je n'ai toujours pas resolu d'ailleur
Topper
Est-ce que t'as un lien pour qu'on puisse voir vraiment ce que ça donne et si c'est pas faisable autrement ? smile.gif
Sylmandel
Si biensur, d'ailleurs j'aurais p-e du commencer par ca tongue.gif, ca aurait ete plus simple.

Voila ce que je voudrais et que j ai fais avec les tables (donc le header est bien "vectoriel" lorsque j'agrandi ou diminue la taille de mon browser, l 'image est toujours centree avec le reste de l'espace complete par des headerLeft et headerRight)
http://tgom.free.fr/test/table.html

Voila ce que j'ai (j'ai fixe des tailles dans le CSS masi je ne sais pas comment leur dire de prendre l'espace restant)
http://tgom.free.fr/test/div.html

Voila la css
http://tgom.free.fr/test/css/style.css
Topper
Bon ben c'est plus clair déjà ! smile.gif

T'as juste à changer ça sur ta CSS :

CODE
#header {
    position: absolute;
    top:0;
    left:50%;
    margin-left:-450px;
    width: 900px;
    height: 127px;
    float: left;
    z-index: 1;
    background: url(../img/header.jpg) no-repeat;
}

#headerLeft {
    background: url(../img/headerLeft.gif) repeat-x;
    width: 49%;
    height: 127px;
    float: left;
    
}

#headerRight {
    background: url(../img/headerRight.gif) repeat-x;
    width: 49%;
    height: 127px;
    float: right;
}


En fait, je place de par et d'autre tes DIV headerLeft et headerRight en leur donnant une taille de 49% de la page (car à 50% le second se décale en dessous par manque de place). L'écart qu'il va y avoir entre les deux DIV sera de toutes façons cachés par header qu'on place par dessus avec le z-index. Pour terminer on le centre en lui donnant une position left de 50% à laquelle on soustrait la moitié de sa largeur.

Voila... tu remarquera que c'est même plus propre que ta mise en page en tableaux quand on réduit la page. wink.gif
Sylmandel
Merci beaucou l'ami c est exactement ce que je voulasi smile.gif

Merci bcp smile.gif
Topper
De rien ! smile.gif

Ca a l'air sympa graphiquement ce que tu prépares. N'hésites pas à nous montrer ça quand t'auras avancé. smile.gif

Sinon je viens de me rendre compte que dans les propriétés de #header tu peux supprimer la ligne avec : float: left;
Elle est désormais inutile et j'ai oublié de la supprimer. wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.