28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

J'ai un problème assez simple : un site avec une DIV centrale qui doit s'ajuster à la hauteur (jusqu'au bas) d'une autre DIV et ça fonctionne parfaitement, sauf si je mets un DOCTYPE, et je veux dire par là n'importe quel DOCTYPE!

Voyez par vous-même. Voici mon site que j'ai simplifié au maximum. La DIV textecentre devrait, comme elle le fait quand il n'y a pas de DOCTYPE, aller jusqu'au bas de la DIV overall et s'arrêter là, et une scrollbar s'ajouter à droite. Mais lorsqu'on met un DOCTYPE, elle s'allonge tant qu'il y a du texte! Quelqu'un peut m'aider?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->

<HTML>
<HEAD>
<TITLE>Mon site</TITLE>


<script type="text/javascript">

function chk(){
my_div=document.getElementById("textecentre")
top_space=document.getElementById("textecentre").offsetTop
bottom_space=4
my_div.style.height=document.documentElement.clientHeight-top_space-bottom_space
}

onresize=chk

</script>


<style type="text/css">
html           {height:100%;}
body           {text-align:center; height:100%;}
#overall       {margin:auto; width:990px; position:relative; height:100%; background-color:#6699CC;}
#textecentre   {position:absolute; top:210px; right:260px; width:450px; height:auto; background-color:#99CCFF; overflow:auto;}
#footer        {width:990px; height:68px; margin:auto; background-color:#006699;}
</style>


</HEAD>

<BODY onload="chk();">


<div id="overall">

<div id="textecentre">

<div id="IDpres"><pre>
présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation
</pre></div>

</div>

</div>

<div id="footer">
</div>
</BODY>
</HTML>



Mise à jour : Il y a pas mal de problèmes postés sur des forums concernant le document.body.clientHeight qui ne fonctionne pas sous IE. Mais contrairement à moi, tout le monde semble avoir merveilleusement réglé le problème en remplaçant ça par document.documentElement.clientHeight... je poursuis donc mes recherches et je le remplace dans mon code, pour que si quelqu'un trouve la solution ça soit susceptible de marcher. Du coup, mon message devrait probablement être déplacé dans le forum de javascript, je suis désolé je ne pouvais pas le savoir avant ces nombreuses heures de recherche.
Modifié par Zno (03 Jun 2013 - 20:22)
salut,
ça m'a l'air assez compliqué pour rien. Est-ce le même résultat que tu souhaites ?

<!DOCTYPE html> 
<!-- saved from url=(0014)about:internet -->
<html lang="fr-FR">
	<head>
		<meta charset="utf-8" />
		<title>Titre de la page</title>
		<style type="text/css">
			html, body {height:100%; margin:0; text-align:center;}
			#overall {width:990px; height:100%; padding:1px 0; margin:auto; background:#6699CC;}
			#overall>div {overflow:auto;width:450px; height:98%; margin:1% auto 0; background:#99CCFF;}
			footer {width:990px; height:68px; margin:auto; background:#006699;}
		</style>
	</head>	
	<body>
		<div id="overall">
			<div><pre>
				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation

				présentation
			</pre></div>
		</div>
		<footer></footer>
	</body>
</html>
J'ai cru que tu avais réglé mon problème parce que ça ressemble à ça, mais je m'aperçois que c'est pas tout à fait ça.

C'est qu'en simplifiant mon site au maximum pour le metre ici j'ai mis top:10px à la div textecentre, va savoir pourquoi. Dans mon vrai site, elle est à 210px (je vais éditer mon premier message pour changer ça, désolé).

Bon, alors la hauteur de 98% ça ne me convient pas parce qu'étant à 210px du top, ma div dépasse en bas.

À première vue ça a l'air d'un problème impossible à résoudre mais voilà : dès qu'on enlève le DOCTYPE, tout fonctionne comme je voudrais! Un peu frustrant, non? Est-ce que le DOCTYPE me condamne à ne pas pouvoir faire la mise en forme qui fonctionnait avant?
Modifié par Zno (02 Jun 2013 - 23:16)
Mise à jour: J'ai trouvé le problème mais je ne sais pas comment le régler.

C'est que quand on met le doctype, ça empêche l'exécution de ma fonction ''chk''.

Cette fonction est absolument nécessaire pour que mon site s'affiche comme je veux, en tout cas j'ai fait énormément de recherches pour obtenir cette function, parce que rien n'y faisait!

Mais comment se fait-il que si on met un DOCTYPE quel qu'il soit, ça annule la fonction?
Modifié par Zno (03 Jun 2013 - 00:25)
Bah j'ai réglé mon problème tout seul, j'ai fait énormément de recherche et j'ai modifié ma fonction, je crois que c'est ce qui la fait marcher

Voici mon code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Mon site</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<script type="text/javascript" language="Javascript">

function chk(){
my_div=document.getElementById("textecentre")
my_div.style.height=document.documentElement.clientHeight-236 + "px"
}

onresize=chk

</script>


<style type="text/css">
html           {height:100%;}
body           {text-align:center; height:100%;}
#overall       {margin:auto; width:990px; position:relative; height:100%; background-color:#6699CC;}
#textecentre   {position:absolute; top:210px; right:260px; width:450px; height:auto; margin:1% auto 0; background-color:#99CCFF; overflow:auto;}
#footer        {width:990px; height:68px; margin:auto; background-color:#006699;}
</style>


</head>

<body onload="chk();">


<div id="overall">

<div id="textecentre">

<div id="IDpres"><pre>
présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation

présentation
</pre></div>

</div>

</div>

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