28173 sujets

CSS et mise en forme, CSS3

Bonjour à vous

Tout d'abord un grand merci pour l'aide précieuse que vous apportez tous à de nombreux webmasters amateurs et autodidactes comme moi.

Entrons dans le vif du sujet: depuis quelques temps j'essaie de m'appliquer à respecter à la fois les standards et la plus grande accessibilité possible. Tout va bien sauf que je ne comprends pas ce petit détail:

Pourquoi dans le code qui suis, la div positionnée en absolute me rend-elle une zone qui me crée un ascenceur horizontal, alors qu'une div avec les même caractéristiques mais sans précision de positionnement se place automatiquement à un 100% normal.

Je précise que j'ai enlevé les marges et padding comme conseillé dans d'autres posts, que j'ai vérifié sous IE7 et FF2 et pour une fois ils sont d'accord et que ces deux div ont pour parent body himself (qui n'a aucune marge non plus).

Alors là j'appelle à l'aide car je ne comprends pas, j'ai lu et relu tout ce que j'ai trouvé sur les positionnements et quelque chose a dû m'échapper.

Merci à vous qui aurez la patience d'éclairer ma lanterne ;o)

Voici mon css:

body {
color: #ffffff;
}

#bloc_cool{
	width: 100%;
	background-color: #800000;
}

#bloc_pascool{
	position:absolute;
	top: 7.7em;
	width: 100%;
	background-color: #006699;
}


Et voici mon fichier html (je vous épargne le doctype, et le head où le css est correctement relié)


<body>
<div id="bloc_cool">
Cool il est bien celui là
</div>

<div id="bloc_pascool">
Pas cool... il déborde celui là
</div>
</body>


Avis aux amateurs... ;o)
Modifié par NicoB (25 Jan 2007 - 11:17)
Bonjour,

Tu dois hériter d'un style antérieur ou avoir mal supprimé les marges par défaut car c'est censé fonctionner tel quel.

Une petite chose au passage: assigner une largeur de 100% à ton div "#bloc_cool" est tout à fait inutile et peut par contre te créer des soucis lors d'ajouts de paddings par exemple.

Par curiosité, pourrais-tu nous fournir le code complet?

Cordialement,
Benjamin
Salut,

je ne comprend pas, si tu as testé tu as du voir que ton div en absolute n'était pas collé au bord gauche de la fenêtre, cela aurait du t'alerter.

Et pour cause puisque tu ne le positionnes pas en largeur. donc il est déterminé sur cet aspect par les margin/padding par défaut des éléments html et body.

Donc :

#bloc_pascool{

	position:absolute;

	top: 7.7em;

        [b]left:0;[/b]

	width: 100%;

	background-color: #006699;

}

Modifié par clb56 (25 Jan 2007 - 10:18)
Bonjour!

Merci à vous, le problème est réglé et désolé de cette erreur de débutant (ce que je suis en même temps, lol).

J'explique ce que j'ai fait suivant vos conseils afin de résoudre ma bêtise.

J'ai suivi vos deux posts: d'une part clb56 tu as raison je devais simplement positionner ma div horizontalement. En le faisant je me rend compte qu'elle fait bien les 100% demandés (normal me direz vous) et qu'elle ne déborde plus sur la droite et ne me crée plus d'ascenceur.Toutefois j'aimerais qu'elle hérite des marges de body de façon à être placé en alignement avec mes autres boîtes. J'ai alors deux solutions me semblent-il:

- soit je rajoute un positionnement sur la balise body (ce qui me paraît étrange).
- soit j'englobe le tout dans une div conteneur que je positionne de façon à ce que mes div absolues puissent en hériter. (c'est la solution que j'ai choisie)

D'autre part il me fallait aussi redéfinir les marges par défaut de body comme tu le mentionne Benjamin D.C. C'est ce que j'ai fait.

Donc voici mon code corrigé dans son intégralité (j'ai supprimé le width 100% inutile et dangereux suivant ton conseil Benjamin D.C.)



Mon code css

body {
color: #ffffff;
margin: 0em;
padding: 1em;   /* Je spécifie mes espacements */
}

#page {
	position: relative;   /* Mon conteneur en relative*/
}

#bloc_cool{
	background-color: #800000;  /* En enlevant le width: 100% inutile */
}

#bloc_pascool{
	position:absolute;
	top: 7.7em;
	width: 100%;  /* celui-ci est obligatoire sinon la boîte s'adapte au contenu */
	background-color: #006699;
}


Mon code 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>
<title>Comprend mieux...</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="css/normal.css" type="text/css" rel="stylesheet" />
</head>

<body>
<div id="page">
	<div id="bloc_cool">
	Cool il est bien celui là
	</div>

	<div id="bloc_pascool">
	Pas cool... il déborde celui là - Correction il ne déborde plus: merci Benjamin D.C. et clb56 !
	</div>
</div>
</body>

</html>



Voilà encore merci à vous de vos précieux conseils et de votre patience Smiley cligne
Modifié par NicoB (25 Jan 2007 - 11:14)