Merci à vous deux pour votre réactivité
Ça m'a l'air un peu compliqué tout ça... mais je suis débutant donc cela s'explique un peu.
MatthieuR a écrit :
"height" est également une propriété qui ne crée pas d'héritage cependant tu n'es pas obligé de spécifier de "height" aux parents de l'élément visé.
Dans ton code, tu pourrais n'avoir la propriété "height" que sur "#subnavbar DIV.bgborder". Ce bloc forcera la hauteur de ces parents.
Felipe a écrit :
Comme dit par MatthieuR, les parents vont faire la taille du plus haut des enfants (en simplifiant) donc il suffit d'indiquer la hauteur pour 1 seul élément. Ou mieux de ne jamais jamais indiquer de hauteur comme ça on peut avoir un texte qui passe sur 2 lignes (zoom texte ou traduction sur une autre page ou autre bloc similaire ailleurs) et ne rien avoir à faire. Un texte sur fond coloré doit être plus haut ? Il y a padding pour ça (et line-height pour l'interlignage). Et au pire min-height qui va fixer un minimum mais pas de maximum. height c'est moche, ça fige dans le marbre alors que le web c'est pas un PDF sur une page A4 mais un truc très très changeant.
La hauteur de 25px correspond à la hauteur du sous-menu (subnavbar) qui est sur une seule rangée/ligne (tout comme le menu principal). Ne pas fixer cette hauteur... ou sinon, que pensez-vous de mettre
"height: auto" dans
"#subnavbar DIV.bgborder" à la place ? Ça permet à la hauteur de ne pas être figée et de s'adapter en cas de besoin, non ?
Edit: j'ai un gros soucis, quand je n'indique pas de hauteur dans le
"#subnavbar DIV.bgborder" j'ai les bordures gauche et droite qui ne s’affiche pas, à la place c'est la couleur de fond de la cellule qui domine (
"#subnavbar tr.rowcolor").
Pour rappel :
#subnavbar {
padding: 0; margin: 0 auto; width: 762px; /*height: 25px;*/ line-height: 24px
}
#subnavbar tr.rowcolor {
background-color: #aba358; /*height: 25px;*/ margin: 0
}
#subnavbar div.bgborder {
background: url(../img/border.png) no-repeat left top; /*height: 25px;*/ margin: 0
}
Felipe a écrit :
Toutes celles où ça parait "idiot" (contre-intuitif) qu'il y ait héritage.
line-height par exemple, tu veux pas 200% de 200% de 200% de la valeur de l'ancêtre.
border : un div ancêtre a une bordure, on veut pas une nouvelle bordure pour chacun de ses enfants et descendants.
La taille de texte c'est plus compliqué : avec "font-size: 13px", tous les descendants vont faire 13px mais avec "font-size: 1.2em" (ou 120% c'est pareil), le petit-enfant ne fait pas "taille de l'ancêtre ayant l'instruction x 1.2 x 1.2" mais "la même valeur que l'ancêtre". Il hérite de la valeur calculée (13px ou qqch x 1.2) et pas de l'instruction elle-même.
Pour un débutant, ce n'est pas si évident que cela
En résumé, les balises
"padding", "margin", "border", "line-height", "height" n'héritent pas... et surement d'autres :
"bakground" (?), "background-color" (?), "width" (?), "float" (?)...
Tout ce qui touche à la décoration comme "color", "text-decoration", "font-family", "font-weight", "text-transform", "text-align", "vertical-align", "letter-spacing"... héritent.
Par contre, tu m’excusera mais je n'ai rien compris à ton explication concernant le
"font-size" avec l'unité
"em".
MatthieuR a écrit :
Note : je préfère écrire les balises en minuscules, par défaut une "div" a un "padding" et un "margin" à 0, pas besoin d'unités si tu écris 0.
Felipe a écrit :
+1 pour l'écriture des propriétés CSS en minuscule et j'ajoute que rajouter une unité derrière la valeur 0 est inutile. Mieux vaut prendre l'habitude d'être plus lisible en écrivant margin: 0; et pas margin: 0px;
Pour les balises et les propriétés css en majuscules, j'ai lu cette article :
ici
Il est mentionné (pour le HTML4.01 transitional) qu'on peut les mettre en majuscule ou minuscule. Personnellement, je trouve qu'en majuscule, c'est plus compréhensible quand on lit le code. Mais, vous me dites l'inverse... après c'est peut-être une question de goût. Je vais tout passer en minuscule avec notepad++ ça va me prendre 2 secondes et j'ai déjà enlevé l'unité quand c’est inutile.
Felipe a écrit :
À moins d'une contre-indication, utilise plutôt HTML5, qui est une RECommandation du W3C depuis approx. 1 an. C'est pas l'avenir du web, c'est le présent (et gaffe aux ressources qui parlerait encore d'HTML4.01, c'est vieux avec gros risque d'être dépassé. Si en plus les propriétés CSS sont en majuscules, ça date de 1 ou 2 décennies )
Je vais passer aussi en html5
Je suppose que dans ce langage, l'adage du "qui peut le plus, peut le moins" s'applique et que donc les règles de l'html5 incorporent celles du html4.01 ?
Pour les ressources, je prend les infos sur alsacreations et aussi sur ce site :
ici
MatthieuR a écrit :
Par ailleurs, si tu mets une "div" dans un tableau c'est que tu te sers de ce tableau comme structure de ta page et je ne suis pas sûr que ce soit la meilleure option car pas très souple au niveau des positionnements (bien que sur certains centrages verticaux ça soit parfois pratique...)
Qu'entends-tu par structure ?
L'habillage du site ?
Le code complet du sous-menu :
<div id="navbar"> // menu sur une rangée/ligne
// code du menu
</div> // fin du code du menu
<div id="subnavbar"> // sous-menu sur une rangée/ligne
<table> // tableau
<tbody>
<tr class="rowcolor"> // couleur de fond du sous-menu
<td width="6">
<div class="bgborder"></div> // bordure sous forme d'image (gauche)
</td>
<td width="110">
<div class="cellalign"> // texte centré horizontalement dans la cellule 1 du tableau
<a href="intitule1.html">
<span class="menu">intitulé1</span>
</a>
</div>
</td>
<td width="108">
<div class="cellalign"> // texte centré horizontalement dans la cellule 2 du tableau
<a href="intitule2.html">
<span class="menu">intitulé2</span>
</a>
</div>
</td>
<td width="154">
<div class="cellalign"> // texte centré horizontalement dans la cellule 3 du tableau
<a href="intitule3.html">
<span class="menu">intitulé3</span>
</a>
</div>
</td>
<td width="116">
<div class="cellalign"> // texte centré horizontalement dans la cellule 4 du tableau
<a href="intitule4.html">
<span class="menu">intitulé4</span>
</a>
</div>
</td>
<td width="149">
<div class="cellalign"> // texte centré horizontalement dans la cellule 5 du tableau
<a href="intitule5.html">
<span class="menu">intitulé5</span>
</a>
</div>
</td>
<td width="113">
<div class="cellalign"> // texte centré horizontalement dans la cellule 6 du tableau
<a href="intitule6.html">
<span class="menu">intitulé6</span>
</a>
</div>
</td>
<td width="6">
<div class="bgborder"></div> // bordure sous forme d'image (droit)
</td>
</tr>
</tbody>
</table>
</div> // fin du code du sous-menu
Je dois enlever le tableau et mettre que des div alors ?
ouh la la... désolé pour le pavé
J'attends vos rectifications, si il y en a
Modifié par misterclass (25 Aug 2015 - 23:47)