<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gatellier.be &#187; vertical-align</title>
	<atom:link href="http://www.gatellier.be/blog/tag/vertical-align/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gatellier.be/blog</link>
	<description>Interwebs with passion.</description>
	<lastBuildDate>Thu, 01 Jul 2010 12:17:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<atom:link rel='hub' href='http://www.gatellier.be/blog/?pushpress=hub'/>
		<item>
		<title>CSS: vertical-align:middle pour Internet Explorer 6 et 7</title>
		<link>http://www.gatellier.be/blog/ie-vertical-align-middle/</link>
		<comments>http://www.gatellier.be/blog/ie-vertical-align-middle/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 14:51:42 +0000</pubDate>
		<dc:creator>Marin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[bugfix]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[vertical-align]]></category>

		<guid isPermaLink="false">http://www.gatellier.be/blog/?p=276</guid>
		<description><![CDATA[Les expressions CSS de IE 6 et 7 permettent de centrer verticalement un élément et donc de simuler le 'vertical-align:middle'.]]></description>
			<content:encoded><![CDATA[<p>Depuis la fin des mises en pages en tableaux html, centrage vertical d'un élément dans son conteneur a toujours posé des problèmes.</p>

<h3>Internet Explorer et le vertical-align</h3>
<p>En cause, Internet Explorer dans les versions 6 et 7 (je ne parle même pas des versions antécédantes) ne supportent pas correctement la propriété <acronym title="Cascading Style Sheet">CSS</acronym> <strong><a href="http://www.w3.org/TR/CSS21/tables.html#value-def-table-cell" title="définition du display:table" hreflang="en"><code>display:table-cell</code></a></strong>.</p>

<p>En effet, le seul moyen correct de centrer verticalement un élément est de faire en sorte que l'élément parent se comporte comme une <a href="http://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align" title="définition du vertical-align" hreflang="en">cellule de tableau</a> (d'où des <a href="http://giveupandusetables.com/" hreflang="en" title="Dois-je renoncer et employer des tableaux?">réactions folkloriques</a>). </p>

<p>Le <code>display:table-cell</code> a été introduit dans <a href="http://msdn.microsoft.com/en-us/library/ms530751.aspx" title="Propriétés CSS rajoutées dans IE8" hreflang="en">Internet Explorer 8</a>. Avant ça, toutes les solutions avaient leurs revers&nbsp;: <strong><code>line-height</code></strong> qui ne permet pas d'avoir des espacements de lignes correct, hauteur des éléments impérativement fixe, <strong>hacks CSS</strong> mystérieux (dont on ne connaîtra pas le comportement dans les futurs navigateurs).</p>

<p>Bref, rien qui ne me satisfait pleinement.</p>


<h3>CSS vertical-align:middle;</h3>

<p>Dans Firefox 2 (pc), Firefox 3 (pc/mac), Chrome 1.0.154, Safari (4 pc, 3.2.1 mac), Opera 9.64 (pc/mac), Camino, Shira, IE8, le code suivant est bien rendu.</p>

<p style="text-align:center;"><a href="http://noscript.be/demo/vertical-align-middle/IE6-fix.htm"><img src="http://static.gatellier.be/i/090426/vertical-align-middle.png" alt="texte centré verticalement correctement avec vertical-align:middle dans les browsers CSS" /></a></p>

<h4>Le code <acronym title="HyperText Markup Language">HTML</acronym></h4>
<pre class="brush: html;">
&lt;div class=&quot;v&quot;&gt;
	&lt;div&gt;Ce texte devrait être centré verticalement&lt;/div&gt;
&lt;/div&gt;
</pre>

<h4>Le code <acronym title="HyperText Markup Language">CSS</acronym></h4>
<pre class="brush: css;">
&lt;style type=&quot;text/css&quot;&gt;
.v {
	display:table-cell;
	vertical-align:middle;
	/*les 3 lignes suivantes ne sont pas nécessaires*/
	background:#900;
	height:250px;
	width:150px;
}
.v div {
	/*non nécessaire, juste de la décoration pour mieux visualiser*/
	background:#090;
}
&lt;/style&gt;
</pre>

<p>Par contre dans IE 6 et 7, l'alignement vertical n'est pas pris en compte et la boîte de texte reste en haut de la boîte bleue.</p>

<p style="text-align:center;"><a href="http://noscript.be/demo/vertical-align-middle/IE6-fail.htm"><img src="http://static.gatellier.be/i/090426/vertical-align-middle-IE6.png" alt="texte centré verticalement incorrectement dans IE6" /></a></p>

<h3>Expressions CSS à la rescousse</h3>

<p><a href="/blog/css-pseudo-classes-internet-explorer/" title="CSS: Pseudo classes sur Internet Explorer">Encore une fois</a>, les <strong>expressions CSS d'Internet Explorer</strong> &ndash; qui, je sais, ne sont pas recommandées pour des raisons de performances et qui ont été supprimées d'IE8 &ndash; peuvent nous être bien utiles.</p>

<h4>Code</h4>

<pre class="brush: css;">
&lt;!--[if lt IE 8]&gt;
&lt;style type=&quot;text/css&quot;&gt;
.v {
	position:relative;
	width:expression(this.childNodes[0].offsetWidth+&quot;px&quot;);
}
.v div {
	position:absolute;
	top:50%;
	margin-top:expression(-this.offsetHeight/2);
}
&lt;/style&gt;
&lt;![endif]--&gt;
</pre>

<p>Le contenu sera positionné en absolu, à cinquante pourcent du top, par rapport à son conteneur. Il aura aussi une <strong>marge négative de la moitié de sa hauteur</strong>.</p>
<p>Comme, le contenu est placé en absolu, il sort du flux de la page. Sa largeur est donc reportée sur le conteneur.</p>

<h3>Remarques et limitations&nbsp;:</h3>
<ul>
	<li>voir la <strong><a href="http://noscript.be/demo/vertical-align-middle/IE6-fix.htm">démo</a></strong></li>
	<li>Les commentaires conditionnels sont employés pour cibler les version d'Internet Explorer inférieures à 8.</li>
	<li>Les expressions css ne sont pas exécutées si le navigateur à le JavaScript désactivé.</li>
	<li>Les impacts de preformance sont à tenir en compte&nbsp;: les expressions CSS sont recalculées à chaque changement de propriétés CSS dans la page (redimensionnement du navigateur etc,...)</li>
	<li>Le comportement d'un élément en <code>display:table-cell</code> est différent de celui d'un <code>display:block</code>. S'il doit prendre la largeur d'un conteneur, il faudra spécifier celle-ci.</li>
</ul><hr />
<p><small>© Marin for <a href="http://www.gatellier.be/blog">Gatellier.be</a>, 2009. |
<a href="http://www.gatellier.be/blog/ie-vertical-align-middle/">Permalink</a> |
<a href="http://www.gatellier.be/blog/ie-vertical-align-middle/#comments">6 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.gatellier.be/blog/ie-vertical-align-middle/&title=CSS: vertical-align:middle pour Internet Explorer 6 et 7">del.icio.us</a>
<br/>
Post tags: <a href="http://www.gatellier.be/blog/tag/bugfix/" rel="tag">bugfix</a>, <a href="http://www.gatellier.be/blog/tag/expression/" rel="tag">expression</a>, <a href="http://www.gatellier.be/blog/tag/fix/" rel="tag">fix</a>, <a href="http://www.gatellier.be/blog/tag/vertical-align/" rel="tag">vertical-align</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.gatellier.be/blog/ie-vertical-align-middle/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->