CSS compatible Firefox ET IE

  • Auteur de la discussion dartyduck
  • Date de début

dartyduck

Grand Meuble Suprême
Bonjour,

J'utilise le CSS.
J'ai développé mon site pour Firefox mais il ne se comporte pas de la même façon sous IE. Que dois-je faire pour que ce soit le cas?
Ex: le menu ne devrait pas bouger sous IE ni FF:
Autre question: une fois que tout ira bien sous IE, comment détecter la résolution de l'écran du visiteur pour que mon site s'y adapte?
Ex: faire que le cadre de mon menu fasse toute la hauteur de l'écran, ni plus, ni moins, en fonction de la résolution du visiteur.
Mon site témoin:

Merci beaucoup de votre aide.
 

dartyduck

Grand Meuble Suprême
ah wai, c'est pas mal ca! merci. et pour fixer le menu sous IE??
 

dartyduck

Grand Meuble Suprême
Aussi: Sous FF: quand tu passes sur les liens du menu, tu remarques rien? le lien s'active uniquement qd tu passes sur les 2 premieres lettres. Pourquoi?
 

marsien

Grand Maître
Peux mettre ici le code html et css de ton menu ? Et uniquement le menu, hein :)
 

dartyduck

Grand Meuble Suprême
Code de mon menu:
HTML:

<div id="menu">
<ul id="menu">
<li><a href="videos/index.htm">Vidéos</a></li><br><br>
<li><a href="pubs/index.htm">Pubs</a></li><br><br>
<li><a href="trash/index.htm">Trash</a></li><br><br>
<li><a href="jeux/index.htm">Jeux</a></li><br><br>
<li><a href="audio/index.htm">Audio</a></li><br><br>
<li><a href="http://dirtyduck.free.fr/index.htm">Photos</a></li><br><br>
<li><a href="http://jeanmarion.free.fr">Voyage au Sri Lanka</a></li><br><br>
<li><a href="annonce_clio/index.htm">Voiture à vendre</a></li><br><br>
<li><a href="http://www.toprenault.com">Top Renault</a></li><br><br>
<li><a href="mailto:dartyduck@hotmail.com">Contact</a></li>
</ul>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="http://perso0.free.fr/cgi-bin/wwwcount.cgi?df=[duckyduck].dat&dd=caligra">

</div>

CSS: (tout le menu, liens avec)

div#menu {
background: #FFFACD;
position: fixed;
float: left;
width: 12em;
height: 100%;
padding: 0;
margin: 0;
border-right: 1px solid blue;
}

ul#menu{
padding-top: 3em;
}

ul#menu, li {
list-style-type: none;
margin: -10px;
padding-left: 1em;
}

#menu a, a:visited {
color: #333333;
text-decoration: none;
font-weight: normal;
}

#menu a:hover {
background: #00FFFF;
}

voilà
 

candygirl@idn

Habitué
Hello,

Déjà je supprimerais tous les br dans la liste pour passer par un règlage css des écarts. En ce sens ton
[fixed]margin: -10px;[/fixed]
me semble étrange...
Idem avec les espacements à l'aide de paragraphe, autant donner une marge importante au bas de ton ul par exemple.

Et la cause de ton problème ne se trouve pas dans le code que tu as posté mais dans cette partie:

[fixed]div#text {
float: left;
text-align: left;
position: absolute;
padding-top: 1em;
padding-left: 15em;
left: 2em;
}[/fixed]

ça n'a pas de sens de le déclarer en float puis en absolute. L'absolute fait placer ton calque par-dessus ton menu, à 2em du bord. C'est ces 2em qui te permettent d'avoir quand même une zone cliquable sur 2 lettres, le reste étant recouvert par le div texte.
 

marsien

Grand Maître
P'tain, depuis le temps, c'est quand même pas le bout du monde d'utiliser ce bouton
Vous devez être connecté pour voir les images.
pour tout ce qui est code :/

Bref, voilà ton code focntionnel

html
[cpp]<div id="menu">
<ul>
<li><a href="videos/index.htm">Vidéos</a></li>
<li><a href="pubs/index.htm">Pubs</a></li>
<li><a href="trash/index.htm">Trash</a></li>
<li><a href="jeux/index.htm">Jeux</a></li>
<li><a href="audio/index.htm">Audio</a></li>
<li><a href="http://dirtyduck.free.fr/index.htm">Photos</a></li>
<li><a href="http://jeanmarion.free.fr">Voyage au Sri Lanka</a></li>
<li><a href="annonce_clio/index.htm">Voiture à vendre</a></li>
<li><a href="http://www.toprenault.com">Top Renault</a></li>
<li><a href="mailto:dartyduck@hotmail.com">Contact</a></li>
</ul>

<img src="http://perso0.free.fr/cgi-bin/wwwcount.cgi?df=[duckyduck].dat&dd=caligra" id="compteur" />[/cpp]

css
[cpp]#menu {
background: #FFFACD;
float: left;
width: 12em;
border-right: 1px solid blue;
padding-top: 2em;
height: 100%;
}

#menu ul {
margin: 0;
padding: 0;
list-style-type: none;
}

#menu li {
height: 2em;
}

#menu a {
color: #333333;
text-decoration: none;
font-weight: normal;
display: block;
width: 12em;
text-indent: 1em;
}

#menu a:hover {
background: #00FFFF;
}[/cpp]

Petite remarque : les <br> s'écrive <br />, le slash final étant vaable pour toute balise sans fermeture (par ex : <img />, <input />, etc). De plus les <br /> sont souvent avantageusement remplacés par des margin et/ou padding en css...
 

dartyduck

Grand Meuble Suprême
Ok, c'est cool ce script, ca rend plutot bien. Sauf que mon menu n'est pas fixe sous IE.
Quelques petites précisions sur les fonction qui me sont inconnues:
-> "text-indent: 1em;" ca applique quel effet?
-> "display: block;" ca applique quel effet également?

Une derniere question: comment le surlignage des liens lors du hover est passé de largeur de mot à largeur de cadre?

Merci de votre aide en tout cas.
 

marsien

Grand Maître
text-indent : applique un retrait à la première ligne d'un paragraphe.

display: block : transforme une instruction inline en une instruction block (conteneur), d'où l'affichage du surlignage sur tout le block qu'est devenu le "a".

C'est quoi le problème avec IE ? tu as une page où on peut voir ce qui se passe ?
 

Johan_et_Pirlouit

Grand Maître
[j'arrive un peu après la "bataille" :D]


Pour le XHTML désormais utilisé et recommandé, oui..

Mais pour tous ceux qui programment encore en HTML 4.01 voire plus ancien, non : le slash de fermeture sur les balises simples est une erreur.. Surtout si l'en-tête ne comporte pas de déclaration de DOCTYPE, comme c'est le cas ici ! Dans ce cas, en l'absence de DOCTYPE valide, tout le code est interprété comme du vieux HTML, et surtout au gré des navigateurs : ça s'appelle le mode Quirks, par opposition au mode Standard..


dartyduck >> Pour éviter que le code ne soit interprété trop en fonction de chaque navigateur, il faut une déclaration de DOCTYPE en tête de code.. Le plus simple est le XHTML 1.0 Strict en mode de compatibilité HTML, donc sans prologue XML qui fera bugguer IE..

Exemple d'en-tête 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" xml:lang="fr" lang="fr">

<head>
	<title>Titre du site</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
Description : d'abord le DOCTYPE, la balise HTML correspondante, puis dans l'en-tête <head> la balise <meta> "http-equiv" avec le paramètre 'text/html' en type de contenu pour assurer le mode de compatibilité HTML et ne pas recourir au prologue XML pourtant recommandé par l'XHTML..

Mais cette "compatibilité HTML" indique seulement que le contenu soit être exécuté par le navigateur comme du code HTML et pas comme une application XML.. Elle ne signifie pas que le code est de l'ancienne génération HTML, il reste du XHTML et doit conserver la syntaxe XHTML, avec les slashes de fermeture des balises simples..

Avec sa version 6, IE a corrigé nombre de ses bugs d'affichages, notamment concernant la disposition des blocs avec leurs marges extérieures et leurs décalages intérieurs.. C'est le mode de rendu W3C qui a supplanté le mode Microsoft (décrit dans un tuto d'OpenWeb).. Si tu ne précises pas de DOCTYPE, IE va disposer les blocs selon les règles Microsoft et le site ne sera pas rendu de la même manière qu'avec FF..

Le jeu de caractères que j'indique est, parmi les jeux régionnaux, le seul actuellement valable pour l'Europe Occidentale : iso-8859-15 (appelé Latin9).. Il inclue notamment l'uro et les œ et Œ précédemment oubliés dans l'ancien iso-8859-1 (Latin1)..

Un autre jeu de caractères est de plus en plus en concurrence avec les jeux régionnaux : c'est le jeu Unicode utf-8.. Mais il impose que toutes les lettres accentuées et caractères spéciaux soient convertis dans le code de la page Web par leurs codes HTML respectifs.. Sinon, la lettre sera remplacée par le navigateur par un caractères incompréhensible, un carré, un point d'interrogation, un symbole asiatique ou autre, selon le navigateur.. La plupart des logiciels de création Web proposent une fonctionnalité de conversion automatique de tous les caractères spéciaux et lettres accentuées vers leurs entités HTML correspondantes..

Les liens vers des tutos XHTML / CSS sont dans le topic pinné en tête de liste : Site du zér0, AlsaCréations, OpenWeb, spécifications CSS du W3C, .....

:merci:
 

dartyduck

Grand Meuble Suprême
Pour marsien:
la page que j'utilise pour me faire la main est:
Sur cette page j'ai fait les modifs d'entete de page html comme précisé par Johan_et_Pirlouit et ca me modifie mon cadre menu. En allant sur les autres pages, tu verras que c'est un peu différent.
Ensuite, tu remarqueras que, en fonction du navigateur, quand tu descends dans la page, le menu reste fixe ou pas. Moi je veux qu'il reste fixe.
 

Johan_et_Pirlouit

Grand Maître
En même temps, ton code n'est plus du tout valide ! Tu laisse tout plein de balises ouvertes.. Toutes les balises simples doivent être fermées par un slash en XHTML, y compris les <meta>.. La règle XHTML est plus claire que l'ancienne HTML : lorsqu'on ouvre une balise, on la referme.. De plus, aucune balises ne peuvent se trouver enchevêtrées les unes sur les autres, elles ne peuvent qu'être emboîtées à la manière des poupées russes, d'où l'usage efficace des tabulations dans le code pour s'y retrouver..

Le slash de fermeture des balises simples est toujours précédé d'un espace : <br />, <hr />, etc....

De plus, des attributs comme "align" comme tu utilises dans tes <p> ne font plus partie du vocabulaire XHTML.. Rempacés par la règle CSS p { text-align: left; }

Toi qui n'entres pas encore dans les subtilités de l'XHTML / CSS (vois le Site du zér0 pour ça, très bien fait !), utilise plutôt cette en-tête HTML :
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">

<head>
	<title>Titre du site</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
</head>
C'est du HTML 4.01, mais c'est un DOCTYPE valide et qui t'autorisera à continuer d'utiliser du vieux code HTML "à la grand-père".. En attendant mieux, si tu souhaites te plonger dedans ;)..


Les paragraphes d'une seule phrase de quelques mots chacun ne sont pas des paragraphes.. Inutile, donc, de polluer le code avec des <p> inutiles.. Surtout que ta page "Vidéos" présente en réalité une liste de vidéos.. Pourquoi tu n'utilises pas l'instrument prévu à cet effet : la liste..... <ul> et <li>, dont tu peux spécifier que cette liste là n'affichera pas les puces par la même règle CSS que pour ton menu.. Toujours par la CSS, tu préciseras une marge verticale entre chaque entrée de liste.. Dans ton cas, il s'agit d'une ligne : #text li { margin-top: 1em; }

Les balises <b> et <i> ne sont plus d'actualité, remplacées respectivement par <strong> et <em>..

<p>&nbsp;</p> pour faire des sauts de lignes et ainsi décaler le contenu qui suit plus bas dans le bloc est devenu au fil du temps et des évolutions technologiques une idiotie : la règle CSS 'margin-top' fait ça très bien..

position: fixed; -> 'fixed' n'est pas une règle CSS connue par IE.. Il faut bidouiller par le JS pour que IE donne cet effet de position fixe à l'écran.. je n'en sais pas plus parceque c'est un positionnement que je n'utilise pas et je n'en n'ai jamais eu l'utilité fondamentale.. De plus, pour un objet positionné en 'float', IE ne sait pas lui attribuer une hauteur à 100% de celle de son contenant.. C'est pour ça que ton menu ne va pas plus bas.. On peut certes bidouiller par des règles CSS spécifiques à MS et particulièrement non standard car incluant des expressions JS, donc fortement non recommandées (c'est pour ça que je n'en parle pas) !! Ou aller consulter les tutos dont j'ai parlé plus haut, qui parlent aussi de comment faire un bloc de menu qui donne l'impression d'aller jusqu'au bas de la page..

Pour faire court, tu peux essayer un <body> qui ait juste la hauteur de l'écran ('height: 100%;'), un bloc de menu en 'position: absolute; top: 0px; left: 0px;', un bloc de contenu en 'position: relative;', d'une hauteur de 100%, avec une marge gauche égale à la largeur de ton menu et un scrolling automatique par un 'overflow: auto'..

Ca te donnerait ceci à essayer d'insérer dans ta CSS :
Code:
body {
	height: 100%;
	background: #FFFACD;
	}

#menu {
	position: absolute;
	top: 0px;
	left: 0px;
	width: 12em;
	background: #FFFACD;
	}

#text {
	position: relative;
	margin-left: 12em;
	height: 100%;
	overflow: auto;
	background: #FFFFFF;
	}
Evidemment, ce n'est qu'une proposition de piste à suivre, pas une soluce pleinement testée.. Je n'ai pas trop le temps de le faire ;).. Tu remarqueras cependant que le <body> a la même couleur d'arrière-plan que ton menu et que c'est ton bloc de "text" qui est défini à blanc.. C'est ainsi qu'on donne l'illusion que le bloc de menu "descend" jusqu'au bas de la page..

Courage, prend le temps de faire et d'essayer, c'est ainsi que la "chose" s'apprend et s'apprivoise ;)... Tu verras aussi que certaines choses qui passent bien avec IE et FF ne passeront peut-être pas aussi bien avec Opera ou Safari sur Mac (ou son frère Konqueror sous Linux).. une question doit te rester quand tu sens que tu pars dans des directions qui te paraissent un peu lourdes : "pourquoi faire simple quand on peut faire compliqué ?".. C'est la question humouristique qui est là pour nous rappeler la vraie, la seule : celle qui est précisément l'inverse et qui doit toujours prévaloir (quand ça peut)..

:merci:
 

dartyduck

Grand Meuble Suprême
Ok, c'est gentil d'avoir pris le temps de m'aider et de me raconter tout ça. Ca va bien m'aider, surtout le passage du "pourquoi faire simple quand on peut faire compliqué ?". C'est à méditer et j'y songerai.
Merci à vous tous, je vais tenter de continuer suel grace à vos indications. Je reviendrai surement vous embeter avec mes question un jour prochain.
Tchô!!
 

Johan_et_Pirlouit

Grand Maître

C'est ce que je me dis parfois.. Surtout que de temps à autres je suis, comme tout le monde, un peu obligé de revoir mes classiques et de faire le ménage dans mes pages de code :ange:...... Et, de temps en temps, ta phrase "Je débute mais je me soigne" me va aussi très bien ;)..

:merci:
 

dartyduck

Grand Meuble Suprême
Encore une question sur cette page:
-> avec IE j'ai un retour à la ligne intempestif sur les 3 premieres lignes, alors que le reste se comporte normalement.
-> Sous FF tout va bien.
Le Pb, c'est que je ne vois absolument pas ce qui cloche, le code est le meme pour tout le text du block!!
Merci de m'éclairer.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 120
Membres
1 586 398
Dernier membre
mookie767
Partager cette page
Haut