Bonjour à toute la communauté Smiley smile

Je suis débutant et j'aimerais avoir des informations sur l'héritage et plus précisément sur les propriétés css qui fonctionnent ou non avec ce principe.

Pour info, j'ai lu l’article suivant : ici

Selon l'article, les propriétés "padding" et "margin" ne fonctionnent pas en héritage. Cela veut donc dire que si par exemple pour la balise html (parent), j'ai un "padding: Ypx", je ne peux pas affecter cette propriété pour la balise body (enfant). Donc, je dois réécrire "padding: Ypx" dans la balise body. C'est bien ça ?

Pouvez-vous me citer les autres propriétés css qui ne fonctionnent pas en héritage svp ?


Dans la feuille de style suivante, suis-je obligé de déclarer 3 fois la balise [i]"height: 25px"[/b] :


#subnavbar {
	PADDING: 0px; MARGIN: 0px auto; WIDTH: 762px; HEIGHT: 25px; LINE-HEIGHT: 24px
}
#subnavbar TR.rowcolor {
	HEIGHT: 25px; BACKGROUND-COLOR: #6B4614; MARGIN: 0px
}
#subnavbar DIV.bgborder {
	HEIGHT: 25px; BACKGROUND: url(../img/border.png) no-repeat left top; MARGIN: 0px
}



Voici le code html :


<DIV id="subnavbar">
 <TABLE>
  <TBODY>
   <TR class="rowcolor">
    <TD width="6">
     <DIV class="bgborder"></DIV>
    </TD>
     <// suite du code //>
   </TR>
  </TBODY>
 </TABLE>
</DIV>


Je précise que je suis en :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">



Merci d'avance de votre aide. J'aurais surement d'autres questions sur l'héritage au fur et à mesure de vos réponses.
Smiley smile
Modifié par misterclass (25 Aug 2015 - 23:48)
Salut misterclass,

"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.

#subnavbar {
    margin: 0 auto;
    width: 762px;
    line-height: 24px;
}
#subnavbar TR.rowcolor {
    background-color: #6B4614;
    margin: 0;
}
#subnavbar DIV.bgborder {
    height: 25px;
    background: url(../img/border.png) no-repeat left top;
}


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

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...)
Modifié par MatthieuR (19 Aug 2015 - 12:21)
Administrateur
Bonjour et bienvenue, Smiley smile

+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;

misterclass a écrit :
Donc, je dois réécrire "padding: Ypx" dans la balise body. C'est bien ça ?
Oui.
Raisonnement par l'absurde (par l'inverse) : si c'était hérité, il faudrait très souvent écrire enfant { padding: 0; } pour annuler ce truc. Ou alors, avec 4 éléments imbriqués on aurait 4 fois la valeur du padding, bonjour la taille du parent...

misterclass a écrit :
Pouvez-vous me citer les autres propriétés css qui ne fonctionnent pas en héritage svp ?
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.
color par contre va être hérité : un div dans un div dans un div, tous ont la couleur de l'ancêtre à moins de préciser autre chose.
body {
  color: #444;
  background-color: white;
}

et voilà tous tes paragraphes (et titres et citations et listes et tableaux) sont en gris foncé sur fond blanc grâce à l'héritage.
Les liens sont par défaut bleus mais ça c'est parce qu'il existe un style par défaut appliqué par tous les navigateurs.

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.

misterclass a écrit :
Dans la feuille de style suivante, suis-je obligé de déclarer 3 fois la balise [i]"height: 25px"[/b] :

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 Smiley cligne

misterclass a écrit :
Je précise que je suis en (HTML 4.01 loose) :

À 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 Smiley cligne (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 Smiley sweatdrop )
Modifié par Felipe (19 Aug 2015 - 12:51)
Administrateur
En bonus : essaie
* {
  padding: 10px;
}

- qui utilise le "sélecteur universel" * pour cibler tous les éléments - sur une page existante et tu vas constater que c'est une bonne idée que padding soit pas une propriété héritée Smiley lol
Idem avec d'autres propriétés, je te laisse essayer Smiley cligne
Modifié par Felipe (19 Aug 2015 - 12:49)
Merci à vous deux pour votre réactivité Smiley smile

Ç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 Smiley sweatdrop

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". Smiley biggol

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. Smiley ravi

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 Smiley cligne (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 Smiley sweatdrop )


Je vais passer aussi en html5 Smiley lol 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 ? Smiley rolleyes 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é Smiley eek

J'attends vos rectifications, si il y en a Smiley cligne
Modifié par misterclass (25 Aug 2015 - 23:47)
salut,
je pense que les réponses que tu as déjà eu sont parfaites pour ce que tu as demandé.
Il faut savoir que c'est plus simple de lister les propriétés (et non les balises) qui se répercutent sur leur descendants que celles qui ne le font pas :
- color
- cursor
- direction
- font
- letter-spacing
- line-height
- list-style
- text-align
- text-indent
- text-justify
- white-space
- word-break
- word-spacing
- word-wrap

"Vertical-align" ne s'hérite pas et "line-height" par contre s'hérite bien.
C'est peut être pas une liste exhaustive mais si tu te dis débutant, ça suffira très très largement.

Il faut savoir que la propriété "height" est par défaut égale à "auto" donc pas besoin de le spécifier.

Pour les unités relatives en CSS telle que le em, il faut en fonction de la propriété, savoir à quoi elle se réfère.
Pour les propriété "font-size", elle se réfèrera à la valeur actuelle de cette propriété qu'elle multipliera pas la valeur spécifiée en "em" :

body {font-size: 18px}
body>p {font-size: 2em} /* font-size actuelle = 18px --> 18*2 = 36 */
body>a {font-size: 1.5em} /* font-size toujours égale à 18px --> 18*1.2 = 27 */
Tout d'abord, merci à tous pour votre participation.

J'ai beau me triturer le cerveau, je n'arrive pas à comprendre et à appliquer les propriétés qui héritent (ça m'irrite... Smiley langue ).

Histoire de m'amuser, j'ai codé un truc tout simple :
<!DOCTYPE html>
<html>
  <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>héritage et propriétés css</title>
      <link rel="stylesheet" href="style.css">
  </head>
 <body>
  <div id="parent">propriétés de parent
   <div id="child">propriétés de enfant
   </div>
  </div>
 </body>
</html>


Et la feuille de style liée :
#parent {
	/*letter-spacing: 2px*/
	/*background-color: #3a3a3a*/
	/*color: #ffffff*/
	/*font-family: arial*/
	/*font-size: 25px*/
	/*font-size: 3em*/
	/*text-align: center*/
	padding-left: 25px;
}

#child {
}


Je teste les propriétés listées par Zelalsan. Tout va bien jusqu'à ce que j'arrive au padding. Là, je constate qu'il s'applique sur le child. Mais, en fin de compte c'est normal puisque les div sont imbriqués. Alors, je me dis "ben, je ne vais pas les imbriquer". Le gros soucis, c'est qu'en les séparant, j'observe que les propriétés que j'avais testé avant le padding ne s'appliquent plus. Je perd la tête... Smiley fou

Comment pourrais-je tester concrètement et simplement l'héritage ?

Autre chose : dans cette article ici, pour le cas de la balise de lien <a>, il est écrit que les propriétés appliquées à la balise parent donc <a> se transmettent aux enfants <a:link>, <a:visited>, etc. et que le code suivant est redondant...


a {
  text-align: center;
  font-size: 1em;
  text-decoration: none;
  color: blue;
  margin: 0 5px;
}
a:hover {
  text-align: center;
  font-size: 1em;
  text-decoration: underline;
  color: red;
  margin: 0 5px;
}



... et qu'on peut le remplacer par celui-ci :
a {
  text-align: center;
  font-size: 1em;
  text-decoration: none;
  color: blue;
  margin: 0 5px;
}
a:hover {
  text-decoration: underline;
  color: red;
}


Je constate que dans le <a:hover>, la propriété margin a été enlevée donc je suppose qu'elle est héritable. Pourquoi vous me dites l'inverse ? Je n'y comprends plus rien Smiley mur

Merci d’éclaircir ces zones d'ombres, parce que là je patauge complètement.
Modifié par misterclass (24 Aug 2015 - 19:40)
Concernant <a> et a:hover, le cas est particulier puisque :hover est une pseudo-classe et n'est pas une balise à part entière et n'est donc pas "enfant" ou "parent" de <a> mais bien un "modificateur" de la balise <a>. Ce sélecteur a donc exactement les mêmes propriétés que l'élément sur lequel il est appliqué, pas d'héritage dans ce cas là !
Tu peux bien évidemment modifier le style d'un :hover (ou d'un :link, :visited, :focus, :active etc... liste des pseudo-classes) mais par défaut, si tu ne précises pas de style pour le :hover d'un élément, il n'y aura pas de modification Smiley smile
Modifié par MatthieuR (24 Aug 2015 - 20:42)
Ah d'accord c'est un cas particulier Smiley ravi

Zelalsan m'a listé une belle liste de propriétés héritables mais j'aimerais pouvoir tester ça concrètement. Comment dois-je mis prendre ?
Parce qu'avec le code que j'ai posté juste avant ton message, ça ne fonctionne pas vraiment (div imbriqués et div séparés)

Aussi, je me permet de revenir sur l'une de tes phrases :
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...)


Pourrais-tu me dire plus précisément ce que tu appelles "structure de page" ? C'est l'habillage du site ?
Merci MatthieuR.
Modifié par misterclass (25 Aug 2015 - 23:57)
Je me permets de remonter ce topic.

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...)


Après lecture de l'article suivant, j'ai bien compris ce que tu voulais dire MatthieuR Smiley smile
J'ai donc décidé d'enlever les tableaux qui ne sont pas appropriés pour la fonction donnée dans mon code html. Voici comment j'ai modifié les choses :

<div id="navbar">
 <div width="90" class="cellalign">
  <a href="intitule1.htm">
   <span class="menu">intitule1</span>
  </a>
 </div>
   <div width="90" class="cellalign">
    <a href="intitule2.htm">
     <span class="menu">intitule2</span>
    </a>
   </div>
     <div width="100" class="cellalign">
      <a href="intitule3.htm">
       <span class="menu">intitule3</span>
      </a>
     </div>
       <div width="93" class="cellalign">
        <a href="intitule4.htm">
         <span class="menu">intitule4</span>
        </a>
       </div>
         <div width="99" class="cellalign">
          <a href="intitule5.htm">
           <span class="menu">intitule5</span>
          </a>
         </div>
</div>


Cependant, je me trouve face à un problème. Dans ce code, chacun des mes "div" provoque un retour ligne. Je voudrais retrouver la structure que j'avais avec mon tableau. C'est à dire que les intitulés de mon menu principal soit sur une même ligne et espacé de x largeur.
Que dois-je faire pour ça ?
Merci.

Edit: avec la propriété "display: inline-block", j'ai réussi à tout mettre sur une même rangée sauf que ça annule la taille de mes "div" et les intitulés de mon menu principal se retrouvent collés (en fin de compte logique puisque j'ai transformé les "div" en "span" en quelque sorte). Donc ma question ci-dessus tient toujours.
Modifié par misterclass (03 Sep 2015 - 19:56)
Ok, c'est une bonne chose que tu utilises des <div> pour structurer tes éléments de ta page.
Tu peux lire cet article pour comprendre le comportement des différents éléments.
Globalement une page se compose d'une structure générale et ensuite les différents blocs sont composés d'autres éléments plus précis :
<!DOCTYPE html>
<html>
<head>
  <meta charset='utf-8'>
  <title>Titre de la page</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <header>
    <!--la partie en haut de ta page-->
  </header>
  <nav>
    <!--ta navigation principale-->
  </nav>
  <main>
    <!--ton contenu principal-->
  </main>
  <footer>
    <!--ton pied de page-->
  </footer>
</body>
</html>

Toutes les balises <header>, <nav>, <main> et <footer> sont des balises de type 'block', on aurait pu avoir ça à la place :
<div id="nav">
  <!--ta navigation principale-->
</div>

Plus particulièrement ton menu de navigation pourrait ressembler à ça :
  <nav>
    <div style="width:90px">
      <a href="intitule1.htm">intitule1</a>
    </div>
    <div style="width:90px">
      <a href="intitule2.htm">intitule2</a>
    </div>
    <div style="width:100px">
      <a href="intitule3.htm">intitule3</a>
    </div>
    <div style="width:93px">
      <a href="intitule4.htm">intitule4</a>
    </div>
    <div style="width:99px">
      <a href="intitule5.htm">intitule5</a>
    </div>
  </nav>

et ton CSS
nav{
  font-size: 0; /*supprimer les espaces entre les blocs inline-block*/
}

nav div{
  background-color: grey;
  display: inline-block;
  font-size: 16px;
  text-align: center;
}
nav a{
  text-decoration: none;
  color: white;
  line-height: 30px;
}
nav a:hover{
  color: black;
}

Mais on ne respecte pas encore la sémantique d'un menu qui est en fait une liste d'éléments et donc devrait être comme ça :
  <nav>
    <ul>
      <li><a href="intitule1.htm">intitule1</a></li>
      <li><a href="intitule2.htm">intitule2</a></li>
      <li><a href="intitule3.htm">intitule3</a></li>
      <li><a href="intitule4.htm">intitule4</a></li>
      <li><a href="intitule5.htm">intitule5</a></li>
    </ul>
  </nav>

et le css :
nav ul{
  font-size: 0;
  list-style: none;
  margin: 0;
  padding: 0;
}
nav ul li{
  font-size: 16px;
  display: inline-block;
}
nav ul li a{
  display: block; /*on peut changer le type d'affichage d'un élément inline en block */
  line-height: 30px;
  padding: 0 20px;
  color: white;
  background-color: grey;
  text-decoration: none;
}
nav ul li a:hover{
  background-color: firebrick;
}

L'exemple ci-dessus ici : http://codepen.io/korell/pen/jbEBoE
Modifié par MatthieuR (03 Sep 2015 - 21:50)
Je te remercie pour ton aide précieuse. C'est très sympa de ta part de transmettre tes connaissances MatthieuR Smiley smile

Cependant, j'ai de nouvelles interrogations Smiley sweatdrop

J'ai pu constater par la lecture que les balises <header>, <nav> et <footer> ne sont supporter que par la version 9 concernant Internet Explorer (ouh le vilain petit canard Smiley lol ) et que la balise <main> n'était même pas pris en compte par IE (quelque soit la version).

Que se passe-t-il dans ce cas ? IE (< 9) arrive t-il à interpréter ça ?

Et comment faire dans ce cas pour qu'il n'y ai pas de problème d’affichage sous IE ? En passant par du script ? Mais si la/les personnes l'ont désactivé ? Que faire ?

J'ai peur que tout ça rebute les internautes. Ou alors, la solution serait peut-être de faire une version à part pour IE... WTF Smiley eek
Modifié par misterclass (04 Sep 2015 - 02:01)
En effet, ce cher IE n'implémente pas les nouvelles balises HTML5.
Deux solutions :
1. tu n'utilises pas ces balises : <main> devient <div id="main"> et ton css migre de 'main{}' à '#main{}'
2. tu utilises un fichier CSS nommé 'normalize.css' que tu appelles avant tout autre CSS. Ce fichier est un ensemble de propriétés CSS qui indique aux navigateurs non respectueux comment se comporter par défaut.

Cette 2è solution est la bonne selon moi et oui on se prive du support IE8 mais tu peux sans problème le laisser tomber et afficher un message à tes visiteurs dans lequel tu leur conseilles de mettre à jour leur navigateur ou d'en utiliser un plus respectueux des standards du web.
MatthieuR a écrit :
En effet, ce cher IE n'implémente pas les nouvelles balises HTML5.
Deux solutions :
1. tu n'utilises pas ces balises : &lt;main&gt; devient &lt;div id="main"&gt; et ton css migre de 'main{}' à '#main{}'
2. tu utilises un fichier CSS nommé 'normalize.css' que tu appelles avant tout autre CSS. Ce fichier est un ensemble de propriétés CSS qui indique aux navigateurs non respectueux comment se comporter par défaut.

Cette 2è solution est la bonne selon moi


La deuxième solution est très astucieuse Smiley smile Je vais l'adopter Smiley cligne

MatthieuR a écrit :
oui on se prive du support IE8 mais tu peux sans problème le laisser tomber et afficher un message à tes visiteurs dans lequel tu leur conseilles de mettre à jour leur navigateur ou d'en utiliser un plus respectueux des standards du web.


Ah ok! Carrément se priver des versions antérieur à IE 9 Smiley biggrin
Personnellement, je n'aime pas trop imposer à l'utilisateur ce type de message, ça fait genre "si tu veux consulter mon site web, mets à jour ton navigateur" Smiley rolleyes . Le newbie va pas chercher à comprendre et se tirer direct... Smiley biggol

Mais en adoptant, la 2ème astuce, je n'ai pas besoin de me priver de IE < 9. J'ai pas tout compris là... ?