28172 sujets

CSS et mise en forme, CSS3

Bonjour,

je me suis passablement perdu au milieu de mes div et je sais plus par quel bout régler mes problèmes. Mme si j'ai conscience qu'ils ont déjà du etre traité quelque part, j'ai beaucoup de mal à aborder tout ça. Je suis un peu pommé.

VOilà le site

http://s258365998.onlinehome.fr/christianne_benedetti/

Premièrement le footer est bien collé au bas de page sous ie, mais pas sous firefox ou chrome.

Sous firefox le #global est bien centré, mais sous ie tout est callé à gauche. J'ai essayé l'arrangement avec un text-align: center; mais ça créer d'autre problème.

voilà le code.

css

/* mise à zero des margin/padding */
html,body, p, h1, h2, h3, ul, li {
	margin:0;
	padding:0;
}

html,body {
	height: 100%;
}

body {
	background-color:#d79b45;
	font: 0.625em/1em Verdana, Geneva, Arial, Helvetica, sans-serif;
	color:white;
	font-family:verdana;
	font-size:100%
}

/* Structure */ 
#logofond {
	background-image:url(./images/logofond.jpg);
	background-repeat:repeat-x;
	height:500px;
	position:absolute;
	width:100%;
}

#global {
	/*background-color:#d79b45;*/
	margin:0 auto;
	min-height: 100%;
	padding-bottom:145px;
	position: relative;
    width:770px;
}

#logo {
	position:relative;
	
}

#page {
	position:absolute;
	padding-bottom:145px;
}

#footer {
	background-image:url(./images/footer.jpg);
	bottom:0;
	height:45px;
	position:absolute;
	width:100%;
}

#footer p {
	color:white;
	font-family:times;
	font-style:italic;
	font-size:1.2em;
	
}

#menu {
	background:url(./images/bi.gif);
	background-repeat:repeat;
	font-family:times;
	height:30px;
	margin:0 auto;
	text-align:center;
	


html

<html>
<head>
<title>Christianne Benedetti</title>
<link href="styles3.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="logofond">
</div>
<div id="global">

<div id="logo">
<h1><a title="Christianne Benedetti, Peintre orientaliste" href="./index.htm"><IMG src="./images/logo.jpg" alt="Christianne Benedetti, Peintre orientaliste" height="145" width="770" border="0"></a></h1>
</div> <!-- logo -->

<div id="menu">
<ul>
<li><a href="#">Accueil</a></li>
<li><a href="#">Biographie</a></li>
<li><a href="#">Médaillles de l'artiste</a></li>
<li><a href="#">Galerie tableaux</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div> <!-- menu -->

<div id="page">

<h3>Bienvenue!</h3>
<br/>
<p>Lorem ipsum dolor sit amet, 
</p>
</div> <!-- page -->


</div>
<div id="footer">
</div> <!-- footer -->
</body>
</html>


Merci d'avance pour toute information ou aiguillage vers des solutions.
Modérateur
Salut eZe,

Ton site n'est pas centré pour la raison que tu t'es un petit peu trompé sur une propriété CSS dans le #global :


#global {
	/*background-color:#d79b45;*/
	margin:0 auto [b]0 auto[/b];/*manque le reste [cligne]*/
	min-height: 100%;
	padding-bottom:145px;
	position: relative;
        width:770px;
}


Si je ne te dis pas de bêtises, je crois que tu fais des petites erreurs de syntaxe à :

body {
	font: 0.625em/1em Verdana, Geneva, Arial, Helvetica, sans-serif;
	color:white;
	font-family:verdana;
	font-size:100%
}

Logiquement, cela devrait être plutôt :

body {
	background-color:#d79b45; 
	color:white;
	font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;
	font-size:1em;/*Sinon définir en pixel ou en point pica*/
	position:relative;/*propriété en fonction du footer*/
}

Ce code est fait de tête. Donc il se peut qu'il y ait des petites pétouilles malicieuses qui se soient glissées.

Je ne comprends pas bien pourquoi tu mets position absolute à #logofond et que ce dernier n'est pas intégrer à #global ? Je crois que tu as utilisé un div que l'on peut facilement éviter. Pourquoi utilises tu position:relative à #logo ?

Pour finir, pourquoi enlèves tu les marges intérieures et extérieures de : p, h1, h2, h3, ul, li ? Bien que le ciblage soit mal organisé, je comprends ul et li. Mais le reste Smiley rolleyes Smiley ohwell .

<<<EDIT
J'oubliais une petites chose : Logiquement, ton #footer devrais être comme ceci, si je ne m'abuse :

#footer {
	background-image:url(./images/footer.jpg);
	bottom:0px;/*définir l'unité de mesure - fautes courantes [cligne]*/
	height:45px;
	position:absolute;
	width:770px;
	margin:0 auto 0 auto;
}

sinon il faut faire ceci :

html

<div id="large_footer">
	<div id="footer">
	</div>
</div> 

css

#large_footer{
	width:100%;
	background-image:url(./images/footer.jpg);
	bottom:0px;
	position:absolute;
}
#footer {
	height:45px;
	width:770px;
	margin:0 auto 0 auto;
}

EDIT;

++
Modifié par Nolem (22 Sep 2008 - 22:59)
Modérateur
Bonjour,

Nolem a écrit :


Ton site n'est pas centré pour la raison que tu t'es un petit peu trompé sur une propriété CSS dans le #global :


En fait, il ne s'est pas trompé. Il s'agit d'un raccourci. Les déclarations suivantes sont équivalentes :


margin:0 auto;
margin:0 auto 0 auto;


ou un exemple différent :


margin:50px 10px;
margin:50px 10px 50px 10px;


Lorsqu'il n'y a que deux valeurs, elles sont utilisées pour les deux suivantes.

eZe, pour le centrage du site, commence par appliquer un text-align:center au body, et si cela crée d'autres problèmes comme tu le mentionne, tu dois alors régler ces autres problèmes. Smiley cligne
Modifié par Tony Monast (22 Sep 2008 - 23:01)
C'est moi ou bien tout le monde il est dans les choux? Smiley smile

eZe, ton div#global n'est pas centré dans IE car ta page n'a pas de Doctype en bonne et due forme. Donc IE (et les autres navigateurs d'ailleurs) interprètent la page en mode «Quirks» aussi connu sous le nom de «je fais comme si la page est une vieille page écrite à l'époque où le Web était jeune et où tout le monde faisait de la soupe de balises et les standards HTML et CSS n'étaient pas bien utilisés». Dans ce mode, la technique des marges automatiques pour aligner un bloc (à gauche, à droite ou centré) n'est pas prise en compte par Internet Explorer.

Donc:

1. Toujours utiliser un Doctype. Pratiquez le Safe-Web, mettez un Doctype!
2. Toujours valider le code HTML de ses pages. Tous les problèmes ne viennent pas de là, mais il faut d'abord éliminer les problèmes de validité pour travailler sereinement sur des questions de mise en page (ou sur les bugs de rendu des navigateurs...).

(Du reste, Tony a bien entendu parfaitement raison pour la syntaxe CSS du type margin: valeur1 valeur2.)

Tony Monast a écrit :
eZe, pour le centrage du site, commence par appliquer un text-align:center au body

C'est parfaitement inutile pour tous les navigateurs actuels. À moins de travailler avec Internet Explorer 6 et 7 en mode Quirks. Mais je crois avoir rappelé avec délicatesse que si vous travaillez en mode Quirks vous êtes un has-been du Web des années 90, que vous irez en prison sans passer par la case départ et sans toucher 20000 francs, et que vous rôtirez en enfer. Ou quelque chose comme ça.

Pour le problème de positionnement du pied de page, tu emploie une technique qui prévoit le que pied de page soit placé DANS div#global (qui est en min-height: 100%). Si tu veux garder ton pied de page en dehors, il doit être possible d'utiliser:
html {
	height: 100%;
}
body {
	position: relative;
	min-height: 100%;
	margin: 0;
	padding: 0;
}
(et pas de position relative ou de min-height sur div#global, vu que ça ne servirait à rien dans cette configuration).

Il faut voir si ça passe, par contre, car l'élément BODY est un peu spécial et ce n'est pas sûr qu'il prenne bien en compte le min-height ou le positionnement relatif (et ce dans tous les navigateurs courants).
Modifié par Florent V. (22 Sep 2008 - 23:49)
Tout d'abord merci pour vos réponses Smiley cligne

Ensuite j'ai conscience que certaine partie du code sont faire à la va-vite et par exemple, je ne compte pas laisser une valeur "font-family: verdana"

Merci pour le doctype, j'avais zappé. Je sais que je vais faire un peu hérétique en disant ça (ou plutot débutant ^^) mais jusqu'à il y a pas longtemps pour moi le doctype servait juste à valider son code pour pouvoir dire "mon code est valide héhé" sans réaliser qu'il avait une utilité au niveau de l'interpretation par le navigateur (oui c'est idiot Smiley lol )

Pour le pied de page j'ai besoin qu'il soit en dehors du #global car le pied fait toute la longueur de la page, et dépasse donc du #global. Je vais donc essayer ta solution Florent V.

C'est pour la meme raison que #logofond n'est pas intégré dans #global. ET qu'il y a un #logo, qui lui est dedans.
Modérateur
Bonjour,

Florent V. a écrit :

C'est parfaitement inutile pour tous les navigateurs actuels. À moins de travailler avec Internet Explorer 6 et 7 en mode Quirks.


Là franchement, je suis sur le c**. Smiley sweatdrop Je travaille toujours en Strict et pour une raison qui m'échappe, j'ai toujours cru que je devais utiliser text-align:center au body pour que ça fonctionne bien dans Internet Explorer 6. Je me souviens d'ailleurs très bien que je testais dans IE6 et que j'ajoutais le text-align pour centrer mon cadre principal. Je viens pourtant de faire le test et tu as raison, ça ne sert strictement à rien.

Je crois que j'écrivais toujours le div principal puis le fichier CSS de base (body) avant de mettre le doctype et continuer l'écriture du code. Smiley eek

Pour ce qui est d'Eze, je n'ai pas regardé le code davantage. Mon intervention rapide était davantage pour parler du raccourci CSS que pour aider Eze, vous l'aurez compris. Smiley cligne
Bon maintenant j'ai d'autre problème. Il semble que sous ie certain élèment se déforme, ainsi le menu et le footer débordent. Bug non présent sous les autres navigateurs (évidement *sic* )

En plus de mon footer "décoratif" (et non sémantique, mais il faut bien faire quelques concessions) j'ai ajouté un footer utilitaire, qui lui se limiterai a #global et sera rempli de texte/lien. Seulement le texte ne se centre pas malgrè un


footer {
text-align:center;
}


voilà les css


/* mise à zero des margin/padding */
html,body, p, h1, h2, h3, ul, li {
	margin:0;
	padding:0;
}

html, body {
	height: 100%;
}

a img {
	border:none;
	}

body {
	background-color:#d79b45;
	background-image:url(./images/logofond.jpg);
	background-repeat:repeat-x;
	font: 0.625em/1em Verdana, Geneva, Arial, Helvetica, sans-serif;
	color:white;
	font-family:verdana;
	font-size:100%;
	margin:0;
	min-height:100%;
	padding:0;
	position:relative;
}

/* Structure */ 
#global {
	margin:0 auto;
	padding-bottom:45px;
	width:770px;
}

#page {
	position:relative;
	padding-top:5px;
	padding-bottom:45px;
	width:770px;
}

#footer {
	bottom:15px;
	position:absolute;
}

#footer p {
	text-align:center;
	font-size:0.8em;
}

#footer-deco {
	background-image:url(./images/footer.jpg);
	bottom:0;
	height:15px;
	position:absolute;
	width:100%;
}

#menu {
	background:url(./images/bi.gif);
	background-repeat:repeat;
	font-family:times;
	height:30px;
	margin:0 auto;
	text-align:center;
	}

#menu ul {

	list-style:none;
	font-size:1.2em;
	font-style:italic;
	margin:0 5px;
	padding:5px 10px;
	
}
#menu li {
	display:inline;
	text-align:center;
	list-style: none ;
}

#menu li a{
	color:white;
	
	text-decoration:none;
}

#menu li a:hover {
	background-color:#b5460e;
	color:#fff;
	padding:5px;
}

#menu li a:focus {
	background-color:#af613a;
	color:#fff;
	padding:5px;
}

.current {
	font-weight:bold;

}



et voilà l'html



<!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Christianne Benedetti</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>

<div id="global">

	<div id="logo">
		<h1>
			<a title="Christianne Benedetti, Peintre orientaliste" href="./index.htm">
				<img src="./images/logo.jpg" alt="Christianne Benedetti, Peintre orientaliste" height="145" width="770"/></a>
		</h1>
	</div> <!-- logo -->

<div id="menu">
<ul>
<li><a class="current" href="#">Accueil</a></li>
<li><a href="#">Biographie</a></li>
<li><a href="#">Médaillles de l'artiste</a></li>
<li><a href="#">Galerie tableaux</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div> <!-- menu -->

<div id="page">

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum vel libero ac libero tincidunt vehicula. Aliquam sodales risus id nulla. Fusce sit amet nibh. Sed posuere tempor justo.
Quisque odio metus, tincidunt et, ullamcorper ut, sollicitudin eu, arcu. Praesent non ante. Aliquam elit. Nam mauris. Ut eu metus.
Aliquam vitae arcu. Curabitur dolor eros, tincidunt et, interdum id, volutpat eget, dui. Sed adipiscing.
</p>
</div> <!-- page -->

<div id="footer"><p>Lorem ipsum etc</p>
</div> <!-- footer -->       
</div>
<div id="footer-deco">
</div> <!-- footer -deco -->
</body>
</html>


last but not least, il me semble qu'il existe un selecteur permttant d'appliquer des attribut à tous les h (h1, h2 etc) par exemple, mais je ne le retrouve plus Smiley rolleyes