<?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>Harps &#187; Alignement vertical</title>
	<atom:link href="https://blog.developpez.com/harps/ptag/alignement-vertical/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/harps</link>
	<description></description>
	<lastBuildDate>Thu, 21 Nov 2013 09:28:53 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>HTML et alignement vertical</title>
		<link>https://blog.developpez.com/harps/p12348/html-css-javascript/html-et-alignement-vertical</link>
		<comments>https://blog.developpez.com/harps/p12348/html-css-javascript/html-et-alignement-vertical#comments</comments>
		<pubDate>Thu, 21 Nov 2013 09:19:13 +0000</pubDate>
		<dc:creator><![CDATA[Eric Berger]]></dc:creator>
				<category><![CDATA[HTML - CSS - JavaScript]]></category>
		<category><![CDATA[Alignement vertical]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/harps/?p=6</guid>
		<description><![CDATA[Le casse tête du jour: comment aligner du contenu verticalement (en bas) d&#8217;un conteneur si le contenu est plus petit que le conteneur, et de faire apparaître une barre de défilement s&#8217;il est plus grand? Ma solution: Ce n&#8217;est clairement pas la seule et probablement pas la meilleur, mais enfin, ça fait le job. J&#8217;utilise [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le casse tête du jour: comment aligner du contenu verticalement (en bas) d&rsquo;un conteneur si le contenu est plus petit que le conteneur, et de faire apparaître une barre de défilement s&rsquo;il est plus grand?</p>
<p>Ma solution:<br />
Ce n&rsquo;est clairement pas la seule  et probablement pas la meilleur, mais enfin, ça fait le job.<br />
J&rsquo;utilise un DIV comme conteneur et lui fixe une hauteur de 100% pour qu&rsquo;il s&rsquo;adapte lorsque l&rsquo;on redimensionne la fenêtre (il faut que tous ses parents aient une hauteur proportionnelle à la hauteur du body pour que ça fonctionne).<br />
Dans le conteneur, une table (aïe, j&rsquo;entends déjà les puristes geindre), une ligne et une cellule.<br />
Dans la cellule, un div avec un overflow:auto et une hauteur fixée en JavaScript (j&rsquo;entends encore le hurlement des puristes au loin). A mon avis, on n&rsquo;y coupe pas car seule une cellule peut s’aligner verticalement, et la cellule va forcément être poussée par son contenu (pas de barre de défilement). Si on essaie de mettre au div une hauteur relative à son contenant (la cellule), elle va juste s&rsquo;agrandir avec cette dernière et la barre de défilement n&rsquo;apparaîtra pas.</p>
<p>Un exemple valant mille mots, voici le résultat:<br />
<a href="http://jsfiddle.net/NwXyq/1/" title="A voir sur jsfiddle" target="_blank">A voir sur jsfiddle</a></p>
<p>Le HTML</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &lt;div id=&quot;context&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;!--&lt;div&gt;ceci est le contexte (la page ou le conteneur)&lt;/div&gt;--&amp;gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;div id=&quot;container&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;!--&lt;div&gt;Conteneur pour notre contenu à hauteur fixe alligné en bas&lt;/div&gt;--&amp;gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;table id=&quot;table&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td style=&quot;vertical-align: bottom&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div id=&quot;fixedHeight&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div id=&quot;naturalHeight&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- on peut ajouter ce que l'on veut dans ce div --&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus posuere, purus et mollis luctus, sem magna egestas turpis, a mattis enim ligula in arcu. In hac habitasse platea dictumst. Sed dapibus lacus in felis dapibus, vel ultricies orci rutrum. Mauris porttitor mauris sed diam tincidunt, id rhoncus est posuere. Ut nec augue sed ligula tempus tempor. Suspendisse arcu velit, feugiat eget vehicula vitae, tincidunt eget justo. Praesent id gravida tellus, in ultrices enim. Integer ut dapibus diam, at suscipit risus. Nulla facilisi. Etiam ipsum neque, tincidunt eu pretium vel, accumsan ut magna. Vestibulum et interdum augue, vel mollis velit.&lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/table&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &lt;/div&gt;</div></div>
<p>Le CSS</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#context {<br />
&nbsp; &nbsp; height:300px;/* valeur arbitraire, dans mon cas effectif, j'utilise 100% */<br />
&nbsp; &nbsp; width:50%;/* pas d'utilité particulière, si ce n'est l'esthétique de l'exemple */<br />
&nbsp; &nbsp; margin:50px;/* pas d'utilité particulière, si ce n'est l'esthétique de l'exemple */<br />
&nbsp; &nbsp; background: lightblue;<br />
}<br />
#container{<br />
&nbsp; &nbsp; background:lightgreen;<br />
&nbsp; &nbsp; height:100%;/* On prends tout l'espace disponible */<br />
}<br />
#table{<br />
&nbsp; &nbsp; height:100%;<br />
&nbsp; &nbsp; width:100%;<br />
&nbsp; &nbsp; max-height: 100%;<br />
&nbsp; &nbsp; max-width: 100%;<br />
}<br />
#table td{<br />
&nbsp; &nbsp; padding:0;/* ainsi la cellule ne mange pas d'espace et reste vraiment invisible*/<br />
}<br />
#fixedHeight {<br />
&nbsp; &nbsp; overflow: auto; /*la barre de défilement apparait quand le contenu est plus grand que le contenant */<br />
&nbsp; &nbsp; height: 0; /* hauteur initiale, sera mise à jour par le javascript */<br />
&nbsp; &nbsp; background:beige;<br />
}</div></div>
<p>Et le JavaScript</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var setHeight = function () {<br />
&nbsp; &nbsp; var f = $(&quot;#fixedHeight&quot;);<br />
&nbsp; &nbsp; var container = $(&quot;#context&quot;)[0];<br />
&nbsp; &nbsp; var availlableSpace = container.clientHeight;<br />
&nbsp; &nbsp; var contentHeight = $(f.children().first()).outerHeight();<br />
&nbsp; &nbsp; var fixedHeight = availlableSpace &amp;gt; contentHeight ? contentHeight : availlableSpace;<br />
&nbsp; &nbsp; f.css(&quot;height&quot;, fixedHeight);<br />
&nbsp; &nbsp; if (availlableSpace &amp;lt; contentHeight) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; f[0].scrollTop = contentHeight - availlableSpace;<br />
&nbsp; &nbsp; }<br />
};<br />
<br />
$(&amp;quot;#context&amp;quot;).resizable()<br />
&nbsp; &nbsp; .resize(setHeight);<br />
setHeight();</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
