<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML><HEAD><TITLE>Avec IE en mode Standard, sans javascript</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<STYLE type=text/css>
BODY {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #b9dee1; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
HTML {
OVERFLOW: hidden
}
#head {
BACKGROUND: #FFEFC5; HEIGHT: 50px;PADDING-TOP: 5px;
OVERFLOW: auto
}
#content {
PADDING-RIGHT: 10px; PADDING-LEFT: 10px; RIGHT: 0px; BACKGROUND: #b9dee1; LEFT: 0px; PADDING-BOTTOM: 10px; OVERFLOW: auto; BOTTOM: 0px; PADDING-TOP: 10px; POSITION: absolute; TOP: 55px
}

.decal1 {
padding-left: 30px;
}
.decal2 {
padding-left: 30px;
}

.rouge {color: #FF0000}

.centered { text-align: center;
}
</STYLE>
<!--[if lt IE 7]>
<STYLE type=text/css>HTML {
PADDING-TOP: 55px
}
BODY {
OVERFLOW: auto; HEIGHT: 100%
}
#head {
WIDTH: 100%; POSITION: absolute; TOP: 0px;
}
#content {
POSITION: static
}
</STYLE>
<![endif]--><!--[if lt IE 6]>
<style type="text/css">
body {
overflow: hidden;
padding-top: 55px;
}
#content {
height: 100%;
}
</style>
<![endif]-->
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
</HEAD>
<BODY>
<DIV id=head>
<h3 align="center" style="padding-top: 0px;font-size: small;"><a href="http://www.rankspirit.com/indexfr.php"><img src="paporange.gif" alt="rankspirit" width="20" height="18" border="0" /></a><a href="http://www.rankspirit.com/indexfr.php">Visiter le site RankSpirit</a> &#8226; <a href="#lorem">Aller au d&eacute;but du texte</a> &#8226; <a href="#lorem"></a><a href="alan3_sans_javascript_code.htm">Voir le code source</a></h3>
</DIV>
<DIV id=content>
<h2 align="center"><a name="lorem" id="lorem"></a>Comment utiliser les CSS pour obtenir une mise en page avec un menu fixe<br />
sur tous les navigateurs </h2>
<h4 align="center">Solution sans utilisation de Javascript </h4>
<p>Faire en sorte de conserver un menu fixe, m&ecirc;me lorsque l'internaute fait d&eacute;filer le texte de la page, est le r&ecirc;ve de beaucoup de concepteurs de site. Cette disposition facilite grandement la navigation en proposant &agrave; l'internaute un rep&egrave;re fixe et toujours pr&eacute;sent.</p>
<p>Nous proposons une premi&egrave;re solution tr&eacute;s g&eacute;n&eacute;rale &agrave; ce probl&egrave;me sur la page <a href="alan2_zapman2.htm">alan2_zapman2.htm</a> que nous vous conseillons de consulter pour comprendre les principes g&eacute;n&eacute;raux &agrave; mettre en oeuvre.</p>
<p>Voici la description d'une variante de ce principe, mise au point par Alan, du forum <a href="http://forum.alsacreations.com/forum.php" target="_blank">Alsacr&eacute;ation.</a></p>
<p>&nbsp;</p>
<h3>Solution avec superposition de blocs, sans utilisation de Javascript</h3>
<p>Le syst&egrave;me de positionnement des blocs &agrave; l'aide du CSS permet, si on le souhaite, de les superposer les uns aux autres. Cela pr&eacute;sente rarement un int&eacute;r&ecirc;t, mais dans certains particuliers, on peut utiliser cette possibilit&eacute; pour obtenir un menu fixe, compatible avec Internet Explorer 6.x, sans recourir au Javascript.</p>
<p>Ce type de mise en page est cependant assez d&eacute;licat et demande une bonne compr&eacute;hension des m&eacute;canismes en jeu pour parvenir au r&eacute;sultat souhait&eacute;. Qui plus est, la solution tr&egrave;s &quot;sp&eacute;ciale&quot; utilis&eacute;e ici pour contourner les limitations d'Internet Explorer limite les possibilit&eacute;s de mise en page (voir en fin de paragraphe). </p>
<p>La page que vous &ecirc;tes en train de lire met cette solution en oeuvre. Voici comment nous avons proc&eacute;d&eacute; : </p>
<p><strong>- Feuille de style standard : </strong></p>
<p>a) le bloc fixe qui contiendra le menu est cr&eacute;&eacute; &agrave; l'int&eacute;rieur de &lt;body&gt; avec une hauteur fixe et une largeur de 100%. Son positionnement est d&eacute;fini comme &quot;<span class="rouge">absolute</span>&quot; avec <span class="rouge">top: 0px</span>. </p>
<p>b) le bloc qui contiendra le texte de la page est cr&eacute;&eacute; &agrave; l'int&eacute;rieur de &lt;body&gt;. Son positionnement est d&eacute;fini comme &quot; <span class="rouge">absolute</span> &quot; avec <span class="rouge">bottom: 0px;</span> et <span class="rouge">top: xxpx</span> ou xx correspond &agrave; la hauteur du menu. </p>
<p>c) on d&eacute;sactive l'ascenseur du bloc &lt;html&gt; et on active l'ascenseur du bloc texte. </p>
<p>Dans cette configuration, les deux blocs sont positionn&eacute;s c&ocirc;te &agrave; c&ocirc;te et les principes de positionnement sont exactement les m&ecirc;mes que pour la solution g&eacute;n&eacute;rale d&eacute;crite sur notre page <a href="alan2_zapman2.htm">alan2_zapman2.htm</a>.</p>
<p>&nbsp; </p>
<p><strong>- Feuille de style destin&eacute;e &agrave; Internet Explorer </strong></p>
<p>a) le bloc fixe qui contiendra le menu est cr&eacute;&eacute; &agrave; l'int&eacute;rieur de &lt;body&gt; avec une hauteur fixe et une largeur de 100%. Son positionnement est d&eacute;fini comme &quot;<span class="rouge">absolute</span>&quot; avec top: 0px. </p>
<p>b) le bloc qui contiendra le texte de la page est cr&eacute;&eacute; &agrave; l'int&eacute;rieur de &lt;body&gt; avec un positionnement d&eacute;fini comme &quot;<span class="rouge">static</span>&quot;. Ce bloc va donc occuper le bloc &lt;body&gt; &agrave; 100%, en hauteur et en largeur. </p>
<p>c) l'ascenseur du bloc &lt;body&gt; est d&eacute;fini comme <span class="rouge">overflow: auto;</span> c'est donc cet ascenseur qui permettra de faire d&eacute;filer le contenu du bloc texte (un bloc positionn&eacute; en &quot;<span class="rouge">static</span>&quot; ne peut pas avoir d'ascenseur). </p>
<p>Dans cette feuille de style, on a une superposition du bloc texte qui occupe la totalit&eacute; de l'espace &lt;html&gt; et du bloc menu qui est positionn&eacute; au sommet de &lt;html&gt; et qui le recouvre. Le haut du bloc texte est donc masqu&eacute; par le bloc menu. </p>
<p>Deux solutions peuvent &ecirc;tre envisag&eacute;e pour &quot;d&eacute;gager&quot; la partie sup&eacute;rieure du bloc texte : </p>
<p>a) la solution la plus &eacute;vidente consiste &agrave; lui attribuer un &quot;<span class="rouge">padding-top</span>&quot; (marge int&eacute;rieure haute) &eacute;gal &agrave; la hauteur du menu. Cette solution comporte cependant un pi&egrave;ge plut&ocirc;t ennuyeux qui se manifeste uniquement si vous utilisez les &quot;ancres&quot; du type <span class="rouge">&lt;a name=&quot;nom_de_l_ancre&quot;&gt;</span> : en cas de clic sur un lien vers cette ancre ( <span class="rouge">&lt;a href= &quot;#nom_de_l_ancre&quot;&gt;</span> ), Internet Explorer va d&eacute;placer l'ascenseur de fa&ccedil;on &agrave; positionner l'ancre en haut de page, c'est &agrave; dire sous le menu. L'ancre ne sera pas visible ! Cette solution n'est donc pas la bonne. &gt;&gt;&gt; <a href="sans_javascript_pas_bon.htm">Tester cette solution</a>. </p>
<p>b) la deuxi&egrave;me solution consiste &agrave; attribuer un &quot;padding-top&quot; au bloc &lt;html&gt; plut&ocirc;t qu'au bloc texte. Du coup, comme on peut le constater avec notre exemple, l'ascenseur vertical du bloc texte est restreint &agrave; sa hauteur exploitable et les ancres redeviennent utilisables. C'est cette solution qui a &eacute;t&eacute; utilis&eacute;e pour la page que vous &ecirc;tes en train de lire. </p>
<p>&nbsp; </p>
<p><strong>Les limites de cette solution </strong> : </p>
<p>a) Avec Internet Explorer 6.0 et 5.5, lorsque l'on tente de r&eacute;duire la largeur de la fen&ecirc;tre au del&agrave; d'une certaine valeur, l'ascenseur vertical finit par dispara&icirc;tre. Cet inconv&eacute;nient devient tr&eacute;s g&ecirc;nant si votre bloc principal contient des images de largeurs importantes car l'ascenseur dispara&icirc;t d&eacute;s que la taille de la fen&ecirc;tre est inf&eacute;rieure &agrave; la taille de ces images. Vous pouvez faire un essai avec la pr&eacute;sente page. </p>
<p align="center"><img src="pb_asc.jpg" alt="Problème avec les images" width="250" height="268"> </p>
<p>b) L'ascenseur vertical est positionn&eacute; &agrave; droite. Cela ne conviendra pas si vous souhaitez r&eacute;aliser une mise en page en 3 colonnes avec le texte principal en colonne centrale. </p>
<p>b) Si l'on souhaite r&eacute;aliser un d&eacute;cors fixe (en fond de page) pour l'habillage du site, on se retrouve assez limit&eacute; par la configuration d'Internet Explorer : on ne peut loger qu'une image fixe dans le background du bloc &lt;body&gt; ou &lt;html&gt;. Impossible de positionner une autre image sous le bloc principal. </p>
<p>c) Les limites de la solution &quot;<a href="alan2_zapman2.htm">alan2_zapman2.htm</a>&quot; s'appliquent &eacute;galement &agrave; celle-ci, except&eacute; pour les points cit&eacute;s ci-dessous : </p>
<p>&nbsp; </p>
<p><strong>Les avantages de cette solution </strong> : </p>
<p>a) Les utilisateurs &eacute;quip&eacute;s de Internet Explorer 5.5 et 6.x ayant d&eacute;sactiv&eacute; le Javascript pourront naviguer exactement comme les autres et continuent &agrave; b&eacute;n&eacute;ficier des menus fixes. </p>
<p>b) La navigation (d&eacute;placement de l'ascenseur vertical) par clavier et souris est parfaitement op&eacute;rationnelle sous Explorer 5.5 et 6.x. </p>
<p><span class="centered"><a href="http://validator.w3.org/check?uri=referer"><img
src="valid-html401.gif"
alt="Valid HTML 4.01 Transitional" width="90" height="17" border="0" /></a></span></p>
<p>&nbsp; </p>
</DIV></BODY></HTML>