28173 sujets

CSS et mise en forme, CSS3

Bonjour tout le monde!

je me suis enfin décidé a quiter les tableaux pour le css, mais j'avoue que je suis un peu perdu Smiley sweatdrop !

En fait j'ai un probleme pour ma mise en page css entre Internet Exploreur et Firefox, pas du tout le meme resultat Smiley fache ce qui se passe c'est que sous IE pas de problemes et sous FIrefox, ca couille... toutes les divs se chevauchent !!


disposition classique : 3 colones + head +foot et innerhtml pour l'affichage
treve de blabla, voila le code.

mon (x)Html

<body>
<div class="haut">
</div>
<div class="gauche">
<li><a href="index.php?page=accueil">Home</a></li><br><br>
<b>Musique:</b>
liens,liens
<b>Instruments:</b>
liens,liens
<b>Communiquer:</b>
liens,liens
</div>
<div class="droite">
<b>l'Artiste du mois</b>
bla,bla
<br>
<br>
<b>Partenaires:</b>
bla,bla
<br>
<br>
<b>Pubs:</b>
bla,bla
</div>
<div class="frame">
ici un code INNERHTML pour l'affichage de la page
</div>
<div class="bas">
bla,bla
</div>
</body>


et mon css, je suis sur qu'il est bourré de fautes mais je ne sait pas les voir Smiley biggol excusez le noob !


body {
width : 760px; 
margin : auto; 
position : absolute;
display:block 
width : 100%; 
height : 100%; 
font-size : 14px; 
font-family : Verdana;
background-color : #7f0000; 
} 

.haut {
width : 916px; 
height : 140px; 
margin-left : 20px; 
background-image : url("images/titre.JPG"); 
background-repeat : no-repeat; 
background-color : black; 
color : #fff; 
text-align: right ; 
border-top : 2px dashed white; 
border-left : 2px dashed white; 
border-right : 2px dashed white; 
} 
.gauche {
position : absolute; 
left : 20px; 
width : 181px; 
height : 800px; 
background-color : black; 
background-image : url("images/cotes.JPG"); 
color : #fff; 
padding : 10px; 
border-left : 2px dashed white; 
} 
.droite {
position : absolute; 
left : 755px; 
width : 181px; 
height : 800px; 
background-color : black;
background-image : url("images/cotes.JPG"); 
color : #fff; 
padding : 10px; 
border-right : 2px dashed white; 
} 
.frame {
margin-left : 200px; 
width : 555px; 
height : 800px; 
overflow : auto; 
font-size : 90%; 
background-color : white;
background-image : url("images/fond de page .JPG");
background-repeat : no-repeat; 
background-attachment: fixed;  
padding : 10px;
font-size : 10px;  
border-style : inset; 
}
.bas {
width : 916px; 
height : 30px; 
background-color : black;
background-image : url("images/cotes.JPG");  
color : #fff; 
font-size : 12px; 
padding : 10px; 
margin-left : 20px; 
border-left : 2px dashed white; 
border-right : 2px dashed white; 
border-bottom : 2px dashed white; 
} 


on m'a parlé de faire une div general (contener)...

j'attend avec impatience vos precieux conseils et corrections !

@+
Modifié par ToTo Nµts® (30 May 2006 - 19:39)
<body>
<div class="haut">
</div>

Tiens, un bloc vide… Gageons que c'est pour les tests, et qu'il ne le restera pas.

<div class="gauche">
<li><a href="index.php?page=accueil">Home</a></li><br><br>
<b>Musique:</b>
liens,liens
<b>Instruments:</b>
liens,liens
<b>Communiquer:</b>
liens,liens
</div>

– En XHTML, les retours à la ligne s'écrivent <br /> (toute balise unique doit être fermée de la sorte).
– En HTML ou en XHTML, les éléments de listes (élément li) se placent à l'intérieur de listes (éléments ul pour une liste non ordonnée ou ol pour une liste ordonnée).
– Sinon, il y a des cas où plutôt que de balancer du gras, on utilisera un titre de section du niveau qui va bien.

Ce qui peut donner :
<div id="menu">
<h2><a href="index.php?page=accueil">Home</a></h2>
<h2>Musique :</h2> [i]<!-- note : en typographie française, les signes de ponctuation double sont précédés d'une espace -->[/i]
	<ul>
		<li>lien</li>
		<li>lien</li>
	</ul>
<h2>Instruments :</h2>
	<ul>
		<li>lien</li>
		<li>lien</li>
	</ul>
<h2>Communiquer :</h2>
	<ul>
		<li>lien</li>
		<li>lien</li>
	</ul>
</div>


Sur le CSS :
body {
	width : 760px; /* On général on fera un conteneur global pour ça */
	margin : auto; /* Idem */
	position : absolute;
	display:block /* C'est déjà un élément de type bloc…
	au passage, tu n'as pas fermé ton point-virgule, donc bug de syntaxe pour la suite… */
	width : 100%; /* Width 760px ou width 100% ? Faudrait savoir !
	Bon, dans le cas présent ça sera 100%, car la deuxième déclaration écrase la première. */
	height : 100%; /* pas sûr que ça soit nécessaire */
	font-size : 14px; /* À fixer en em ou en % plutôt, non ? */
	font-family : Verdana; /* À étoffer, cf [url=http://web.covertprestige.info/test/00-comparaison-de-fontes-pour-le-web.html]cette page[/url] */
	background-color : #7f0000; 
}


Bon, ça doit déjà faire beaucoup à la fois.
Le problème, c'est que tu t'es lancé dans une mise en page complète sans pour autant avoir les bases. À ta place, je ferais les tutoriels de base d'Openweb ou d'Alsaréations, pour acquérir ces bases de manière un peu plus solide.

Pour la suite de ton code, tu as sûrement des problèmes avec le positionnement en absolu (faut le maîtriser avant de l'employer à tout bout de champ, sinon on se le prend toujours sur la gueule… faut pas s'inquiéter, ça fait toujours ça au début Smiley lol ).

Remarque générale : on dirait que tu essayes de faire un design au pixel près… or, c'est tout bonnement impossible à faire, à la fois à cause des différences de rendu entre les navigateurs (que l'on peut minimiser au maximum, mais ça ne sera jamais au pixel près, surtout dans la gestion des alignements verticaux) et à cause des principes d'accessibilité et de compatibilité "ascendante" ou "descendante" en termes de… résolution d'écran et type de terminaux.

Tes conteneurs sont tous en positionnement absolu (ou la plupart), avec une hauter et une largeur fixe. Et si jamais le texte ne rentre pas dans la hauteur déterminée ? Il dépasse, tout bonnement. Et les textes/blocs/machins se chevauchent, parce que la page n'a pas été conçue pour être extensible.

Je te propose de faire différemment. Mais c'est tout un apprentissage, et ça ne se fait pas en quelques heures.
Comme je le disais, les tutoriels d'Openweb et d'Alsacréations sont un très bon point de départ.
Merci de ta reponse Mpop !

c'est vrai que j'ai un peu survolé les tutoriaux CSS va faloir que je m'y replonge!la j'ai voulu faire un mix a ma maniere a partir de plusieurs tutos, d'ou toutes ces erreures surement ! Smiley langue

pour le conteneur, je fais donc une div qui inclut tout mon "body" et je lui donne,coté css, les dimensions que je veu pour l'ensemble de ma page ?

je prend en compte tous tes conseils,merci;

@+
ToTo Nµts® a écrit :
pour le conteneur, je fais donc une div qui inclut tout mon "body" et je lui donne,coté css, les dimensions que je veu pour l'ensemble de ma page ?


Oui, comme ça c'est pas mal.
bon, voila j'ai appliqué tous tes precieux conseils, maintenant va faloir que je me plonge dans le gros de l'affaire ! si tu voi qulques ereure qui ne sont pas evidentes (et donc que je ne vais peut etre pas trouver) n'esite pas !


j'ai trouvé des tutos sur les float, interessant, ca resoud pas mal de probleme d'alignement.

par contre mon vraie souci c'est que FF me fait des largeur beaucoup plus grandes que IE ... Smiley confus

si tu veu voir par toi meme ce que ca donne entre les differents navigateurs ect... voila un petit lien vers mon (futur) site: http://www.runksite.tk/

allé merci et @+
Modifié par ToTo Nµts® (23 May 2006 - 21:33)
Bon, déjà je passe par la vraie adresse (http://runksite.free.fr/ ) pour pas me faire embêter par cette histoire de frame ^_^;

ToTo Nµts® a écrit :
par contre mon vraie souci c'est que FF me fait des largeur beaucoup plus grandes que IE ... Smiley confus

Validateur HTML a écrit :
line 1 column 1 - Warning: missing <!DOCTYPE> declaration

Ah ben voilà, il te manque une déclaration de type de document pour ta page.
Tout document HTML devrait avoir une telle déclaration. Cf la source de ce site (tout en haut), ou de n'importe quel site récent et conforme aux standards. Le principe : annoncer au navigateur quelle est la norme HTML utilisée, pour qu'il puisse utiliser le mode de rendu le plus adapté.

En l'occurence, pour une bonne compatibilité entre les navigateurs, il vaut mieux adopter le mode de rendu strict, et éviter le « Quircks mode » (le mode de rendu tout mal foutu).

Ton code commence directement par la balise html ==> Quircks mode.
Ton code commence par une DTD complète et annonce du (X)HTML Transitional ou Strict ==> mode de rendu conforme.

Je ne saurais trop te recommander, si tu veux te mettre aux standards, de passer au XHTML 1.0 (Transitional ou Strict). Une petite recherche web sur la question ?
Allez, je t'aide : http://css.alsacreations.com/Bases-et-indispensables/DTD-comment-choisir
Petit rappel sur les box-model : http://openweb.eu.org/articles/dimensions_boites_css/

Bon courage, ça fait beaucoup de choses à assimiler à la fois Smiley sweatdrop

Moi j'ai eu la chance de commencer directement par les standards, sur des projets perso tout simples (plus des exercices qu'autre chose). Smiley lol
Merci !

ton premier lien m'est tres utile! je connaissait la DTD mais ne savait pas vraiment dans laquelle me placer maintenant c'est fait!
j'ai choisi HTML4.01 transitionnal

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

car (honte a moi) j'ai encore besoin de quelques iframes mais j'essayerai un jour de passer en XHTML1.0 strict.

bon ducoup c'est vrai que ca change: j'ai les meme bugs sous IE que sous FF !! Smiley biggrin youpi !

il me reste plus qu'a regler ces legers bugs.
que pense tu de ces "hacks" ?: http://www.positioniseverything.net/articles/ie7-dehacker.html

merci encore une foi et @+
Modifié par ToTo Nµts® (24 May 2006 - 13:47)
ToTo Nµts® a écrit :
bon ducoup c'est vrai que ca change: j'ai les meme bugs sous IE que sous FF !! Smiley biggrin youpi !

C'est un comportement normal, pas un bug. Comme tu t'attendais à un comportement différent, tu analyses ça comme un bug, mais ça n'a rien à voir. Maintenant, il faut apprendre le fonctionnement du modèle standard…

ToTo Nµts® a écrit :
il me reste plus qu'a regler ces legers bugs.
que pense tu de ces "hacks" ?: http://www.positioniseverything.net/articles/ie7-dehacker.html

Les hacks sont un aveu d'impuissance. Au lieu de trouver un code standard qui donnera un résultat satisfaisant sur tous les navigateurs du marché, on code standard et on rajoute une couche de hacks. Pour ma part, j'évite de les utiliser.

Mais ça ne veut pas dire qu'il faut en faire une religion anti-hack, et il y a des cas où c'est probablement justifié.
Le système le plus propre, et qui n'est pas un hack, c'est l'utilisation des commentaires conditionnels (ils sont évoqués sur la page dont tu donnes le lien). Mais je les utilise rarement.

Les seuls problèmes avec IE que j'ai du mal à résoudre, en général, sont liés à des problèmes de HasLayout. Mais je commence à savoir gérer ça, et il existe des moyens assez propres de s'en occuper, donc il n'y a pas mort d'homme.
non, non j'ai pas analisé ca comme un bug!! au contraire, c'est bien, si c'est pareil dans les deux cas, il n'y a plus qu'a le regler dans un et c'est bon dans les deux. Smiley murf
en fait j'ai utiliser des petits hack pour IE
(ceux du style widh\t ) et ca marche tres bien.
Impuissance ? heu non de ce coté la ca va, mais on parlait plutot de css non ? Smiley lol je deconne, une methode qui marche est une methode qui marche, moi ca me va !
allé merci de ton aide et a bientot !