Faire du code HTML qui tient la route serait déjà un bon premier pas... Parce que du CSS sur du HTML bancal, ben ça marche pas des masses.
Par exemples, tu as le style suivant:
div#news p {width: 360px;}
Or, si je regarde dans div#news, j'ai le code HTML suivant:
<div id="news">
<h2><span>Dernières news</span></h2>
<p>
<h3><a href="#">Halo Combat Evolved</a></h3>
La toute nouvelle version du jeu débarque enfin sur la console Microsoft next generation !
<br /><br />
<h3><a href="#">The great pom boy</a></h3>
Aidez pom boy à chasser les méchants twinywinny du monde des bulles
<br /><br />
<h3><a href="#">P’tite bouille</a></h3>
Ptite bouille a la musique dans la peau et ça se voit !
<br /><br />
(...)
<p>
Des h3 et des bouts de texte dans un seul et même paragraphe?
Attention à l'abus de fumage de moquette, hein.
Plus sérieusement, tu ne peux pas mettre des h3 dans des p. Parce que:
- l'élément
p n'est pas fait pour ça;
- les DTD HTML précisent que l'élément
p ne peut contenir que des éléments de type en-ligne (donc pas d'autres paragraphes, pas de titres, etc.)... ce que le validateur HTML t'aurait bien entendu signalé;
- de toute façon, les navigateurs vont probablement ignorer cet élément
p illicite, en estimant que c'est une erreur.
Pour le reste... pareil, tu as un problème de maitrise de ton code HTML, et du coup tes styles CSS entrent en conflit. Par exemple, tu utilises un paragraphe pour dessiner l'image du bas de div#tests. Sauf que tu as quelque part un style qui dit que tous les paragraphes dans div#tests doivent avoir une largeur de 360px, alors que tu veux que se paragraphe soit plus large. De plus, div#tests à un padding à gauche de 10px, ce qui empêche que l'image soit collée au bord gauche de la div. De plus, ton paragraphe a un margin-bottom de 16px, ce qui bien sûr empêche qu'il soit collé en bas.
Bref... reprends ton code HTML pour corriger ses défauts (par exemple, il serait préférable, ou en tout cas plus abordable, d'utiliser un div ou un span vide pour dessiner l'ombre du bas des divs, et de placer cet élément en bas des divs en question, pas à l'intérieur). Puis essaye de rationaliser ton code CSS. Par exemple, donner une largeur de 360px à tes h3 et p contenus dans tes blocs est un pis-aller. Normalement, c'est la largeur de ton bloc (et les éventuels padding) qui doit réduire automatiquement leur largeur.
Par exemple, div#tests pourrait avoir une largeur définie ainsi:
div#tests {
width:360px;
padding:0pt 16px 0pt 10px;
}
Dans la foulée, tu pourras si tu le souhaites t'intéresser à l'utilisation des tailles de texte relatives (em, %... voir tutoriel sur Alsacréations), ou encore à la création de formulaires accessibles (à ce sujet, Pandore suggérait d'encadrer les input par des
<label></label>... ici, ça me semble plutôt inutile, tant que l'on n'a pas plutôt décidé d'afficher des labels explicites et de les coder comme tels). Mais ça peut faire beaucoup à la fois.