<?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>Ars Longa, Vita Brevis &#187; макет</title>
	<atom:link href="http://blog.sjinks.pro/tag/layout/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sjinks.pro</link>
	<description>Quod scripsi, scripsi</description>
	<lastBuildDate>Mon, 06 Feb 2012 17:56:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Кросс-браузерный резиновый трёхколоночный макет в высоту окна</title>
		<link>http://blog.sjinks.pro/css/209-cross-browser-liquid-three-column-layout-full-height/</link>
		<comments>http://blog.sjinks.pro/css/209-cross-browser-liquid-three-column-layout-full-height/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 20:49:24 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[кросс-браузерное решение]]></category>
		<category><![CDATA[макет]]></category>
		<category><![CDATA[резиновый макет]]></category>
		<category><![CDATA[трёхколоночный макет]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=209</guid>
		<description><![CDATA[Кросс-браузерное решение для резинового макета с одинаковой высотой колонок и стопроцентной высотой Недавно понадобилось сверстать резиновый трёхколоночный макет с высотой 100% и колонками одинаковой высоты. К моему удивлению, это оказалось не очень простым делом: вместо планируемого получаса это заняло намного больше времени. Требования к макету: кросс-браузерность (куда без неё); минимальная высота: 100% (полное окно, независимо [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/209-cross-browser-liquid-three-column-layout-full-height/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Кросс-браузерное решение для резинового макета с одинаковой высотой колонок и стопроцентной высотой</em></h2>
<p>Недавно понадобилось сверстать резиновый трёхколоночный <a href="http://blog.sjinks.pro/tag/layout/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  макет">макет</a> с высотой 100% и колонками одинаковой высоты. К моему удивлению, это оказалось не очень простым делом: вместо планируемого получаса это заняло намного больше времени.</p>
<p>Требования к макету:</p>
<ul>
<li>кросс-браузерность (куда без неё);</li>
<li>минимальная высота: 100% (полное окно, независимо от высоты контента);</li>
<li>минимум кода;</li>
<li>все три колонки должны быть одинаковой высоты;</li>
<li>никакого JavaScript.</li>
</ul>
<p><span id="more-209"></span></p>
<p>Минимум кода означает минимум разметки:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20910">
        <div class="code xhtml" id="p209code10">
<span class="sc0">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">html</span> xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">head</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">meta</span> <span class="kw3">http-equiv</span><span class="sy0">=</span><span class="st0">&quot;Content-Type&quot;</span> <span class="kw3">content</span><span class="sy0">=</span><span class="st0">&quot;text/html; charset=UTF-8&quot;</span> <span class="sy0">/</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">title</span>&gt;</span>Three Column Liquid Layout<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">title</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">head</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;header&quot;</span>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">p</span>&gt;</span>Sed eleifend, sapien vel mollis euismod, sem velit semper ante...<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">p</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;left&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">p</span>&gt;</span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis sollicitudin dolor nec nunc iaculis tincidunt...<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">p</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;right&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">p</span>&gt;</span>Phasellus sollicitudin. Fusce ut tellus. Vivamus dapibus. Cras eu elit. Vestibulum ante ipsum primis in faucibus orci luctus et...<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">p</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;footer&quot;</span>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">html</span>&gt;</span>
        </div>
    </div>
</div>

<p><q>So far so good</q>, как любит говорить один мой коллега. Теперь переходим к разметке.</p>
<p>Начнём с общих определений:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20911">
        <div class="code css" id="p209code11">
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#800000</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">font</span><span class="sy0">:</span> <span class="re3">14px</span>/<span class="re3"><span class="nu0">120</span>%</span> Verdana<span class="sy0">,</span> Tahoma<span class="sy0">,</span> Arial<span class="sy0">,</span> Helvetica<span class="sy0">,</span> <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">90</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> 0 <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Теперь переходим к 100% высоте. Помним, что Konqueror/KHTML <a href="http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/#comment-163">имеет свою точку зрения</a> по поводу того, кто задаёт скроллинг; также не забываем про <a href="http://blog.sjinks.pro/tag/ie6/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE6">IE6</a>, который <a href="http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/">не понимает</a> <code>min-height</code></p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20912">
        <div class="code css" id="p209code12">
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">:</span>not<span class="br0">&#40;</span><span class="re2">:nth-</span>child<span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">visible</span><span class="sy0">;</span> <span class="coMULTI">/* KHTML сам нарисует скроллинг, не будем ему мешать */</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="kw2">auto</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span> <span class="coMULTI">/* для IE6 */</span><br />
&nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#container</span> <span class="br0">&#123;</span> <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">visible</span><span class="sy0">;</span> <span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Для IE6 мы должны задать <code>overflow: visible</code>, в противном случае контент будет нещадно обрезаться.</p>
<p>Задаем заголовок и подвал:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20913">
        <div class="code css" id="p209code13">
<span class="re0">#header</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">3em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">red</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#FFF</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">z-index</span><span class="sy0">:</span> <span class="nu0">1000</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.column</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-top</span><span class="sy0">:</span> <span class="re3">3em</span> !important<span class="sy0">;</span> <span class="coMULTI">/* компенсация высоты заголовка */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#footer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">3em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#FFF</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">green</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">z-index</span><span class="sy0">:</span> <span class="nu0">1000</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">-3em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Заголовок позиционируем абсолютно, так как контейнер <code>#container</code> имеет как минимум стопроцентную высоту: задать высоту <code>100%-3em</code> будет проблематично. Поэтому, считая, что высота заголовка нам известна (а так обычно всегда), мы просто помещаем заголовок "на территорию" контейнера, а высота заголовка будет компенсирована верхним отступом у колонок. Даже если нам придётся задать фоновый рисунок у <code>#container</code>, мы можем компенсировать высоту заголовка путём использования <code>background-position</code>.</p>
<p>Аналогично (только хуже <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) с футером: его нужно поднять вверх на всю его высоту (отсюда относительное позиционирование и <code>z-index</code>)&nbsp;&mdash;&nbsp;как и в случае с заголовком, для поддержания стопроцентной высоты необходимо, чтобы он располагался "на территории" контейнера.</p>
<p>Теперь переходим к <a href="http://blog.sjinks.pro/css/48-liquid-three-column-layout-with-right-sidebars/">трём колонкам</a>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20914">
        <div class="code css" id="p209code14">
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-left</span><span class="sy0">:</span> <span class="re3">220px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-right</span><span class="sy0">:</span> <span class="re3">200px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span> <span class="coMULTI">/* IE 5.01 */</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="coMULTI">/**/</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">lime</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#left</span><span class="sy0">,</span> <span class="re0">#right</span><span class="sy0">,</span> <span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">1000em</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">-997em</span> !important<span class="sy0">;</span> <span class="coMULTI">/* компенсация высоты футера */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#left</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">220px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span>images/tile-2.jpg<span class="br0">&#41;</span> <span class="kw2">repeat</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">right</span><span class="sy0">:</span> <span class="re3">220px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#left</span> <span class="br0">&#123;</span> <span class="coMULTI">/* У IE6 всё не как у людей */</span><br />
&nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> <span class="re3">200px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#right</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">200px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span>images/tile-3.jpg<span class="br0">&#41;</span> <span class="kw2">repeat</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span>images/tile-1.jpg<span class="br0">&#41;</span> <span class="kw2">repeat</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Теперь идут хаки. По слухам, в IE/Mac вышеприведённая техника для создания колонок одинаковой высоты не работает. Вернее, он работает, но страницу разносит по высоте (добавляется невидимый <code>padding</code>). Мне-то всё равно, но так как исправить просто (в смысле, сделать колонки разной высоты), то почему бы и нет:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20915">
        <div class="code css" id="p209code15">
<span class="re0">#left</span><span class="sy0">,</span> <span class="re0">#right</span><span class="sy0">,</span> <span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">3em</span><span class="sy0">;</span> <span class="coMULTI">/* компенсация высоты футера */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="coMULTI">/* Прячем от IE/Mac \*/</span><br />
<span class="re0">#left</span><span class="sy0">,</span> <span class="re0">#right</span><span class="sy0">,</span> <span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">1000em</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">-997em</span> !important<span class="sy0">;</span> <br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/**/</span>
        </div>
    </div>
</div>

<p>Переходим к Опере. Старые версии (7.0-7.2) не обрезают колонки по высоте. На помощь приходит <a href="http://www.positioniseverything.net/easyclearing.html">EasyClearing</a>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20916">
        <div class="code css" id="p209code16">
<span class="re0">#container</span><span class="re2">:after </span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">content</span><span class="sy0">:</span> <span class="st0">'EasyClearing'</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">visibility</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#container</span> <span class="br0">&#123;</span> <span class="kw1">display</span><span class="sy0">:</span> inline-<span class="kw2">block</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
<span class="coMULTI">/*\*/</span><br />
<span class="re0">#container</span> <span class="br0">&#123;</span> <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
<span class="coMULTI">/**/</span>
        </div>
    </div>
</div>

<p>Но, как это обычно бывает в жизни, исправил одну ошибку&nbsp;&mdash;&nbsp;вылезла другая: EasyClearing портит разметку в IE&nbsp;5.01. По счастью, это легко лечится путём добавления <code>float: left</code> контейнеру <code>#container</code>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20917">
        <div class="code css" id="p209code17">
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span> <span class="coMULTI">/* IE 5.01 */</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="coMULTI">/**/</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Тем не менее, мы исправили не все глюки в Опере. Для Opera 8, у которой есть свои глюки в обработке overflow: hidden, нам придётся убрать <code>margin-bottom</code>/<code>padding-bottom</code> с самих колонок и применить их элементу внутри колонок. Либо так:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p20918">
        <div class="code css" id="p209code18">
<span class="co1">@media all and (min-width: 0px) {</span><br />
&nbsp; &nbsp; <span class="re0">#left</span><span class="sy0">,</span> <span class="re0">#right</span><span class="sy0">,</span> <span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin-bottom</span><span class="sy0">:</span> 0 !important<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">3em</span> !important<span class="sy0">;</span> <span class="coMULTI">/* Компенсация высоты футера */</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="re0">#left</span><span class="re2">:before</span><span class="sy0">,</span> <span class="re0">#right</span><span class="re2">:before</span><span class="sy0">,</span> <span class="re0">#content</span><span class="re2">:before </span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">content</span><span class="sy0">:</span> <span class="st0">'EasyClearing'</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">inherit</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding-top</span><span class="sy0">:</span> <span class="re3">1000em</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">-1000em</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p><a href="http://blog.sjinks.pro/test/3col/3col_h100.html" rel="nofollow">Тестовая страница</a>.</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/209-cross-browser-liquid-three-column-layout-full-height/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/css/209-cross-browser-liquid-three-column-layout-full-height/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Размещение блока неизвестного размера в центре страницы при помощи CSS</title>
		<link>http://blog.sjinks.pro/css/59-placing-object-of-unknown-size-in-the-center-of-the-page/</link>
		<comments>http://blog.sjinks.pro/css/59-placing-object-of-unknown-size-in-the-center-of-the-page/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 06:43:33 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[макет]]></category>
		<category><![CDATA[ошибка]]></category>
		<category><![CDATA[хак]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=59</guid>
		<description><![CDATA[Как разместить блок неизвестного размера точно в центре страницы Гуляя по Internet, совершенно случайно натолкнулся на статью "Стили CSS - центрируем объекты по центру веб-страницы". Первой мыслью было, что автор начнёт рассказывать про вертикальное центрирование и всем известный margin: 0 auto. Но не тут-то было, всё гораздо интереснее Статья, на которую я наткнулся&#160;&#8212;&#160;это перевод статьи [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/59-placing-object-of-unknown-size-in-the-center-of-the-page/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Как разместить блок неизвестного размера точно в центре страницы</em></h2>
<p>Гуляя по Internet, совершенно случайно натолкнулся на статью "<a href="http://www.w3school.ru/blog/css/how-to-center-an-object-exactly-in-the-center.html">Стили CSS - центрируем объекты по центру веб-страницы</a>".</p>
<p>Первой мыслью было, что автор начнёт рассказывать про <a href="http://blog.sjinks.pro/css/24-vertical-align-without-tables/">вертикальное центрирование</a> и всем известный <code>margin: 0 auto</code>. Но не тут-то было, всё гораздо интереснее <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <span id="more-59"></span></p>
<p>Статья, на которую я наткнулся&nbsp;&mdash;&nbsp;это перевод статьи Криса Койера (Chris Coyier) <a href="http://css-tricks.com/quick-css-trick-how-to-center-an-object-exactly-in-the-center/">Quick CSS Trick: How To Center an Object Exactly In The Center</a>. При этом высота и ширина центрируемого объекта в статье полагаются известными. Что ж, я ожидал чего-то большего.</p>
<p>Я сначала вкратце опишу идею Криса, потом расскажу, почему так не надо делать и затем покажу, что простого решения, удовлетворяющего всем требованиям, нет <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Начнём. Пусть у нас имеется, например, <code>&lt;div&gt;</code> размерами 200&times;100&nbsp;пикселей. Поступаем следующим образом:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5929">
        <div class="code css" id="p59code29">
<span class="re1">.centered</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">fixed</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3"><span class="nu0">50</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> <span class="re3"><span class="nu0">50</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">-50px</span><span class="sy0">;</span> <span class="coMULTI">/* 50% высоты */</span><br />
&nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">-100px</span><span class="sy0">;</span> &nbsp;<span class="coMULTI">/* 50% ширины */</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">100px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">200px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Начнём с того, что <a href="http://blog.sjinks.pro/tag/ie6/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE6">IE6</a> <code>position: fixed</code> очень плохо понимает. Для него нужно добавить небольшой <a href="http://blog.sjinks.pro/tag/hack/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  хак">хак</a>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5930">
        <div class="code css" id="p59code30">
<span class="sy0">*</span> html <span class="re1">.centered</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Теперь о минусах:</p>
<ul>
<li>размеры блока должны быть известны;</li>
<li>при уменьшении окна так, чтобы оно перекрывало отцентрированный объект, скроллер хотя и появляется, но прокрутить отцентрированный объект не сможет (из-за <code>position: fixed</code>);</li>
<li>при уменьшении ширины окна можно дойти до такого размера, когда у объекта границы станут отрицательными.</li>
</ul>
<p>Теперь о реализации центрирования в общем виде (считаем, что высота объекта нам неизвестна; ширина же должна быть известной, так как блочный элемент, не имеющий явно заданной ширины автоматически получает <code>width: 100%</code>). Решение основывается на идеях, представленных в следующих статьях:</p>
<ul>
<li><a href="http://blog.sjinks.pro/css/24-vertical-align-without-tables/"><strong>Вертикальное выравнивание без таблиц</strong></a>;</li>
<li><a href="http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/"><strong>Нижний колонтитул&nbsp;&mdash;&nbsp;в нижней части страницы</strong></a>;</li>
<li><a href="http://blog.sjinks.pro/css/55-css-hacks-and-filters-for-different-browsers/"><strong>Подборка CSS-хаков для различных браузеров</strong></a>.</li>
</ul>
<p>Разметка:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5931">
        <div class="code xhtml" id="p59code31">
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;outer&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;middle&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;inner&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ego autem quem timeam lectorem, cum ad te ne Graecis quidem cedentem in philosophia audeam scribere?<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
        </div>
    </div>
</div>

<p>Прочитавшим статью "<a href="http://blog.sjinks.pro/css/24-vertical-align-without-tables/">Вертикальное выравнивание без таблиц</a>" должно быть ясно, откуда "растут ноги" у этой разметки.</p>
<p>Стили будут почти аналогичными приведённым в той статье, но с небольшими изменениями для IE.<br />
Начнём со стилей для нормальных браузеров:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5932">
        <div class="code css" id="p59code32">
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span> <span class="coMULTI">/* В этом случае нельзя использовать min-height. Для таблиц (элементов с display: table) мир устроен иначе */</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> table<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">600px</span><span class="sy0">;</span> <span class="coMULTI">/* Если ширина не задана явно, будет 100% */</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> 0 <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#middle</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">table-row</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#inner</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">table-cell</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Теперь стили для Ишака. Я бы поместил их в условный комментарий, например, так:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5933">
        <div class="code xhtml" id="p59code33">
<span class="sc-2">&lt;!--[if lte IE 7]&gt;</span><br />
<span class="sc-2"> &nbsp; &nbsp;&lt;style type=&quot;text/css&quot;&gt;...&lt;/style&gt;</span><br />
<span class="sc-2">&lt;![endif]--&gt;</span>
        </div>
    </div>
</div>

<p>Вышеприведённый условный комментарий <strong>не должен</strong> работать для <a href="http://blog.sjinks.pro/tag/ie8/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE8">IE8</a>, и это сделано специально: во-первых, <a href="http://blog.sjinks.pro/tag/ie8/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE8">IE8</a> поддерживает <code>display: table</code>, <code>display: table-row</code> и <code>display: table-cell</code>; во-вторых, будучи <a href="http://blog.sjinks.pro/css/27-why-microsoft-calls-alpha-beta-or-what-acid-tests-are-for/">бетой</a>, он не поддерживает <code>vertical-align</code> ни в каком виде. В общем, когда Microsoft выпустит полноценный браузер, тогда и будем думать <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Стили для Internet Explorer:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5934">
        <div class="code css" id="p59code34">
<span class="sy0">*</span> <span class="sy0">&gt;</span> html body <span class="br0">&#123;</span> <span class="coMULTI">/* Выравниваем блок по центру для IE4-IE5.5 */</span><br />
&nbsp; &nbsp; <span class="kw1">text-align</span><span class="sy0">:</span> <span class="kw2">center</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#middle</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3"><span class="nu0">50</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span> <span class="coMULTI">/* Не используем абсолютное позиционирование, чтобы избежать проблем с прокруткой */</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#inner</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">50</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Если посмотреть на то, что <a href='http://static.sjinks.info/wp-content/uploads/2008/04/center0.html'>получилось</a>, можно заметить, что это один из тех случаев, когда код работает корректно в IE6, но не в <a href="http://blog.sjinks.pro/tag/ie7/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE7">IE7</a> (последний будет показывать совершенно ненужный отступ снизу). Если вспомнить статью "<a href="http://blog.sjinks.pro/css/24-vertical-align-without-tables/">Вертикальное выравнивание без таблиц</a>"), то там мы ставили <code>overflow: hidden</code> элементу <code>#outer</code>, чтобы избежать подобного рода неприятностей в IE6/7. И, хотя в IE6 можно обойтись и без этого (перейдя от абсолютного позиционирования к относительному), с IE7 всё не так просто. В качестве быстрого исправления можно предложить такой вариант:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5935">
        <div class="code css" id="p59code35">
<span class="sy0">*</span><span class="re2">:first-child</span><span class="sy0">+</span>html <span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; overflow-x<span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Что характерно, будет работать хоть <code>overflow-x</code>, хоть <code>overflow-y</code>.</p>
<p>В <a href='http://static.sjinks.info/wp-content/uploads/2008/04/center1.html'>результате</a> получаем код, который работает нормально везде, кроме IE7: в IE7 при уменьшении размера окна по вертикали полоса прокрутки появляться не будет. Сделать <em>нормальную</em> прокрутку непосредственно для элемента <code>#outer</code> также представляется проблематичным&nbsp;&mdash;&nbsp;нижний отступ будет слишком большим. Поэтому остаётся одно решение&nbsp;&mdash;&nbsp;таблица. Причём можно сделать так, что таблицу будет видеть только IE7:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5936">
        <div class="code xhtml" id="p59code36">
<span class="sc-2">&lt;!--[if IE 7]&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;outer&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;![endif]--&gt;</span><br />
&nbsp; &nbsp; &nbsp;<span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;outer&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;middle&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;inner&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ego autem quem timeam lectorem, cum ad te ne Graecis quidem cedentem in philosophia audeam scribere? quamquam a te ipso id quidem facio provocatus gratissimo mihi libro, quem ad me de virtute misisti. Sed ex eo credo quibusdam usu venire; ut abhorreant a Latinis, quod inciderint in inculta quaedam et horrida, de malis Graecis Latine scripta deterius. quibus ego assentior, dum modo de isdem rebus ne Graecos quidem legendos putent. res vero bonas verbis electis graviter ornateque dictas quis non legat? nisi qui se plane Graecum dici velit, ut a Scaevola est praetore salutatus Athenis Albucius.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc-2">&lt;!--[if IE 7]&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;![endif]--&gt;</span>
        </div>
    </div>
</div>

<p>По большому счёту, это извращение&nbsp;&mdash;&nbsp;ибо проще всего использовать таблицу для всех браузеров. Но проще не значит лучше, ибо очень часто встречаются ситуации, когда заказчики требуют, чтобы вёрстка была семантической (а когда видят "незапланированную таблицу", начинают громко ругаться). Правда, в этом случае для IE7 <a href="http://blog.sjinks.pro/tag/semantics/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  семантика">семантика</a> теряется, но, как заметил <cite><a href="http://pokrovskii.com/">Максим Покровский</a></cite>, <q cite="http://blog.sjinks.pro/css/53-cross-browser-hybrid-css-menu-without-javascript/#comment-26">для него [IE], вообще, много чего теряется&hellip;</q>.</p>
<p>Итак, для комбинированного решения у нас получаются следующие стили для IE:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5937">
        <div class="code css" id="p59code37">
<span class="sy0">*</span> <span class="sy0">&gt;</span> html body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">text-align</span><span class="sy0">:</span> <span class="kw2">center</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#middle</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3"><span class="nu0">50</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#inner</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">50</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span><span class="re2">:first-child</span><span class="sy0">+</span>html table<span class="re1">.outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">600px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> 0 <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span><span class="re2">:first-child</span><span class="sy0">+</span>html table<span class="re1">.outer</span> tbody <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Результат можно посмотреть на <a href='http://static.sjinks.info/wp-content/uploads/2008/04/center.html'>этой странице</a>.</p>
<p>Есть еще один вариант решения, но он полагается на использование JavaScript в IE:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p5938">
        <div class="code xhtml" id="p59code38">
<span class="sc0">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">html</span> xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">head</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">title</span>&gt;</span>Centering<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">title</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">style</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/css&quot;</span>&gt;</span><br />
html, body {<br />
&nbsp; &nbsp; margin: 0;<br />
&nbsp; &nbsp; padding: 0;<br />
&nbsp; &nbsp; height: 100%;<br />
&nbsp; &nbsp; width: 100%;<br />
}<br />
<br />
html {<br />
&nbsp; &nbsp; display: table;<br />
&nbsp; &nbsp; overflow: auto;<br />
}<br />
<br />
body {<br />
&nbsp; &nbsp; display: table-cell;<br />
&nbsp; &nbsp; vertical-align: middle;<br />
}<br />
<br />
.item {<br />
&nbsp; &nbsp; margin: 0 auto;<br />
&nbsp; &nbsp; width: 600px;<br />
}<br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">style</span>&gt;</span><br />
<span class="sc-2">&lt;!--[if lte IE 7]&gt;</span><br />
<span class="sc-2">&lt;style type=&quot;text/css&quot;&gt;</span><br />
<span class="sc-2">* &gt; html body {</span><br />
<span class="sc-2"> &nbsp; &nbsp;text-align: center;</span><br />
<span class="sc-2">}</span><br />
<br />
<span class="sc-2">.item {</span><br />
<span class="sc-2"> &nbsp; &nbsp;margin-top: expression(this.offsetHeight &lt; this.parentNode.offsetHeight ? parseInt((this.parentNode.offsetHeight - this.offsetHeight) / 2) + 'px' : 0);</span><br />
<span class="sc-2">}</span><br />
<span class="sc-2">&lt;/style&gt;</span><br />
<span class="sc-2">&lt;![endif]--&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">head</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;item&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Ego autem quem timeam lectorem, cum ad te ne Graecis quidem cedentem in philosophia audeam scribere? quamquam a te ipso id quidem facio provocatus gratissimo mihi libro, quem ad me de virtute misisti. Sed ex eo credo quibusdam usu venire; ut abhorreant a Latinis, quod inciderint in inculta quaedam et horrida, de malis Graecis Latine scripta deterius. quibus ego assentior, dum modo de isdem rebus ne Graecos quidem legendos putent. res vero bonas verbis electis graviter ornateque dictas quis non legat? nisi qui se plane Graecum dici velit, ut a Scaevola est praetore salutatus Athenis Albucius.<br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">html</span>&gt;</span>
        </div>
    </div>
</div>

<p>Результат можно посмотреть <a href='http://static.sjinks.info/wp-content/uploads/2008/04/center2.html'>здесь</a>.</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/59-placing-object-of-unknown-size-in-the-center-of-the-page/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/css/59-placing-object-of-unknown-size-in-the-center-of-the-page/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Резиновый трехколоночный макет с правосторонними сайдбарами</title>
		<link>http://blog.sjinks.pro/css/48-liquid-three-column-layout-with-right-sidebars/</link>
		<comments>http://blog.sjinks.pro/css/48-liquid-three-column-layout-with-right-sidebars/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 01:24:37 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[макет]]></category>
		<category><![CDATA[резиновый макет]]></category>
		<category><![CDATA[трёхколоночный макет]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/css/48-liquid-three-column-layout-with-right-sidebars/</guid>
		<description><![CDATA[Кросс-браузерный семантически корректный резиновый макет с тремя колонками (сайдбары справа) Очередной раз попав не туда, куда надо из Google, я натолкнулся на статью "Трехколоночный макет на CSS с одинаковой высотой колонок". Да, трехколоночные макеты (да еще и резиновые!) очень популярны, я смотрю Но, несмотря на популярность таких макетов, многие верстальщики почему-то не хотят учиться и [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/48-liquid-three-column-layout-with-right-sidebars/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Кросс-браузерный семантически корректный <a href="http://blog.sjinks.pro/tag/liquid-layout/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  резиновый макет">резиновый макет</a> с тремя колонками (сайдбары справа)</em></h2>
<p>Очередной раз попав не туда, куда надо из Google, я натолкнулся на статью "<a href="http://dimox.name/3-column-css-layout-right-sidebars/">Трехколоночный макет на CSS с одинаковой высотой колонок</a>". Да, трехколоночные макеты (да еще и резиновые!) очень популярны, я смотрю <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Но, несмотря на популярность таких макетов, многие верстальщики почему-то <del datetime="2008-06-19T08:30:52+00:00">не хотят учиться и</del> городят целый огород на div'ах.<span id="more-48"></span></p>
<p>В указанной статье приводится следующая <a href="http://blog.sjinks.pro/tag/markup/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  разметка">разметка</a> (я убрал пустые строки и изменил форматирование):</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4843">
        <div class="code xhtml" id="p48code43">
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;wrapper&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;header&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;sub-container&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;wrpr&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;left&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;right&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;footer&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
        </div>
    </div>
</div>

<p>Что мы видим: пример, как верстать <strong>не надо</strong>. Может быть, сказано слишком резко, но на мой взгляд, суп из div'ов (с глубиной вложенности 6) ничем не лучше табличной вёрстки (табличная вёрстка будет даже компактнее). Кроме того, б<em>о</em>льшая часть этого супа не несёт семантической нагрузки. И вообще, при верстке нужно руководствоваться принципом <abbr title="Keep It Simple, Student">KISS</abbr>, но это моё сугубо личное мнение.</p>
<p>Попробуем переделать.<br />
Начнём с разметки:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4844">
        <div class="code xhtml" id="p48code44">
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;header&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;col1&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;col2&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;footer&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
        </div>
    </div>
</div>

<p>Как я уже отмечал в предыдущих статьях, названиям классов и атрибутам <code>id</code> нужно давать семантически значимые имена, но в качестве тестового примера пойдут и такие.</p>
<p>Простая разметка&nbsp;&mdash;&nbsp;простые стили:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4845">
        <div class="code css" id="p48code45">
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html <span class="br0">&#123;</span> <span class="coMULTI">/* Для IE6 и IE7 */</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">min-width</span><span class="sy0">:</span> <span class="re3">50em</span><span class="sy0">;</span> <span class="coMULTI">/* #container.paddingRight + #col1.offsetWidth + #col2.offsetWidth */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-right</span><span class="sy0">:</span> <span class="re3">25em</span><span class="sy0">;</span> <span class="coMULTI">/* #col1.offsetWidth + #col2.offsetWidth */</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="coMULTI">/*\*/</span><br />
<span class="sy0">*</span> html <span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">1</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/**/</span><br />
<br />
<span class="re1">.column</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">1002em</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">-1000em</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#col1</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">10em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#col2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">15em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">10em</span><span class="sy0">;</span> <span class="coMULTI">/* #col1.offsetWidth */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#footer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Для краткости презентационные стили (aka расцветка) опущены.</p>
<p>Тестовая страница доступна <a href="http://blog.sjinks.pro/test/3col/3col_simple.html">здесь</a>. Кстати, разметка получилась даже проще, чем <a href="http://trifler.ru/blog/i/users/ushablon.htm">здесь</a> <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Но <a href="http://blog.sjinks.pro/tag/layout/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  макет">макет</a> не был бы так хорош, если бы не позволял с лёгкостью добавлять отступы, границы и бордюры. В статье "<a href="http://blog.sjinks.pro/css/31-ie-and-general-case-of-two-column-liquid-layouts/"><strong>IE7/8 и общий случай двухколоночной резиновой вёрстки</strong></a>" я показывал, как получаются формулы для вычисления значений границ и иже с ними (вспоминаем про эквивалентность преобразований), поэтому здесь приведу только конечный результат:</p>
<table cellpadding="2" cellspacing="1" class="bordered">
<thead align="left">
<tr>
<th>Элемент</th>
<th>Свойство</th>
<th>Формула</th>
</tr>
</thead>
<tbody>
<tr>
<td>body</td>
<td>min-width</td>
<td><code>(#container.offsetWidth - #container.width) + (#content.offsetWidth - #content.width) + #col1.offsetWidth + #col2.offsetWidth</code></td>
</tr>
<tr>
<td>#container</td>
<td>padding-right</td>
<td><code>(#content.offsetWidth - #content.width) + #col1.offsetWidth + #col2.offsetWidth</code></td>
</tr>
<tr>
<td>#content</td>
<td>margin-left</td>
<td><code>=#container.paddingLeft</code></td>
</tr>
<tr>
<td>#col1</td>
<td>margin-left</td>
<td><code>=#content.marginRight</code></td>
</tr>
<tr>
<td>#col2</td>
<td>margin-left</td>
<td><code>#col1.offsetWidth + #col2.желаемый_marginLeft</code></td>
</tr>
<tr>
<td>#col1, #col2</td>
<td>margin-right</td>
<td><code>-100%</code></td>
</tr>
</tbody>
</table>
<p>В <code>#container.paddingRight</code> входит желаемый <code>#col2.marginRight</code> (но у Opera есть некоторые проблемы с его отображением).</p>
<p>Из-за того, что все колонки имеют равную высоту, отобразить <code>border-bottom</code> у них не представилось возможным.</p>
<p>Для <a href="http://blog.sjinks.pro/tag/ie8/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE8">IE8</a> добавляются следующие изменения:</p>
<ul>
<li><code>#col1.marginLeft</code> устанавливается в сумму горизонтальных отступов, границ и бордюров элемента <code>#content</code>;</li>
<li><code>#col2.marginLeft</code> увеличивается на величину <code>#col1.marginLeft</code>.</li>
</ul>
<p>Тестовая страница для экспериментов находится <a href="http://blog.sjinks.pro/test/3col/3col.html">здесь</a>.</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4846">
        <div class="code css" id="p48code46">
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">font</span><span class="sy0">:</span> <span class="re3">12px</span> Verdana<span class="sy0">,</span> Tahoma<span class="sy0">,</span> Arial<span class="sy0">,</span> Helvetica<span class="sy0">,</span> <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">min-width</span><span class="sy0">:</span> <span class="re3">81em</span><span class="sy0">;</span> <span class="coMULTI">/* (38.5 + 0.5 + 2*1 + 2*1) + (2*1 + 2*1 + 0.5) + (10 + 2*1 + 2*1) + (15 + 0.5 + 2*1 + 2*1) = 43 + 4.5 + 14 + 19.5 = 57 + 24 */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-right</span><span class="sy0">:</span> <span class="re3">38.5em</span><span class="sy0">;</span> <span class="coMULTI">/* (2*1 + 2*1 + 0.5) + (10 + 2*1 + 2*1) + (15 + 0.5 + 2*1 + 2*1) + желаемый margin-right для #col2 (0.5em) */</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-left</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-top</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">1em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="kw2">solid</span> <span class="kw1">black</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="coMULTI">/*\*/</span><br />
<span class="sy0">*</span> html <span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">1</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/**/</span><br />
<br />
<span class="re1">.column</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">1002em</span> !important<span class="sy0">;</span> <span class="coMULTI">/* Фактически, padding-bottom = 2em */</span><br />
&nbsp; &nbsp; <span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">-1000em</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="kw2">solid</span> <span class="kw2">green</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">1em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#col1</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">10em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">1em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="kw2">solid</span> <span class="kw2">red</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span><span class="re2">:first-</span>child<span class="coMULTI">/**/</span><span class="sy0">+</span>html <span class="re0">#col1</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">4.5em</span><span class="sy0">;</span> <span class="coMULTI">/* #col1.paddingLeft + #col1.paddingRight + #col1.borderLeft + #col1.borderRight + #col2.желаемый_marginLeft */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#col2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">15em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">14.5em</span><span class="sy0">;</span> <span class="coMULTI">/* #col1.paddingLeft + #col1.paddingRight + #col1.borderLeft + #col1.borderRight + #col2.желаемый_marginLeft + #col1.width */</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">1em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="kw2">solid</span> <span class="kw1">blue</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span><span class="re2">:first-</span>child<span class="coMULTI">/**/</span><span class="sy0">+</span>html <span class="re0">#col2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">19em</span><span class="sy0">;</span> <span class="coMULTI">/* #col2.marginLeft + #col1.marginLeft */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#footer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/48-liquid-three-column-layout-with-right-sidebars/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/css/48-liquid-three-column-layout-with-right-sidebars/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Легко изменяемый макет фиксированной ширины</title>
		<link>http://blog.sjinks.pro/css/41-easy-changeable-fixed-size-layout/</link>
		<comments>http://blog.sjinks.pro/css/41-easy-changeable-fixed-size-layout/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 16:26:19 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[жесткий макет]]></category>
		<category><![CDATA[макет]]></category>
		<category><![CDATA[семантика]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/css/41-easy-changeable-fixed-size-layout/</guid>
		<description><![CDATA[Ещё один способ вёрстки макетов фиксированной ширины Прогуливаясь по Internet в поисках неизвестно чего, я набрёл на статью годичной давности, в которой приводится рецепт по созданию легко изменяемого макета фиксированной ширины. Смысл был таков (авторская орфография и пунктуация сохранены): Создадим простейший трехколоночный шаблон, с блоками, фиксированной ширины. Блок контента расположим слева, а два колоночных блока [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/41-easy-changeable-fixed-size-layout/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Ещё один способ вёрстки макетов фиксированной ширины</em></h2>
<p>Прогуливаясь по Internet в поисках неизвестно чего, я набрёл на <a href="http://higher.com.ua/article/55/legko-izmenyaemyi-maket-fiksirovannoi-shiriny">статью годичной давности</a>, в которой приводится рецепт по созданию легко изменяемого макета фиксированной ширины.<span id="more-41"></span></p>
<p>Смысл был таков (авторская орфография и пунктуация сохранены):</p>
<blockquote cite="http://higher.com.ua/article/55/legko-izmenyaemyi-maket-fiksirovannoi-shiriny">Создадим простейший трехколоночный шаблон, с блоками, фиксированной ширины. Блок контента расположим слева, а два колоночных блока помещаем справа от контента, один за другим. Идея заключается в следующем, если мы расположим три блока, с float:left друг за другом, то при уменьшении размера экрана, они сместятся вниз, один под другой. При этом блок с контентом всегда будет вверху, что есть несомненно важным моментом в структурировании информации.</blockquote>
<p>Пока всё хорошо. В принципе, задача очень простая, вполне по силам студенту-первокурснику. Я не ожидал найти для себя что-либо новое, так как делал подобные вещи сотни раз. Но одна вещь меня поразила: <a href="http://blog.sjinks.pro/tag/markup/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  разметка">разметка</a>.</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4151">
        <div class="code xhtml" id="p41code51">
<span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;wrapper&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;mainContentWrapper&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;mainContent&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;firstNavColumn&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;secondNavColumn&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
        </div>
    </div>
</div>

<p>На мой взгляд, как минимум один &lt;div&gt; здесь явно лишний. Автор оправдывает это тем, что <q cite="http://higher.com.ua/article/55/legko-izmenyaemyi-maket-fiksirovannoi-shiriny">это необходимость, благодаря которой мы сможем более гибко и легко позиционировать блоки, для дальнейшего их смещения при изменении ширины экрана</q>.</p>
<p>Естественно, мне стало интересно, возможно ли избавиться от лишних элементов, не несущих семантической нагрузки?</p>
<p>Начнем с разметки:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4152">
        <div class="code xhtml" id="p41code52">
<span class="sc2">&lt;<span class="kw2">body</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clearfix&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;nav1&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;nav2&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
        </div>
    </div>
</div>

<p>В реальной жизни имеет смысл использовать семантически значимые идентификаторы и имена классов.</p>
<p>Теперь таблица стилей:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4153">
        <div class="code css" id="p41code53">
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">font</span><span class="sy0">:</span> <span class="re3">1.1em</span>/<span class="re3">1.6em</span> Verdana<span class="sy0">,</span> Tahoma<span class="sy0">,</span> Arial<span class="sy0">,</span> Helvetica<span class="sy0">,</span> <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#EEE</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#000</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">min-width</span><span class="sy0">:</span> <span class="re3">760px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.clearfix</span><span class="re2">:after </span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">content</span><span class="sy0">:</span> <span class="st0">&quot;.&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">visibility</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">&gt;</span>body <span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> inline-<span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.column</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<br />
<span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">456px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="re3">21px</span> <span class="re3">10px</span> <span class="re3">10px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">2px</span> <span class="kw2">solid</span> <span class="re0">#BBB</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#FFF</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#nav1</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">200px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> 0 <span class="re3">11px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#nav2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">200px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> 0 <span class="re3">11px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> 0 0 <span class="re3">20px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Стили для IE:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p4154">
        <div class="code css" id="p41code54">
<span class="sy0">*</span> html body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">955px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#content</span><span class="sy0">,</span> <span class="sy0">*</span> html <span class="re0">#nav1</span><span class="sy0">,</span> <span class="sy0">*</span> html <span class="re0">#nav2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">inline</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="coMULTI">/*\*/</span><br />
<span class="sy0">*</span> html <span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">1</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/**/</span>
        </div>
    </div>
</div>

<p><a href='http://static.sjinks.info/wp-content/uploads/2008/03/fixed.html' title='fixed.html'>Живой пример</a>.<br />
<a href="http://browsershots.org/http://static.sjinks.info/wp-content/uploads/2008/03/fixed.html">Скриншоты</a>.</p>
<p>Несколько замечаний:</p>
<ul>
<li>на самом деле далеко не все <a href="http://blog.sjinks.pro/tag/css/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  CSS">CSS</a>-правила нужны, многие декларации ориентированы на презентацию, нежели на разметку</li>
<li>если необходимо разместить <a href="http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/">нижний колонтитул в нижней части экрана</a>, то все колонки нужно завернуть еще в один &lt;div&gt;. Детальнее это описано <a href="http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/">здесь</a>. Если же нужен нижний колонтитул (сразу под колонками), то ему нужно будет задать <code>clear: left</code>.</li>
<li>метод центрирования колнок внутри контейнера описан <a href="http://blog.sjinks.pro/css/7-center-multiple-block-elements/" title="Центрирование элементов внутри контейнера">здесь</a>.</li>
</ul>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/41-easy-changeable-fixed-size-layout/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/css/41-easy-changeable-fixed-size-layout/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IE7/8 и общий случай двухколоночной резиновой вёрстки</title>
		<link>http://blog.sjinks.pro/css/31-ie-and-general-case-of-two-column-liquid-layouts/</link>
		<comments>http://blog.sjinks.pro/css/31-ie-and-general-case-of-two-column-liquid-layouts/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 23:59:35 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[двухколоночный макет]]></category>
		<category><![CDATA[макет]]></category>
		<category><![CDATA[резиновый макет]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/css/31-ie-and-general-case-of-two-column-liquid-layouts/</guid>
		<description><![CDATA[Универсальное кросс-браузерное решение для резинового шаблона с двумя колонками В последнее время так называемая "резиновая вёрстка" (aka liquid layouts) становится всё более популярной, и далеко не последнюю роль в этом играет постоянное увеличение разрешения мониторов. Одним из часто применяемых шаблонов является двухколоночный (одна колонка имеет фиксированную ширину, другая является "резиновой"). Существует несколько разных подходов к [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/31-ie-and-general-case-of-two-column-liquid-layouts/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Универсальное <a href="http://blog.sjinks.pro/tag/cross-browser/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  кросс-браузерное решение">кросс-браузерное решение</a> для резинового шаблона с двумя колонками</em></h2>
<p>В последнее время так называемая "резиновая вёрстка" (<abbr title="also known as">aka</abbr> liquid layouts) становится всё более популярной, и далеко не последнюю роль в этом играет постоянное увеличение разрешения мониторов. Одним из часто применяемых шаблонов является двухколоночный (одна колонка имеет фиксированную ширину, другая является "резиновой"). Существует несколько разных подходов к вёрстке многоколоночных шаблонов, некоторые подходы приведены на A List Apart: <a href="http://www.alistapart.com/articles/negativemargins/" onclick="pageTracker._trackPageview('/outgoing/ala/negativemargins')">Creating Liquid Layouts with Negative Margins</a> и <a href="http://www.alistapart.com/articles/multicolumnlayouts" onclick="pageTracker._trackPageview('/outgoing/ala/multicolumnlayouts')">Multi-Column Layouts Climb Out of the Box</a>. Второе решение, на мой взгляд, более элегантное; но как бы там ни было, оба решения являются, по сути дела, лишь частными случаями шаблона, когда колонки могут иметь свои границы, отступы&nbsp;и&nbsp;т.п. Конечно, расчет всех параметров не является особо сложным, но почему-то многие разработчики предпочитают не утруждать себя лишними вычислениями, а использовать вложенные <code>div</code>, что не очень-то хорошо, ибо такие элементы не несут особой семантической нагрузки. А с появлением <a href="http://blog.sjinks.pro/tag/ie8/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE8">IE8</a>&nbsp;beta (которая <a href="http://blog.sjinks.pro/css/27-why-microsoft-calls-alpha-beta-or-what-acid-tests-are-for/">альфа</a>) расчеты усложнились, ибо IE8 довольно-таки криво считает координаты элемента с отрицательными границами. Поэтому мы попытаемся найти Универсальное кросс-браузерное решение для двухколоночного резинового шаблона.<span id="more-31"></span></p>
<p>Разметка (для простоты текст Lorem ipsum не приводится):</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p3162">
        <div class="code xhtml" id="p31code62">
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;header&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clearfix&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;menu&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;column&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;footer&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
        </div>
    </div>
</div>

<p>Презентационные стили:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p3163">
        <div class="code css" id="p31code63">
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">font</span><span class="sy0">:</span> <span class="re3">12px</span> Verdana<span class="sy0">,</span> Tahoma<span class="sy0">,</span> Arial<span class="sy0">,</span> Helvetica<span class="sy0">,</span> <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#CCC</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#000</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#header</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#D4E5FF</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">font</span><span class="sy0">:</span> <span class="kw2">italic</span> <span class="kw2">normal</span> <span class="re3">3em</span> <span class="st0">'Times New Roman'</span><span class="sy0">,</span> Times<span class="sy0">,</span> <span class="kw2">serif</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#footer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw1">blue</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">yellow</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Стили разметки:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p3164">
        <div class="code css" id="p31code64">
<span class="re1">.clearfix</span><span class="re2">:after </span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">content</span><span class="sy0">:</span> <span class="st0">&quot;.&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">visibility</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">&gt;</span>body <span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> inline-<span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="coMULTI">/*\*/</span><br />
<span class="sy0">*</span> html <span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">1</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/**/</span><br />
<br />
<span class="re1">.column</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Зададим размеры элементов:</p>
<table cellpadding="2" cellspacing="1" class="bordered">
<thead>
<tr>
<th rowspan="2">Элемент</th>
<th rowspan="2">width</th>
<th colspan="4">padding</th>
<th colspan="4">margin</th>
<th colspan="4">border</th>
</tr>
<tr>
<th>top</th>
<th>right</th>
<th>bottom</th>
<th>left</th>
<th>top</th>
<th>right</th>
<th>bottom</th>
<th>left</th>
<th>top</th>
<th>right</th>
<th>bottom</th>
<th>left</th>
</tr>
</thead>
<tbody align="center">
<tr>
<td align="left"><strong>#header</strong></td>
<td>auto</td>
<td>1em</td>
<td>.3em</td>
<td>1em</td>
<td>1.818em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>1px</td>
<td>1px</td>
<td>1px</td>
<td>1px</td>
</tr>
<tr>
<td align="left"><strong>#footer</strong></td>
<td>auto</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>1px</td>
<td>1px</td>
<td>1px</td>
<td>1px</td>
</tr>
<tr>
<td align="left"><strong>#container</strong></td>
<td>auto</td>
<td>0em</td>
<td>0em</td>
<td>0em</td>
<td>0em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
</tr>
<tr>
<td align="left"><strong>#menu</strong></td>
<td>25em</td>
<td>0em</td>
<td>.5em</td>
<td>0em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
</tr>
<tr>
<td align="left"><strong>#content</strong></td>
<td>100%</td>
<td>2em</td>
<td>.5em</td>
<td>10em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
</tr>
</tbody>
</table>
<p>Теперь выполним одно эквивалентное преобразование: перенесём внешние границы (<code>margin</code>) с <code>#content</code> и <code>#menu</code> на <code>#container</code> (соответственно, вместо <code>margin</code> будет <code>padding</code>):</p>
<table cellpadding="2" cellspacing="1" class="bordered">
<thead>
<tr>
<th rowspan="2">Элемент</th>
<th rowspan="2">width</th>
<th colspan="4">padding</th>
<th colspan="4">margin</th>
<th colspan="4">border</th>
</tr>
<tr>
<th>top</th>
<th>right</th>
<th>bottom</th>
<th>left</th>
<th>top</th>
<th>right</th>
<th>bottom</th>
<th>left</th>
<th>top</th>
<th>right</th>
<th>bottom</th>
<th>left</th>
</tr>
</thead>
<tbody align="center">
<tr>
<td align="left"><strong>#container</strong></td>
<td>auto</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>.5em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
</tr>
<tr>
<td align="left"><strong>#menu</strong></td>
<td>25em</td>
<td>0em</td>
<td>.5em</td>
<td>0em</td>
<td>.5em</td>
<td>0em</td>
<td>.5em</td>
<td>0em</td>
<td>0em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
</tr>
<tr>
<td align="left"><strong>#content</strong></td>
<td>100%</td>
<td>2em</td>
<td>.5em</td>
<td>10em</td>
<td>.5em</td>
<td>0em</td>
<td>0em</td>
<td>0em</td>
<td>.5em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
<td>1em</td>
</tr>
</tbody>
</table>
<p>Теперь увеличим <code>padding-right</code> элемента <code>#container</code> таким образом, чтобы при помощи отрицательного позиционирования можно было сместить элемент <code>#menu</code> на территорию этого самого <code>padding-right</code>. При этом должны учитываться <code>margin</code>/<code>border</code>/<code>padding</code> элементов <code>#menu</code> и <code>#content</code>.</p>
<p>Получим следующие формулы:</p>
<table cellpadding="2" cellspacing="1" class="bordered">
<thead align="left">
<tr>
<th>Элемент</th>
<th>Свойство</th>
<th>Формула</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">#container</td>
<td>padding-bottom</td>
<td><code>min(желаемый #content.marginBottom, желаемый #menu.marginBottom)</code></td>
</tr>
<tr>
<td>padding-top</td>
<td><code>min(желаемый #content.marginTop, желаемый #menu.marginTop)</code></td>
</tr>
<tr>
<td>padding-left</td>
<td><code>желаемый #content.marginLeft</code></td>
</tr>
<tr>
<td>padding-right</td>
<td><code>#menu.offsetWidth + желаемый #menu.marginRight + (#content.offsetWidth - #content.width)</code></td>
</tr>
<tr>
<td>#menu</td>
<td>margin-right</td>
<td><code>-100%</code></td>
</tr>
<tr>
<td rowspan="2">#content</td>
<td>margin-left</td>
<td><code>0</code></td>
</tr>
<tr>
<td>margin-bottom</td>
<td><code>#menu.marginBottom - min(#menu.marginBottom, #content.marginBottom)</code></td>
</tr>
</tbody>
</table>
<p>В результате получим:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p3165">
        <div class="code css" id="p31code65">
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">font</span><span class="sy0">:</span> <span class="re3">12px</span> Verdana<span class="sy0">,</span> Tahoma<span class="sy0">,</span> Arial<span class="sy0">,</span> Helvetica<span class="sy0">,</span> <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#CCC</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#000</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.clearfix</span><span class="re2">:after </span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">content</span><span class="sy0">:</span> <span class="st0">&quot;.&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">visibility</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">&gt;</span>body <span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> inline-<span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="coMULTI">/*\*/</span><br />
<span class="sy0">*</span> html <span class="re1">.clearfix</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">1</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/**/</span><br />
<br />
<span class="re0">#header</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#D4E5FF</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">font</span><span class="sy0">:</span> <span class="kw2">italic</span> <span class="kw2">normal</span> <span class="re3">3em</span> <span class="st0">'Times New Roman'</span><span class="sy0">,</span> Times<span class="sy0">,</span> <span class="kw2">serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="re3">.3em</span> <span class="re3">1em</span> <span class="re3">1.818em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="kw1">blue</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#footer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="kw2">red</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw1">blue</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re1">.column</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-right</span><span class="sy0">:</span> <span class="re3">37.5em</span><span class="sy0">;</span> &nbsp;<span class="coMULTI">/* #menu.offsetWidth + #menu.desiredMarginRight + #content.offsetWidth - #content.width */</span><br />
&nbsp; &nbsp; <span class="kw1">padding-left</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span> &nbsp; <span class="coMULTI">/* desired #content.marginLeft */</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span> &nbsp; <span class="coMULTI">/* desired #content.marginBottom */</span><br />
&nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">yellow</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="kw2">solid</span> <span class="kw1">black</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">2em</span> <span class="re3">.5em</span> <span class="re3">10em</span> <span class="re3">5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="kw2">solid</span> <span class="kw2">green</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">.5em</span> <span class="re3">.5em</span> 0 <span class="nu0">0</span><span class="sy0">;</span> <span class="coMULTI">/* margin-{left|bottom} is #container.padding{Left|Bottom} */</span><br />
&nbsp; &nbsp; <span class="coMULTI">/* offsetWidth - width = (0.5 + 5) + (0.5) + (1 + 1) = 8em */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#menu</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">25em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1em</span> <span class="kw2">solid</span> <span class="kw2">red</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> 0 <span class="re3">.5em</span> 0 <span class="re3">1em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">.5em</span> <span class="re3">-<span class="nu0">100</span>%</span> <span class="re3">.5em</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="coMULTI">/* offsetWidth = 25 + (0.5) + (0.5 + 1) + (1 + 1) = 29em */</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Теперь, чтобы дизайн не бился при изменении размеров окна, добавим минимальную ширину элементу body (<a href="http://blog.sjinks.pro/tag/ie6/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE6">IE6</a> <code>min-width</code> не понимает, но в IE6 и так всё прекрасно)</p>
<p><code>body.minWidth = (#container.offsetWidth - #container.width) + #menu.offsetWidth + (#content.offsetWidth - #content.width)</code></p>
          
<div class="codebox">
    <div class="the_code" style="" id="p3166">
        <div class="code css" id="p31code66">
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">min-width</span><span class="sy0">:</span> <span class="re3">78em</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>У IE8 появилась интересная проблема, из-за которой <code>#menu</code> смещается на недостаточное расстояние. Поэтому <code>#menu</code> нужно подвинуть вручную на значение <code>(#content.offsetWidth - #content.width)</code>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p3167">
        <div class="code css" id="p31code67">
<span class="sy0">*</span><span class="re2">:first-</span>child<span class="sy0">+</span><span class="coMULTI">/**/</span>html <span class="re0">#menu</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">8em</span><span class="sy0">;</span> <span class="coMULTI">/* #content.borderLeft + #content.borderRight + #content.marginLeft + #content.paddingLeft + #content.paddingRight */</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Для того, чтобы избежать проблем со скроллером в IE6, необходимо поставить <code>overflow: auto</code> для <code><a href="http://blog.sjinks.pro/tag/html/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  HTML">html</a></code>. А в <a href="http://blog.sjinks.pro/tag/ie7/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE7">IE7</a> по неизвестным причинам <code>body</code> слишком сильно расширяется и выходит за границы <code>html</code> (горизонтально). В IE8 это поправили. Добавляем:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p3168">
        <div class="code css" id="p31code68">
html <span class="br0">&#123;</span> <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
<span class="sy0">*</span><span class="re2">:first-child</span><span class="sy0">+</span>html body <span class="br0">&#123;</span> <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
<span class="sy0">*</span><span class="re2">:first-</span>child<span class="sy0">+</span><span class="coMULTI">/**/</span>html body <span class="br0">&#123;</span> <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">visible</span><span class="sy0">;</span> <span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Результат <a href="http://blog.sjinks.pro/test/2col/test.html">здесь</a>.<br />
Скриншоты в различных браузерах <a href="http://browsershots.org/http://blog.sjinks.pro/test/2col/test.html">здесь</a>.</p>
<p>Есть один известный баг &mdash; в Опере не получается задать <code>margin-right</code> для <code>#menu</code> (который переносится в <code>padding-right</code> <code>#container</code>).</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/31-ie-and-general-case-of-two-column-liquid-layouts/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/css/31-ie-and-general-case-of-two-column-liquid-layouts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Вертикальное выравнивание без таблиц</title>
		<link>http://blog.sjinks.pro/css/24-vertical-align-without-tables/</link>
		<comments>http://blog.sjinks.pro/css/24-vertical-align-without-tables/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 09:14:19 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[без таблиц]]></category>
		<category><![CDATA[вертикальное выравнивание]]></category>
		<category><![CDATA[макет]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/css/24-vertical-align-without-tables/</guid>
		<description><![CDATA[Кросс-браузерный метод (не работающий пока в IE8 beta 1), позволяющий вертикально отцентрировать в контейнере объект неизвестной высоты. Без использования таблиц. Идея: http://www.jakpsatweb.cz/css/css-vertical-center-solution.html Постановка задачи: имеется область (например, &#60;div&#62;), высота которой известна; имеется некий объект внутри этой области, высота данного объекта неизвестна; требуется вертикально отцентрировать объект; таблицы использовать нельзя. Применение: например, в макетах со 100% высотой, [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/24-vertical-align-without-tables/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Кросс-браузерный метод (не работающий пока в <a href="http://blog.sjinks.pro/tag/ie8/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE8">IE8</a> beta 1), позволяющий вертикально отцентрировать в контейнере объект неизвестной высоты. Без использования таблиц.</em></h2>
<p>Идея: <a href="http://www.jakpsatweb.cz/css/css-vertical-center-solution.html" onclick="pageTracker._trackPageview('/outgoing/jakpsatweb/css-vertical-center-solution')">http://www.jakpsatweb.cz/css/css-vertical-center-solution.html</a></p>
<p><strong>Постановка задачи:</strong></p>
<ul>
<li>имеется область (например, <code>&lt;div&gt;</code>), высота которой <strong>известна</strong>;</li>
<li>имеется некий объект внутри этой области, высота данного объекта <strong>неизвестна</strong>;</li>
<li>требуется вертикально отцентрировать объект;</li>
<li>таблицы использовать нельзя.</li>
</ul>
<p><span id="more-24"></span></p>
<p><strong>Применение:</strong> например, в макетах со 100% высотой, когда содержимое должно быть вертикально отцентрировано относительно контейнера.</p>
<p><strong>Исходная <a href="http://blog.sjinks.pro/tag/markup/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  разметка">разметка</a>:</strong></p>
          
<div class="codebox">
    <div class="the_code" style="" id="p2474">
        <div class="code xhtml" id="p24code74">
<span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;outer&quot;</span> <span class="kw3">style</span><span class="sy0">=</span><span class="st0">&quot;height: 1000px&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;inner&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Lorem ipsum dolor sit amet и дальше по тексту<br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
        </div>
    </div>
</div>

<p>Решение для "нормальных" браузеров, поддерживающих <a href="http://blog.sjinks.pro/tag/css/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  CSS">CSS</a> 2.1, очевидно: даже если у нас нет таблицы, её можно проэмулировать. Для этого умные люди и изобрели различные значения для свойства <a href="http://www.w3.org/TR/CSS21/visuren.html#display-prop" title="The 'display' property">display</a>. Нас сейчас будут интересовать только table и table-cell.</p>
<p>Итак, для "нормальных" браузеров задача решается красиво и элегантно:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p2475">
        <div class="code css" id="p24code75">
<span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> table<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#inner</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">table-cell</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Тестовая страница живёт <a href="http://blog.sjinks.pro/test/valign/valign.html">здесь</a>.</p>
<p>Как обычно <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , все простые и красивые вещи не работают в IE. Кто бы удивлялся&hellip;</p>
<blockquote cite="http://www.jakpsatweb.cz/css/css-vertical-center-solution.html">The keystone of the solution in Internet Explorer: the internal object is absolutely positioned in half of the area height. Then is moved up by half of its height. The wrong interpretation of the height property in Internet Explorer is used (counted height is taken as a base of percentage height of nested tags). One extra nested tag &lt;div&gt; is needed for Explorer.</blockquote>
<p>Если по-русски: внутренний объект позиционируется в середине области, а затем сдвигается на половину своей высоты. Работает это всё благодаоя тому, что IE неправильно интерпретирует свойство <code>height</code>&nbsp;&mdash;&nbsp;вычисленная высота берётся для расчёта процентной высоты вложенных элементов. Для IE требуется еще один дополнительный <code>&lt;div&gt;</code>.</p>
<p>Получаем:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p2476">
        <div class="code xhtml" id="p24code76">
<span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;outer&quot;</span> <span class="kw3">style</span><span class="sy0">=</span><span class="st0">&quot;height: 1000px&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;middle&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;inner&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Lorem ipsum dolor sit amet...<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
        </div>
    </div>
</div>

          
<div class="codebox">
    <div class="the_code" style="" id="p2477">
        <div class="code css" id="p24code77">
<span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> table<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#inner</span><span class="sy0">,</span> <span class="re0">#middle</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">table-cell</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="sy0">:</span> <span class="kw2">middle</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#middle</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3"><span class="nu0">50</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#inner</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">50</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Как пишет автор, в <a href="http://blog.sjinks.pro/tag/ie7/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE7">IE7</a> это не работает (он использовал другие хаки, но это не меняет дело), так как <a href="http://blog.sjinks.pro/tag/ie7/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE7">IE7</a> не поддерживает значения <code>table</code> и <code>table-cell</code>. Поэтому, чтобы заставить код работать в IE7, продублируем хаки для <a href="http://blog.sjinks.pro/tag/ie6/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE6">IE6</a>, но изменим их видимость, чтобы их видел только IE7:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p2478">
        <div class="code css" id="p24code78">
<span class="sy0">*</span><span class="re2">:first-child</span><span class="sy0">+</span>html <span class="re0">#outer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">hidden</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span><span class="re2">:first-child</span><span class="sy0">+</span>html <span class="re0">#middle</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3"><span class="nu0">50</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span><span class="re2">:first-child</span><span class="sy0">+</span>html <span class="re0">#inner</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3">-<span class="nu0">50</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Рабочая страница <a href="http://blog.sjinks.pro/test/valign/valign2.html">здесь</a>, скриншоты <a href="http://browsershots.org/http://blog.sjinks.pro/test/valign/valign2.html">здесь</a>, визуальное объяснение тому, как это всё работает в IE&nbsp;&mdash;&mdash;<a href="http://blog.sjinks.pro/test/valign/valign2a.html">здесь</a>.</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/24-vertical-align-without-tables/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/css/24-vertical-align-without-tables/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Нижний колонтитул — в нижней части страницы</title>
		<link>http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/</link>
		<comments>http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 22:41:20 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[WAI]]></category>
		<category><![CDATA[WCAG]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[макет]]></category>
		<category><![CDATA[разметка]]></category>
		<category><![CDATA[футер]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/</guid>
		<description><![CDATA[Кросс-браузерный метод, реализующий 100% высоту страницы с помещением нижнего колонтитула в нижнюю часть экрана С каждым годом мониторы становятся всё больше и больше; как следствие, растёт и разрешение экрана. И страницы с небольшим количеством контента на таких мониторах смотрятся некрасиво&#160;&#8212;&#160;особенно, когда нижний колонтитул (aka подвал aka footer) плавает где-то в верхней части экрана Многие сайты [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Кросс-браузерный метод, реализующий 100% высоту страницы с помещением нижнего колонтитула в нижнюю часть экрана</em></h2>
<p>С каждым годом мониторы становятся всё больше и больше; как следствие, растёт и разрешение экрана. И страницы с небольшим количеством контента на таких мониторах смотрятся некрасиво&nbsp;&mdash;&nbsp;особенно, когда нижний колонтитул (<abbr title="also known as">aka</abbr> подвал aka footer) плавает где-то в верхней части экрана <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Многие сайты решают эту проблему при помощи табличной верстки (<span class="codebox"><code class="html"><span class="sc2">&lt;<span class="kw2">table</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;100%&quot;</span>&gt;</span></code></span>) с теми или иными вариациями. Но это не наш метод, ибо это противоречит <a href="http://www.w3.org/TR/WAI-WEBCONTENT/#gl-structure-presentation"><abbr title="Web Content Accessibility Guidelines">WCAG</abbr>&nbsp;1.0</a>. Поэтому для решения задачи будем использовать семантически корректную разметку и <a href="http://blog.sjinks.pro/tag/css/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  CSS">CSS</a>.<span id="more-15"></span></p>
<p>На первый взгляд кажется, что прижать <a href="http://blog.sjinks.pro/tag/footer/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  футер">футер</a> (так вот будем величать нижний колонтитул для краткости) к нижнему краю окна очень просто: <span class="codebox"><code class="css"><span class="re0">#footer</span> <span class="br0">&#123;</span><span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span> <span class="kw1">bottom</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><span class="br0">&#125;</span></code></span>. Но есть один маленький нюанс: если высота содержимого страницы (основного контента) превышает высоту окна, то футер будет прижат к нижнему краю окна, а не контента. Иными словами, футер будет перекрывать какую-то часть контента.</p>
<p>Очень часто проблему позиционирования блоков решают (к сожалению!) при помощи JavaScript (например, вычисляется высота контента и футер абсолютно позиционируется под контент; есть и другие способы).</p>
<p>Начнём с разметки:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p1585">
        <div class="code xhtml" id="p15code85">
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">h1</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;#header&quot;</span>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">h1</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;#content&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">p</span>&gt;</span>Lorem ipsum dolor sit amet<span class="sc1">&amp;hellip;</span><span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">p</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;#footer&quot;</span>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
        </div>
    </div>
</div>

<p>Для начала нужно указать, что минимальная высота <code>body</code> должна быть не менее 100%:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p1586">
        <div class="code css" id="p15code86">
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Есть два "но":</p>
<ol>
<li>Если высота задаётся в процентах (как в данном случае), в режиме соответствия стандартам (когда присутствует нормальный <code>!DOCTYPE</code>), высота рассчитывается в процентах от высоты <em>родительского</em> элемента;</li>
<li>Internet Explorer 6 имеет трудности с пониманием <code>min-height</code>.</li>
</ol>
<p>Первое "но" обходится довольно просто: для <code>body</code> родительским элементом является <code><a href="http://blog.sjinks.pro/tag/html/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  HTML">html</a></code>, поэтому <code>html</code> и задаем высоту в 100% (<code>html</code> является корнем дерева, поэтому его процентная высота будет вычисляться от высоты окна).</p>
<p>Со вторым "но" особых проблем тоже не вознкает: хоть <a href="http://blog.sjinks.pro/tag/ie6/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  IE6">IE6</a> и не поддерживает <span class="codebox"><code class="css"><span class="kw1">min-height</span></code></span>/<span class="codebox"><code class="css"><span class="kw1">min-width</span></code></span>, зато он интерпретирует <span class="codebox"><code class="css"><span class="kw1">height</span></code></span>/<span class="codebox"><code class="css"><span class="kw1">width</span></code></span> как <span class="codebox"><code class="css"><span class="kw1">min-height</span></code></span>/<span class="codebox"><code class="css"><span class="kw1">min-width</span></code></span> <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Удобно, не правда ли?</p>
<p>Получаем:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p1587">
        <div class="code css" id="p15code87">
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span> <span class="coMULTI">/* Иначе у IE6 начинаются проблемки с вертикальной полосой прокрутки */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span> <span class="coMULTI">/* IE 6 */</span><br />
<span class="br0">&#125;</span><br />
<br />
html <span class="sy0">&gt;</span> body <span class="br0">&#123;</span> <span class="coMULTI">/* Все остальные */</span><br />
&nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Теперь осталось составить стили для заголовка, основного блока и футера.<br />
Есть один маленький нюанс: так как мы хотим прижать футер к самому нижнему краю экрана, нам нужно знать заранее его (футера) высоту. Обычно это не является проблемой, так как в футере содержатся копирайты и несколько ссылок, и размер футера обычно заранее известен. Для заголовка высота не имеет значения (данный <a href="http://blog.sjinks.pro/tag/layout/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  макет">макет</a> вытерпит любую разумную высоту <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ), но для удобства мы её всё же зададим.</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p1588">
        <div class="code css" id="p15code88">
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span> <span class="coMULTI">/* Так как #footer мы планируем позиционировать относительно body */</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#header</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">3em</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#footer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">bottom</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">2em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">.5em</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-top</span><span class="sy0">:</span> <span class="re3">1px</span><span class="sy0">;</span> <span class="coMULTI">/* чтобы предотвратить &quot;схлопывание&quot; границ, если у первого дочернего элемента не нулевой margin-top */</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">4em</span> <span class="coMULTI">/* #footer.offsetHeight + #content.desired-paddingBottom */</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Под <code>offsetHeight</code> мы здесь понимаем сумму высоты элемента, верхнего и нижнего отступов (<span class="codebox"><code class="css"><span class="kw1">padding</span></code></span>), верхней и нижней границ (<span class="codebox"><code class="css"><span class="kw1">margin</span></code></span>) и верхнего и нижнего бордюров (<span class="codebox"><code class="css"><span class="kw1">border</span></code></span>).<br />
<code>desired-paddingBottom</code>&nbsp;&mdash;&nbsp;желаемый нижний отступ для контента (т.е. отступ, который будет присутствовать <em>всегда</em>).</p>
<p><em>Маленькое замечание:</em> если текста на странице мало (т.е. блок <span class="codebox"><code class="css"><span class="re0">#content</span></code></span> имеет маленькую высоту), то его (блока) размер будет больше на <code>#footer.offsetHeight</code> (это может быть важно при задании фоновых картинок). При этом при увеличении блока <span class="codebox"><code class="css"><span class="re0">#content</span></code></span> <span class="codebox"><code class="css"><span class="re0">#footer</span></code></span> в конце концов "съест" это лишнее пространство.</p>
<p>Собственно, всё.</p>
<p>В ситуации, когда нужно, чтобы все пространство от заголовка до подвала было одного цвета, добавляется еще один контейнер и немного меняется CSS:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p1589">
        <div class="code xhtml" id="p15code89">
<span class="sc2">&lt;<span class="kw2">html</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">head</span>&gt;&lt;<span class="kw2">title</span>&gt;</span>Title<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">title</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">head</span>&gt;</span><br />
<span class="sc2">&lt;<span class="kw2">body</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">h1</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;header&quot;</span>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">h1</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span>&gt;</span>Lorem ipsum<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;footer&quot;</span>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">html</span>&gt;</span>
        </div>
    </div>
</div>

          
<div class="codebox">
    <div class="the_code" style="" id="p1590">
        <div class="code css" id="p15code90">
<span class="sy0">*</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">overflow</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
html<span class="sy0">,</span> body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span> <span class="coMULTI">/* все предки #container должны иметь высоту */</span><br />
<span class="br0">&#125;</span><br />
<br />
html <span class="sy0">&gt;</span> body <span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="sy0">*</span> html <span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#header</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">1em</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#footer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">1em</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; <span class="kw1">bottom</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">1.1em</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Или можно сделать проще&nbsp;&mdash;&nbsp;задать фон <span class="codebox"><code class="css">body</code></span> и убрать фон <span class="codebox"><code class="css"><span class="re0">#content</span></code></span>. Будет работать, если у <span class="codebox"><code class="css"><span class="re0">#header</span></code></span>/<span class="codebox"><code class="css"><span class="re0">#footer</span></code></span> нет лишних границ.</p>
<p><a href='http://static.sjinks.info/wp-content/uploads/2008/03/test1.html' title='test1.html'>Первый пример</a><br />
<a href='http://static.sjinks.info/wp-content/uploads/2008/03/test2.html' title='test2.html'>Второй пример</a></p>
<p><em>Dictum sapienti sat est&hellip;</em></p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/css/15-footer-in-the-very-bottom/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
	</channel>
</rss>

