28173 sujets

CSS et mise en forme, CSS3

Bonsoir à tous,

Avant de commencer je vous souhaite une bonne année 2008.

Pour concevoir mon site j’ai repris un des tutoriels mis à disposition sur le site d’Alsa.

Pour faire simple, dans mon site, il y a le header, puis le menu, le contenu de la page, et ces deux derniers sont encadrés par deux marges : une à gauche, une à droite.
Le tout est fini par un pied de page.

Or lorsque je reprends mon code j’arrive à un résultat innatendu.

Je vous laisse constater par vous même : lien

Voici mes codes, en premier le (X)HTML, en second le CSS :

 <body>
	<div id="conteneur">
	<div id="header"></div>
	<div id="marge-gauche"></div>
	<div id="marge-droite"></div>
	<div id="menu"><?php include('menu.php') ?></div>
	<div id="contenu">Bonjour tout le monde !</div>
	<div id="footer"></div>
	</div>
</body> 

 body{	
		background:none;
		margin:auto;
		font-size:1em;
		font-family:Verdana, Arial, Helvetica, sans-serif;
		text-align:justify;
		width:950px;
	}

div#conteneur{
		position:relative;
		width:950px;
		background-color:#CCCCFF;
	}	

div#header{
		width:950px;
		height:150px;
		background-image:url("images/header.jpg");
		background-repeat:no-repeat;
	}

div#menu{
		width:800px;
		height:50px;
		background-color:navy;
		margin-left:75px;
		margin-right:75px;
	}

div#marge-gauche{
		width:75px;
		background-image:url("images/marge-gauche");
		background-repeat: no-repeat;
		position: absolute;
		left:0;
	}
	
div#marge-droite{
		width:75px;
		background-image:url("images/marge-droite");
		background-repeat: no-repeat;
		position: absolute;
		right:0;
	}
	
div#contenu{
		background-color:#FFFFFF;
		width:800px; /* width = width (800) + padding (75*2) */
		padding-left:75px;
		padding-right:75px;
		margin-left:75px;
		margin-right:75px;
	}
	
div#footer{
		background-image:url("images/footer.jpg");
		width:950px;
		height:25px;
		text-align:center;
		font-size:0.8em;
	} 


Sachant que j’aimerais arriver à ça : lien

Je vous remercie par avance de l’attention que vous voudrez bien accorder à mon problème.
Salut,

Bonne année.

En enlevant le text-align:justify on voit qu'il y a un espace de quelques pixels entre chaque liens. 6 mysterieux pixels. du coup le calcul 4*200px = 800 ne marche plus.

bon j'ai testé quelques trucs. essayé de dépouiller ton code jusqu'a quasi-sa plus simple expression. cet espace est toujours là.je sais pas pourquoi...

un comportement par defaut? en tous cas idem IE et FF

mais je te propose ceci comme solution.

rajouter

div#menu a.suivant{
	margin-left:-6px;

	}


et puis mettre un class='suivant' sur tous les <a> que tu as sauf le dernier.

sous IE7 et FF en tous cas ça semblait passer.
Modifié par CPascal (02 Jan 2008 - 01:00)
Bonjour,

Très en vrac:

1. Il y a deux éléments body dans le code HTML de la page. Ça fait un de trop...

2. Tester un text-align: left sur body, plutôt qu'un text-align: justify. Cela devrait modifier le rendu du menu. On remarquera alors que les items du menu, en fait tout simplement des images encadrés par des liens, se comportent comme des mots ou des caractères de texte.

3. Lire l'article suivant: Impact sur le rendu de la mise en forme du code HTML.

En bonus:
4. Apprendre Javascript, ou du moins apprendre à l'utiliser un peu plus efficacement sans chambouler le code HTML en rajoutant un élément body en plein milieu du contenu. Smiley cligne

CPascal a écrit :
mais je te propose ceci comme solution.

La solution en question n'est pas fiable. Je te laisse lire l'article que j'ai écrit plus haut pour comprendre pourquoi (note: ça a un rapport avec les diverses largeurs que peut occuper une espace typographique simple, suivant la taille exacte du texte, son éventuel redimensionnement par le navigateur ou l'utilisateur, etc.).
Modifié par Florent V. (02 Jan 2008 - 01:09)
Bonjour à vous deux,

Merci d’avoir répondu rapidement à mes problèmes.

J’ai corrigé mon problème de double body, et en fait il y en avait un à dans le fichier menu.php à cause du Javascript… Je suis donc passé à l’étape bonus, et inséré mon code Javascript grâce à un fichier externe. Ce qui en plus a le mérite de rendre le code plus propre Smiley smile

J’ai également lu le billet Impact sur le rendu de la mise en forme du code HTML, et j’ai donc pu corriger mon problème sur le menu. Enfin pas tout à fait. J’ai corrigé l’espacement entre chaque items du menu. Mais pas l’espacement en hauteur entre le header et le menu.

J’ai essayé de bidouiller le code CSS pour mon histoire de marges sur les côtés. Sans résultats.

Est-ce que je devrais repenser à un autre découpage de mon design ?
Modifié par seby2027 (02 Jan 2008 - 12:34)
Bonjour,

div#header a une hauteur de 150px, mais son image de fond fait 140px de haut, ce qui laisse une bande de 10px de haut en bas.

seby2027 a écrit :

Est-ce que je devrais repenser à un autre découpage de mon design ?

Pas besoin de tout refaire, mais il y a plusieurs choses que tu pourrais améliorer:
- Ne pas mettre l'image de l'en-tête en image de fond (on perd le contenu pour les moteurs de recherche, ou si l'image ne s'affiche pas...). Tu peux avoir le dégradé et l'illustration de gauche en image de fond, et le texte en image dans le code HTML avec attribut alt qui va bien.
- Les textes alternatifs pour les images du menu ne sont pas cohérents avec ce que disent les images. Les raccourcir à deux-trois mots (et surtout, virer le «cliquez ici»!).
- À priori, le charset déclaré est faux, ou bien tu as des contenus dans le mauvais encodage.
- Dans l'idéal, on passerait en fichier Javascript externe les fonctions de changement d'image au survol du menu, et la fonction de préchargement d'images.
- Il faudrait virer les deux div vides qui sont censées dessiner les bords du bloc central. Tu n'arriveras à rien avec des blocs dont la hauteur n'est pas liée à celle du conteneur central, justement. Un peu de lecture au cas où:
http://web.covertprestige.info/test/05-boite-avec-bordures-en-html-et-css.html
Bonsoir,

Je pense avoir modifié tout ce que tu me recommandais, et je vais apprendre à manier avec plus de délicatesse le Javascript.

Cependant j'ai toujours un petit souci. Il y a un espace vertical entre mon menu et mon corps, du coup mon design est décroché.

J'ai essayé de comprendre avec les lien que tu m'as donné mais rien n'y fait.

PS : Pourquoi lorsque je clique dans le contenu il y a cet effet avec le background ?
Bonjour,

Meilleurs voeux à tous...
Je pense qu'un margin: 0; sur ton h1 devrait faire l'affaire Smiley cligne

Quand c'est comme ça, un petit
*{margin: 0; padding: 0;}


Pour tester et si le problème se règle, il faut débusquer l'indélicat (souvent un hn) qui à par défaut une valeur de margin (propre à chaque navigateur d'ailleurs).

<edit> Arf !! Ca ma fait suer mais bon a priori il faut que tu positionnes ton background (background-position: top left;) pour FF et opera si tu veux utiliser background-image, sinon utilise simplement background: url(mon_image.jpg); et là ça passe
Bah, je n'avais encore jamais rencontré ça, ne me demande pas pourquoi !! je n'en sais rien! Si un maitre css passe par là !! La question reste posée... </edit>
Modifié par ghost (04 Jan 2008 - 03:57)