Rendre ''position: fixed'' compatible Internet Explorer 6 (CSS, expression)

Publié le 11 février 2008 par Mr32

Ce code a pour but de rendre compatible le fameux position : fixed sur Internet Explorer 6 à l'aide de la propriété expression() propre à ce dernier. Cette propriété permet de recalculer dynamiquement le contenu de l'expression expression(...) durant la manipulation de la page, en l'occurrence lors d'un évènement window.onscroll, sans code Javascript additionnel.


Page page-position.html

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<title>Rendre "position: fixed" compatible Microsoft Internet Explorer 6</title>
	
	
	<!-- Code CSS pour Firefox, Safari, Opera, Internet Explorer 7... -->
	
	<style type="text/css" media="screen">
		
	#fixed {
		position: fixed;
		left: 0; top: 0; right: 0;
		width: 100%;
		padding: 10px; background: gray;
	}
	
	</style>
	
	
	<!-- Code CSS pour Internet Explorer 6 -->
	
	<!--[if lte IE 6]>
	<style type="text/css" media="screen">
	
	#fixed {
		position: absolute;
		top: expression((document.documentElement.scrollTop || document.body.scrollTop) + this.offsetHeight - this.offsetHeight);
	}
	
	</style>
	<![endif]-->
	
	
</head>

<body>
	
	<div id="fixed">DIV en position: fixed;</div>
	
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	<p>Contenu du site internet ...</p>
	
</body>

</html>

UPDATE : Il est important de copier l'intégralité du code avec les balises commentaires propres à Internet Explorer, sinon le fix ne fonctionnera pas !