<?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>Ксдыщь! &#187; блочная модель</title>
	<atom:link href="http://flack.ru/tag/%d0%b1%d0%bb%d0%be%d1%87%d0%bd%d0%b0%d1%8f-%d0%bc%d0%be%d0%b4%d0%b5%d0%bb%d1%8c/feed/" rel="self" type="application/rss+xml" />
	<link>http://flack.ru</link>
	<description>Вебдев и всякая фигня</description>
	<lastBuildDate>Mon, 06 Apr 2009 16:47:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Семантическая верстка — советы и решения. Часть третья. Блочная модель</title>
		<link>http://flack.ru/2007/12/22/semantic-coding-howto-3/</link>
		<comments>http://flack.ru/2007/12/22/semantic-coding-howto-3/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 00:11:20 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[блочная модель]]></category>
		<category><![CDATA[веб-стандарты]]></category>

		<guid isPermaLink="false">http://flack.ru/2007/12/22/semantic-coding-howto-3/</guid>
		<description><![CDATA[Блочная модель Одна из ключевых особенностей cемантической валидной верстки — использование правильной блочной модели. Рассмотрим на примере, как она работает. html: &#60;div id="parent"&#62; &#60;div id="element"&#62; Lorem ipsum… &#60;/div&#62; &#60;/div&#62; style.css: #parent { border:1px solid red; } #element { width:200px; /* Ширина области контента */ margin:40px; /* Поля */ padding:20px; /* Отступы */ border:4px solid #CCC; [...]]]></description>
			<content:encoded><![CDATA[<h4>Блочная модель</h4>
<p>Одна из ключевых особенностей cемантической валидной верстки — использование правильной блочной модели. Рассмотрим на примере, как она работает.<br />
<span id="more-98"></span><br />
<strong>html:</strong></p>
<pre><code>&lt;div id="parent"&gt;
    &lt;div id="element"&gt;
        Lorem ipsum…
    &lt;/div&gt;
&lt;/div&gt;</code></pre>
<p><strong>style.css:</strong></p>
<pre><code>#parent {
    border:1px solid red;
    }
#element {
    width:200px; /* Ширина области контента */
    margin:40px; /* Поля */
    padding:20px; /* Отступы */
    border:4px solid #CCC; /* Границы */
    background:#F2F2F2;
    }</code></pre>
<p><img src="/wp-content/uploads/2007/12/block-model-1.png" alt="Иллюстрация размерностей" /></p>
<p>Визуальная ширина блока 248 пикселей, несмотря на то, что четко задана ширина в 200 пикселей. Дело в том, что по спецификации CSS визуальный размер блока складывается из суммы размера области контента, величины отступов и ширины границ. Заданное нами в CSS значение ширины (width) — на самом деле ширина области контента. Отсюда мы получаем визуальную ширину блока следующим образом.</p>
<p>Визуальный размер блока = 200 (ширина области контента) + 40 (сумма правого и левого отступов) + 8 (сумма правой и левой границ).</p>
<p>Для того чтобы четко задать визуальную ширину, при написании значений размеров в CSS нужно выполнить ряд нехитрых действий. Из желаемой визуальной ширины необходимо вычесть сумму обоих отступов и сумму обеих границ. Таким образом, чтобы изобразить блок шириной 200 пиксел, необходимо задать следующее значение правила width:</p>
<p>width = 200 (нужная визуальная ширина блока) — 40 (сумма правого и левого отступов) — 8 (сумма правой и левой границ).</p>
<p>Переопределим значение правила width в CSS.</p>
<p><strong>style.css:</strong></p>
<pre><code>#element {
    width:152px; /* Ширина области контента */
    margin:40px; /* Поля */
    padding:20px; /* Отступы */
    border:4px solid #CCC; /* Границы */
    }</code></pre>
<p><img src="/wp-content/uploads/2007/12/block-model-2.png" alt="Иллюстрация размерностей - 2" /></p>
<p>Нужный результат получен. Данные вычисления вначале могут показаться довольно сложными, но выработав привычку, вы будете выполнять их автоматически.</p>
<h4>Неправильная блочная модель и кроссбраузерные проблемы</h4>
<p>Даже при использовании полного правильного DOCTYPE, вы столкнетесь с ситуацией, когда блочная модель работает неправильно. Это связано с неправильной реализацией блочной модели в IE 5.x. В этом браузере визуальная ширина нашего примера вычисляется следующим образом:</p>
<p>Визуальная ширина блока = значению правила width.</p>
<p>Хотя такая модель может показаться более логичной, она не соответствует спецификации CSS.</p>
<p>Чтобы избежать различного отображения блоков в IE 5.x и более современных браузерах, необходимо применить хак с экранированием. Дело в том, что в CSS можно вполне законно экранировать символы (кроме A&#8211;F), и такие правила будут вполне корректно работать везде, кроме IE пятых версий. Так будет выглядеть хак, необходимый в данном примере:</p>
<p><strong>ie.css:</strong></p>
<pre><code>* HTML #element {
    width:200px; /* Для пятых версий IE, некорректно обрабатывающих блочную модель */
    w\idth:152px; /* Для более старших */
    }</code></pre>
<p>Для достижения такого же результата вы можете использовать и условные комментарии, подключая отдельный css-файл Internet Explorer версии 5.</p>
<p><strong>Полезные ссылки</strong></p>
<ul>
<li><a href="http://www.webmascon.com/topics/coding/38a.asp">Трюк с блочной моделью CSS</a></li>
<li><a href="http://www.webmascon.com/topics/tools/10a.asp">Шпаргалка по CSS</a></li>
<li><a href="http://www.info.com.ph/~etan/w3pantheon/style/modifiedsbmh.html">Modified SBMH (Simplified Box Model Hack)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2007/12/22/semantic-coding-howto-3/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
