<?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; css</title>
	<atom:link href="http://flack.ru/tag/css/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>Семантическая верстка — советы и решения. Часть VIII. Минимальные и максимальные размеры</title>
		<link>http://flack.ru/2008/08/26/semantic-coding-howto-8/</link>
		<comments>http://flack.ru/2008/08/26/semantic-coding-howto-8/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 11:33:22 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[max-width]]></category>
		<category><![CDATA[min-width]]></category>

		<guid isPermaLink="false">http://flack.ru/2008/08/26/semantic-coding-howto-8/</guid>
		<description><![CDATA[min-height В спецификации CSS предусмотрены правила min-width/min-height и max-width/max-height. К сожалению, Internet Explorer поддерживает эти правила только начиная с седьмой версии. Однако, это ограничение можно обойти. Свойство min-height позволяет указать минимальную высоту для элемента. Если высота содержимого элемента окажется меньше его высоты, заданной правилом min-height, то высота элемента будет установлена на основании значения правила min-height. [...]]]></description>
			<content:encoded><![CDATA[<h4>min-height</h4>
<p>В спецификации CSS предусмотрены правила min-width/min-height и max-width/max-height. К сожалению, Internet Explorer поддерживает эти правила только начиная с седьмой версии. Однако, это ограничение можно обойти.<span id="more-127"></span></p>
<p>Свойство min-height позволяет указать минимальную высоту для элемента. Если высота содержимого элемента окажется меньше его высоты, заданной правилом min-height, то высота элемента будет установлена на основании значения правила min-height. В противном случае блок растянется по своему содержимому.</p>
<p><strong>style.css:</strong></p>
<pre><code>#element {
    min-height:300px;
    }</code></pre>
<p>Как говорилось выше, В IE это будет работать только в седьмой версии. К счастью, в IE есть баг в обработке правила height. По сути, height ведет себя так же как и min-height, именно на этом основан наш workaround. Обратите внимание, что мы используем «star html hack», чтобы не задавать значение height для IE 7.</p>
<p><strong>ie.css:</strong></p>
<pre><code>* HTML #element {
    height:300px;
    }</code></pre>
<p>Обращу ваше внимание, что при использовании height для эмуляции min-height, overflow:hidden использовать нельзя, иначе в IE height начнет работать так же, как и в нормальных браузерах.</p>
<h4>min-width, max-width</h4>
<p>С эмуляцией минимальной и максимальной ширины все несколько сложнее. Для этого понадобится использовать IE-only правило expression (NB: это свойство не является валидным по текущему стандарту CSS и должно использоваться через conditional comments).</p>
<p>Хитрость в том, что внутри expression мы можем выполнять JavaScript.</p>
<pre><code>#element {
    width:expression(some javascript goes here);
    }</code></pre>
<p>Для задания минимальной ширины используем следующий expression:</p>
<p><strong>ie.css:</strong></p>
<pre><code>* HTML #element {
    width:expression((document.body.clientWidth||document.documentElement.clientWidth)  &gt; 760 ? 'auto' : '760px');
    }</code></pre>
<p>Для минимальной и максимальной ширины одновременно:</p>
<p><strong>ie.css:</strong></p>
<pre><code>* HTML #element {
    width:expression(document.body.clientWidth&lt;=760?'760px':(document.body.clientWidth&gt;1100?'1100px':'100%'));
    }</code></pre>
<p>Данные правила, естественно, не будут работать у пользователей с отключенным JavaScript.</p>
<p><strong>Материалы к изучению:</strong></p>
<ul>
<li><a href="http://cssing.org.ua/2005/09/02/min-width-for-ie/">min-width для IE</a></li>
<li><a href="http://xhtml.ru/2005/06/11/max-width/">max-width в Internet Explorer</a></li>
<li><a href="http://cssplay.co.uk/boxes/minwidth.html">min-width for Internet Explorer without Java Script?</a></li>
<li><a href="http://lusever.livejournal.com/15868.html">Тонкий CSS для Internet Explorer (expression)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2008/08/26/semantic-coding-howto-8/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Семантическая верстка — советы и решения. Часть VII. Прижимаем подвал к низу окна</title>
		<link>http://flack.ru/2008/08/26/semantic-coding-howto-7/</link>
		<comments>http://flack.ru/2008/08/26/semantic-coding-howto-7/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 11:21:45 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[подвал]]></category>

		<guid isPermaLink="false">http://flack.ru/2008/08/26/semantic-coding-howto-7/</guid>
		<description><![CDATA[Хоть прибитый «футер» на страницах и считается пережитком табличного подхода, такая задача тем не менее возникает регулярно. Существует решение данной проблемы без таблиц, но при условии, что вы знаете высоту футера или способны при ее изменении исправить стили. Авторство данного метода принадлежит Кэмерону Адамсу (Cameron Adams). Благодаря приведенной технике вы можете прижать ваш подвал к [...]]]></description>
			<content:encoded><![CDATA[<p>Хоть прибитый «футер» на страницах и считается пережитком табличного подхода, такая задача тем не менее возникает регулярно. Существует решение данной проблемы без таблиц, но при условии, что вы знаете высоту футера или способны при ее изменении исправить стили.<span id="more-126"></span></p>
<p>Авторство данного метода принадлежит Кэмерону Адамсу (Cameron Adams). Благодаря приведенной технике вы можете прижать ваш подвал к низу страницу при малом размере контента и сохранить нормальное положение вещей, когда контент требует вертикальной прокрутки.</p>
<pre><code>&lt;div id="header-content"&gt;
    &lt;div id="header"&gt;
        Шапка сайта
    &lt;/div&gt;
    &lt;div id="content"&gt;
        Основная контентная часть
    &lt;/div&gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
    Подвал
&lt;/div&gt;</code></pre>
<p>Обратите внимание, что вся разметка макета, кроме подвала, должна быть заключена в контейнер, в данном случае div#header-content.</p>
<p><strong>style.css:</strong></p>
<pre><code>html,
body {
    height:100%; /* Растягиваем документ на всю высоту окна */
    }
#header-content {
    position:relative;
    min-height:100%; /* Минимальная высота основной части макета */
    }
#content {
    padding-bottom:3em; /* Пространство необходимое, чтобы подвал не залезал на основную часть при большом количестве контента */
    }
#footer {
    position:relative;
    height:3em; /* Высота подвала, указывать необязательно, но полезно при разработке */
    margin:-3em 0 0; /* Поднимаем футер наверх */
    }</code></pre>
<p><strong>ie.css:</strong></p>
<pre><code>* HTML #header-content {
    height:100%; /* Эмулируем min-height для IE &lt;7 */
    }</code></pre>
<p><strong>Материалы для изучения:</strong></p>
<ul>
<li><a href="http://www.themaninblue.com/writing/perspective/2005/08/29/">footerStickAlt: A more robust method of positioning a footer</a></li>
<li><a href="http://solardreamstudios.com/learn/css/footerstick/">footerStick</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2008/08/26/semantic-coding-howto-7/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Семантическая верстка — советы и решения. Часть VI. Запрет на обтекание float’ов</title>
		<link>http://flack.ru/2008/08/26/semantic-coding-howto-6/</link>
		<comments>http://flack.ru/2008/08/26/semantic-coding-howto-6/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 11:15:53 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[float]]></category>
		<category><![CDATA[веб-стандарты]]></category>
		<category><![CDATA[запрет обтекания]]></category>

		<guid isPermaLink="false">http://flack.ru/2008/08/26/semantic-coding-howto-6/</guid>
		<description><![CDATA[На данном примере мы рассмотрим, как реализовать запрет на обтекание определенного элемента, к которому применено правило float. Нашей задачей является создание анонса новости. Макет выглядит следующим образом: Поскольку мы уже сошлись на отказе от таблиц в пользу семантики, нам потребуется минимум html-кода: &#60;div class="announce"&#62; &#60;img src="pic.gif" alt="" /&#62; &#60;h2&#62;&#60;a href="#"&#62;Россияне помогли&#60;/a&#62;&#60;/h2&#62; &#60;p&#62;Полиция турецкого города Измир [...]]]></description>
			<content:encoded><![CDATA[<p>На данном примере мы рассмотрим, как реализовать запрет на обтекание определенного элемента, к которому применено правило float. Нашей задачей является создание анонса новости. <span id="more-124"></span>Макет выглядит следующим образом:</p>
<p><img src="/wp-content/uploads/2008/08/image010.gif" alt="image010.gif" /></p>
<p>Поскольку мы уже сошлись на отказе от таблиц в пользу семантики, нам потребуется минимум html-кода:</p>
<pre><code>&lt;div class="announce"&gt;
    &lt;img src="pic.gif" alt="" /&gt;
    &lt;h2&gt;&lt;a href="#"&gt;Россияне помогли&lt;/a&gt;&lt;/h2&gt;
    &lt;p&gt;Полиция турецкого города Измир сообщила об аресте 17 участников группировки, занимавшейся мошенничеством и рассылкой вирусов в Сети.
     Арест произошел после того, как местные полицейские выяснили, что трое русских хакеров отправили в общей сложности миллион писем с
     вирусами и получили доступ к банковским счетам многих жителей Турции.&lt;/p&gt;
&lt;/div&gt;</code></pre>
<p>Зададим картинке float, чтобы прижать ее налево и соответствующие макету поля:</p>
<pre><code>.announce img {
    float:left;
    margin:0 10px 10px 0;
    }</code></pre>
<p>К сожалению, текст обтекает картинку, а это совсем не то, что нам требуется по условию задачи. Чтобы запретить обтекание применим дополнительные стили к тексту:<br />
<strong>style.css:</strong></p>
<pre><code>.announce p {
    overflow:hidden;
    }</code></pre>
<p><strong>ie.css:</strong></p>
<pre><code>.announce p {
    zoom:1; /* Для IE 7 */
   }
   * HTML .announce p {
        height:1%; /* Для IE 5,6 */
        }</code></pre>
<p>Voila!</p>
<p class="note">Внимательный читатель безусловно заметит, что для реализации задачи мы воспользовались правилами, указывающими Explorer’у на hasLayout. Таким образов еще раз показав их полезность.</p>
<p><strong>Материалы для изучения:</strong></p>
<ul>
<li><a href="http://cssing.org.ua/2005/07/03/display-table/">display:table</a></li>
<li><a href="http://www.pupinc.com/files/test/float.html">Pup&#8217;s Box Flow Hack</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2008/08/26/semantic-coding-howto-6/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Семантическая верстка — советы и решения. Часть V. Навигация по сайту или укрощение списков</title>
		<link>http://flack.ru/2008/02/08/semantic-coding-howto-5/</link>
		<comments>http://flack.ru/2008/02/08/semantic-coding-howto-5/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 19:42:32 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[float]]></category>
		<category><![CDATA[веб-стандарты]]></category>

		<guid isPermaLink="false">http://flack.ru/2008/02/08/semantic-coding-howto-5/</guid>
		<description><![CDATA[Навигация — это то, с чего начинается любой сайт, ведь без нее пользователь просто не сможет им пользоваться. Не удивительно, что мы заострим на ее организации свое внимание. Представим себе кусочек макета, присланного нам дизайнером. На нем изображено главное меню будущего сайта: Пункт меню «Обратная связь» показывает поведение при наведении мышкой. Если забыть на время [...]]]></description>
			<content:encoded><![CDATA[<p>Навигация — это то, с чего начинается любой сайт, ведь без нее пользователь просто не сможет им пользоваться. Не удивительно, что мы заострим на ее организации свое внимание.</p>
<p>Представим себе кусочек макета, присланного нам дизайнером. На нем изображено главное меню будущего сайта:</p>
<p><img src="http://flack.ru/wp-content/uploads/2008/02/semantic-coding-5-0.gif" alt="Иллюстрация 1" /></p>
<p>Пункт меню «Обратная связь» показывает поведение при наведении мышкой.<span id="more-107"></span></p>
<p>Если забыть на время про семантику, то наше меню можно представить в HTML приверно так:</p>
<pre><code>&lt;table id=”main-nav”&gt;&lt;tr&gt;
        &lt;td&gt;&lt;a href=””&gt;Новости&lt;/a&gt;&lt;/td&gt;
	  …
    &lt;/tr&gt;
&lt;/table&gt;</code></pre>
<p>Набросать небольшой CSS, использовать Javascript для подсветки пункта при наведении мышкой и жить счастливо. Но не правильно.</p>
<p>При таком подходе мы теряем первичный структурный смысл нашей навигации. Любое меню — прежде всего список. Не даром мы говорим именно «пункт меню» и читаем книги, в которых оглавление более всего похоже именно на список.</p>
<p>Поэтому, вспомнив о семантике документа мы напишем код нашей навигации следующим образом:</p>
<pre><code>&lt;ul id=”main-nav”&gt;
    &lt;li&gt;&lt;a href=””&gt;Новости&lt;/a&gt;&lt;/li&gt;
    …
&lt;/ul&gt;</code></pre>
<p>Первый шаг к светлому будущему. Однако наше горизонтальное меню в данный момент выглядит в браузере следующим образом:</p>
<p><img src="http://flack.ru/wp-content/uploads/2008/02/semantic-coding-5-1.gif" alt="Иллюстрация 2" /></p>
<p>По сравнению с табличным решением мы сразу сталкиваемся с двумя очевидными проблемами. Во-первых, визуально неуместными маркерами списка, а во вторых с тем, что пока данное меню принять за горизонтальное может только очень незаурядный ум.</p>
<h4>Немного магии CSS</h4>
<p>Начнем с решения двух вышеназванных проблем:</p>
<pre><code class="css">* {margin:0;padding:0;}
body {
    padding:40px;
    background:#FFF;
    font:100.01% Tahoma,Helvetica,sans-serif;
    color:#000;
    }
ul#main-nav {
    float:left; /* Предотвращаем эффект, при котором список не охватит внутри себя свои пункты. Это будет видно, если задать ul видимые границы */
    font:bold .75em Tahoma,Helvetica,sans-serif; /* Устанавливаем параметры шрифта */
    }
ul#main-nav li {
    float:left; /* «Прижимаем» элементы списка налево, эмулируя горизонталь */
    list-style:none; /* Убираем маркеры у пунктов списка */
    }</code></pre>
<p class="note">Я не буду здесь останавливаться на механизмах работы правила float, так о нем можно писать целые книги. Подробное объяснение на русском можно почепнуть в статье Ивана Сагалаева «<a href="http://softwaremaniacs.org/blog/2005/12/01/css-layout-float/">Раскладка в CSS: float</a>».</p>
<p>В итоге мы получили следующий результат:</p>
<p><img src="http://flack.ru/wp-content/uploads/2008/02/semantic-coding-5-2.gif" alt="Иллюстрация 3" /></p>
<p>Как видите, мы уже значительно ближе к намеченной цели. Осталось лишь дописать оформительские эффекты. Все было бы очевидно, если бы не одно — нам необходимо организовать подсветку пункта меню при наведении на него мыши.</p>
<h4>Javascript? Не наш метод</h4>
<p>В стандарте CSS 2.1, который является текущим, предусмотрен псевдоселектор :hover, благодаря которому мы можем менять стиль элемента по тому же принципу, как делаем при onmouseover при помощи Javascript. Одна проблема — IE шестой версии и ниже применяет :hover только к ссылкам. Флагманы технического прогресса, что уж тут скажешь.</p>
<p>Но не стоит отчаиваться. Поскольку наш список все-таки является навигацией, в нем совершенно очевидным образом находятся ссылки, к которым :hover в IE 5 и 6 можно применить без лишних проблем. Заодно на ссылки мы навесим и другие элементы оформления, такие как оступы, границы и цвет.</p>
<pre><code class="css">ul#main-nav li a {
    display:block; /* Делаем ссылки блочным элементом, чтобы они могли нативно работать с внутренними полями */
    position:relative; /* Небольшой «хак», чтобы в IE кликабельная область распространилась на внутренние поля */
    padding:4px 8px; /* Внутренние поля */
    background:#FFF; /* Цвет фона */
    border:1px solid #CCC; /* Границы */
    border-width:1px 0 1px 1px;
    color:#47AAE9; /* Цвет шрифта */
    }
    ul#main-nav li a:hover {
        background:#F2F2F2; /* Цвет фона при наведении на ссылку */
        color:#000; /* Цвет шрифта при наведении на ссылку */
        }</code></pre>
<p>Осталась небольшая деталь. Так как мы не рисовали правую границу для ссылок внутри элементов списка — у нашего меню не хватает правой границы. Конечно можно было бы задать класс последнему элементу списка и переопределить нужные стили, но в данном случае можно сделать все проще и без лишней разметки. Достаточно лишь добавить границу самому списку.</p>
<pre><code class="css">ul#main-nav {
    float:left;
    border-right:1px solid #CCC;
    font:bold .75em Tahoma,Helvetica,sans-serif;
    }</code></pre>
<p><img src="http://flack.ru/wp-content/uploads/2008/02/semantic-coding-5-3.gif" alt="Иллюстрация 4" /></p>
<p>Отлично, не правда ли? Мы добились не только нужного визуального отображения, но и поведения, при этом используя лишь семантически верную HTML-разметку и CSS.</p>
<p class="note">У данного решения есть один минус — в Opera седьмых версий элементы списка не выстроятся линию, пока мы не зададим списку конкретную ширину. Это проблема продвинутого уровня и я не буду на ней останавливаться. Попытайтесь найти решение самостоятельно.</p>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2008/02/08/semantic-coding-howto-5/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Семантическая верстка — советы и решения. Часть IV. Создание «резиновых» макетов с использованием отрицательных полей</title>
		<link>http://flack.ru/2008/02/01/semantic-coding-howto-4/</link>
		<comments>http://flack.ru/2008/02/01/semantic-coding-howto-4/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 20:42:51 +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/2008/02/01/semantic-coding-howto-4/</guid>
		<description><![CDATA[Отрицательные поля, пожалуй, самый мощный инструмент для семантической верстки сложных макетов. Овладеть этой техникой просто необходимо, потому как благодаря ей вы во многих случаях сможете отказаться от таблиц для разметки макета. Разберем использование отрицательных полей на примере. Мы сверстаем трехколоночный макет с двумя фиксированными боковыми колонками, тянущейся центральной, шапкой и подвалом. html: &#60;div id="header"&#62; Шапка [...]]]></description>
			<content:encoded><![CDATA[<p>Отрицательные поля, пожалуй, самый мощный инструмент для семантической верстки сложных макетов. Овладеть этой техникой просто необходимо, потому как благодаря ей вы во многих случаях сможете отказаться от таблиц для разметки макета.</p>
<p>Разберем использование отрицательных полей на примере. Мы сверстаем трехколоночный макет с двумя фиксированными боковыми колонками, тянущейся центральной, шапкой и подвалом.<br />
<span id="more-105"></span><br />
<strong>html:</strong></p>
<pre><code class="html">&lt;div id="header"&gt;
    Шапка
&lt;/div&gt;
&lt;div id="container"&gt;
    &lt;div id="nav"&gt;
        Левая колонка
    &lt;/div&gt;
    &lt;div id="content"&gt;
        Контент
    &lt;/div&gt;
&lt;/div&gt;
&lt;div id="sidebar"&gt;
    Правая колонка
&lt;/div&gt;
&lt;div id="footer"&gt;
    Футер
&lt;/div&gt;</code></pre>
<p>Обратите внимание на то, что левая и центральная колонки объединены общим контейнером. Именно для этого контейнера мы установим отрицательное поле, которое «подтянет» правую колонку.</p>
<p><strong>style.css:</strong></p>
<pre><code class="css">body {
    padding:20px;
    background:#FFF;
    color:#000;
    }
#header {
    padding:10px;
    background:#51CAC8;
    }
#container {
    float:left; /* Делаем контейнер плавающим, чтобы добиться нужного поведения */
    width:100%; /* Указываем контейнеру занимать все доступное пространство */
    margin:10px -170px 10px 0; /* Устанавливаем отрицательное правое поле, чтобы подтянуть правую колонку */
    }
#nav {
    float:left; /* Прижимаем блок налево */
    width:150px; /* Обращаем внимание, что фактическая ширина блока = 170 пикселям */
    padding:10px;
    background:#E73D00;
    }
#content {
    margin:0 150px 0 170px; /* Устанавливаем поля, чтобы контент не «налезал» на боковые колонки */
    padding:10px;
    background:#91CA00;
    }
#sidebar {
    float:right; /* Прижимаем блок направо */
    width:130px; /* Обращаем внимание, что фактическая ширина блока = 150 пикселям */
    margin-top:10px;
    padding:10px;
    background:#F5DC09;
    }
#footer {
    clear:both; /* Ставим подвал ниже самой длинной колонки */
    padding:10px;
    background:#DDDEDF;
    }</code></pre>
<p><strong>ie.css:</strong></p>
<pre><code class="css">* HTML #nav {
    width:170px;
    w\idth:150px;
    }
* HTML #sidebar {
    width:150px;
    w\idth:130px;
    }
#footer {
    height:1%; /* Немного магии для IE5, неправильно считающего отступы */
    }</code></pre>
<p>Это даст нам следующий результат:</p>
<p><img src="/wp-content/uploads/2008/02/negative-margins.png" alt="Иллюстрация результата" /></p>
<p>Центральная колонка при этом будет тянуться пропорционально размерам рабочей области окна. Принципиальное отличие такого макета от таблицы с тремя ячейками заключается в том, что наши три колонки не будут одновременно тянуться по высоте, а будут занимать нужное им вертикальное пространство. При этом подвал всегда будет ниже самой длинной из них. Для того, чтобы эмулировать поведение ячеек таблиц, вам придется воспользоваться техникой faux columns.</p>
<p><strong>Материалы для изучения:</strong></p>
<ul>
<li><a href="http://webmascon.com/topics/coding/43a.asp">«Резиновая вёрстка»: используем отрицательные поля</a></li>
<li><a href="http://alistapart.com/articles/fauxcolumns">Faux Columns</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2008/02/01/semantic-coding-howto-4/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<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>
		<item>
		<title>Семантическая верстка — советы и решения. Часть вторая. Хаки-шмаки, даём люлей IE</title>
		<link>http://flack.ru/2007/12/07/semantic-coding-howto-2/</link>
		<comments>http://flack.ru/2007/12/07/semantic-coding-howto-2/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 21:51:12 +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/07/semantic-coding-howto-2/</guid>
		<description><![CDATA[CSS-хаки Альтернатива синице Укрощаем Internet Explorer или «магические правила» CSS-хаки При использовании семантической верстки каждый разработчик обязательно столкнется с проблемами кроссбраузерности, для решения которых в большинстве случаев приходится использовать так называемые «хаки». Обычно под этим термином подразумевается особый способ написания селекторов или правил, понимаемый только конкретным браузером. Однако совместимость с CSS в большинстве браузеров уже [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://flack.ru/2007/12/07/semantic-coding-howto-2/#hacks">CSS-хаки</a></li>
<li><a href="http://flack.ru/2007/12/07/semantic-coding-howto-2/#cond">Альтернатива синице<br />
</a></li>
<li><a href="http://flack.ru/2007/12/07/semantic-coding-howto-2/#magic">Укрощаем Internet Explorer или «магические правила»</a></li>
</ul>
<h4 id="hacks">CSS-хаки</h4>
<p>При использовании семантической верстки каждый разработчик обязательно столкнется с проблемами кроссбраузерности, для решения которых в большинстве случаев приходится использовать так называемые «хаки». Обычно под этим термином подразумевается особый способ написания селекторов или правил, понимаемый только конкретным браузером. Однако совместимость с CSS в большинстве браузеров уже достигла уровня, при котором следует ограничивать использование «хаков».</p>
<p>Как правило, основным источником неприятностей бывает Internet Explorer. Многообразие ошибок в реализации CSS в браузерах Microsoft удивляет даже самых опытных верстальщиков. В связи с этим возникают ситуации, когда необходимо использовать дополнительные или альтернативные правила для IE. Именно в таких случаях рекомендуется применять «хаки». Если же вам вдруг понадобились альтернативные правила, скажем, только для Firefox, то рекомендуется пересмотреть ваш код, и в 99% случаев вы найдете более элегантное решение.<br />
<span id="more-90"></span><br />
Наиболее популярным хаком на сегодня остается так называемый «star html hack»:</p>
<pre><code>#element {
  position:relative; /* Основное правило  для всеx браузеров */
  }
  * HTML #element {
    position:static; /* Переопределение  правила для IE младше седьмой версии */
    }</code></pre>
<p>В валидных HTML- и XHMTL-документах селектор HTML всегда играет роль корневого элемента, а BODY — потомка первого уровня, но не второго или более высокого уровня. Таким образом, теоретически селектор «* HTML» не должен применяться ни к одному элементу. Но на практике IE пятых и шестых версий из-за ошибки в собственном движке интерпретируют данный селектор как HTML и применяют указываемые правила. Поскольку остальные современные браузеры селектор «* HTML» игнорируют, этот прием можно использовать в корыстных целях. Это полезно, но правильно ли?</p>
<p>Несмотря на то что данный хак корректен с точки зрения стандарта CSS, есть ряд негативных нюансов.</p>
<p>Во-первых, слово «хак» звучит странно, и разработчику уже это должно не понравиться.</p>
<p>Во-вторых, такие хаки для браузера Internet Explorer засоряют код, подгружаемый и всеми остальными браузерами.</p>
<p>В-третьих, в этом хаке игнорируется недавно вышедший Internet Explorer 7.0, где был исправлен целый ряд ошибок в модуле CSS (более подробно об этом вы можете почитать непосредственно в блоге разработчиков IE7 по адресу <a href="http://blogs.msdn.com/ie/">blogs.msdn.com/ie</a>).</p>
<p>Как же укротить Internet Explorer, не используя хаки?</p>
<h4 id="cond">Альтернатива синице</h4>
<p>В недрах Microsoft Developer Network есть решение получше — conditional comments. Данная технология поддерживается в Internet Explorer, начиная с пятой версии, тем самым охватывая все интересующие нас браузеры. Ниже приводится пример элегантного использования условных комментариев:</p>
<pre><code>&lt;link href="style.css" rel="stylesheet" type="text/css" media="all" /&gt;
&lt;!--[if IE]&gt;&lt;link rel="stylesheet" type="text/css" href="ie.css" media="all"/&gt;&lt;![endif]--&gt;
</code></pre>
<p>Обычное подключение CSS-файлов, однако увидят вторую строку, а следовательно и подгрузят css-файл только браузеры семейства Internet Explorer. Происходит это благодаря условию, заложенному в условном комментарии — if IE. Данное условие означает «если Internet Explorer» и Explorer’ы версии пять и выше (включая свежий седьмой) прочитают код, находящийся внутри комментария и интерпретируют его.</p>
<p>Таким образом все наши хаки можно вынести в отдельный файл:</p>
<p><strong>style.css:</strong></p>
<pre><code>#element {
    position:relative; /* Основное правило для всеx браузеров */
    }</code></pre>
<p><strong>ie.css:</strong></p>
<pre><code>#element {
    position:static; /* Переопределение правила для IE всех версий */
    }</code></pre>
<p>Теперь мы не используем хаки в основном листе стилей; добились того, что альтернативное правило было применено ко всем  Explorer’ам, включая седьмой; а также избавили пользователей альтернативных браузеров от загрузки лишнего кода. При этом мы сохранили наш (X)HTML и CSS валидным, так как такой условный комментарий не распознается никем иным кроме IE, включая даже валидатор от W3C.</p>
<p>Условные комментарии гибче, чем кажется на одном примере. Вы можете охватить не только все Explorer’ы, но и все его версии ниже или выше определенной или конкретную его версию; а также подгрузить код, который будут интерпретировать все браузеры, кроме Internet Explorer. К сожалению, это уже тема для отдельной статьи и с этими возможностями читателю следует ознакомится самостоятельно.</p>
<p><strong>Материалы для изучения:</strong></p>
<ul>
<li><a href="http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp">раздел в Microsoft Developer Network</a></li>
<li><a href="http://www.quirksmode.org/css/condcom.html">Подробное объяснение синтаксиса и методологии использования</a></li>
<li><a href="http://www.456bereastreet.com/archive/200511/valid_downlevelrevealed_conditional_comments/">О валидности синтаксиса условных комментариев не для IE</a></li>
</ul>
<h4 id="magic">Укрощаем Internet Explorer или «магические правила»</h4>
<p>Как уже говорилось выше, больше всего проблем верстальщику доставляют браузеры от Microsoft. Мы уже рассказали о том, как добавить отдельные правила только для Internet Explorer, но не коснулись того, какие же правила нам смогут помочь. Исправляем это досадное упущение.<br />
Все перечисляемые ниже элементы управляют свойством <a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/haslayout.asp">hasLayout</a>. hasLayout не является частью стандарта CSS и является скорее микрософтовской «заплаткой» для веб-разработчиков. Но и на том спасибо, как говорится.</p>
<p>Мы приводим только названия багов, для исправления которых применяются данные правила. Более подробное описание указываемых багов вы можете найти по адресу <a href="http://www.positioniseverything.net/explorer.html">positioniseverything.net/explorer.html</a>.</p>
<p><strong>position:relative</strong></p>
<ul>
<li>The IE/Win Disappearing List-Background Bug</li>
<li>IE6 Border Chaos</li>
</ul>
<p>Данное правило также часто применяется для спонтанно пропадающих блоков. Не падающих или неправильно отображающихся, а именно пропадающих. Особенно грешит этим Internet Explorer 5.0.</p>
<p><strong>height:1%</strong></p>
<ul>
<li>The IE6 Three Pixel Text-Jog</li>
<li>The IE Escaping Floats Bug</li>
<li>IE and italics (будьте осторожны с 5.0, используйте экранирование)</li>
<li>IE/Win Unscrollable Content Bug</li>
<li>IE/Win Guillotine Bug</li>
<li>Quirky Percentages in IE6&#8242;s Visual Formatting Model</li>
</ul>
<p>Применяется также для клиаринга элементов. Задается контейнеру, содержащему float’ы.</p>
<p><strong>display:inline</strong></p>
<ul>
<li>Floats, Margins and IE</li>
<li>The IE Doubled Float-Margin Bug</li>
</ul>
<p><strong>display:inline-block;</strong></p>
<ul>
<li>Quirky Percentages in IE6&#8242;s Visual Formatting Model</li>
</ul>
<p><strong>zoom:1</strong></p>
<ul>
<li>Аналог height:1%; для IE 7.</li>
</ul>
<p>И еще пара советов:<br />
Во-первых, используйте данные правила по-возможности только для IE. Причем для разных версий решение может отличаться (наиболее часто это касается height:1% и zoom:1).<br />
Во-вторых, столкнувшись с нежелательным поведением Explorer’а, которому нет документированного объяснения (или вам просто лень его искать) — попробуйте последовательно применить к проблемному элементу все правила, влияющие на свойство hasLayout. Шаманство — неотъемлемая часть нашей професии.</p>
<p><strong>Материалы для изучения:</strong></p>
<ul>
<li><a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/haslayout.asp">hasLayout property в MSDN</a></li>
<li><a href="http://www.satzansatz.de/cssd/onhavinglayout.html">On having layout</a></li>
<li><a href="http://cssing.org.ua/2005/11/11/ie-magic/">Магия для IE</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2007/12/07/semantic-coding-howto-2/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Семантическая верстка — советы и решения. Часть первая. Капля теории, DTD и ластики</title>
		<link>http://flack.ru/2007/11/29/semantic-coding-howto-1/</link>
		<comments>http://flack.ru/2007/11/29/semantic-coding-howto-1/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 11:16:00 +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/11/29/semantic-coding-howto-1/</guid>
		<description><![CDATA[Сегодня я начинаю публиковать по частям статью, написанную для русского издания PC Magazine, в которой рассказывается о приёмах семантической вёрстки. Первая часть: немного теории, DTD и ластики. Уровень — начинающие. Вместо вступления В последнее время все чаще требованием при разработке сайта становится бестабличная или «дивная» верстка. Оба термина стали чрезвычайно популярны, несмотря на то, что [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня я начинаю публиковать по частям статью, написанную для русского издания PC Magazine, в которой рассказывается о приёмах семантической вёрстки. Первая часть: немного теории, DTD и ластики. Уровень — <strong>начинающие</strong>.</p>
<h4>Вместо вступления</h4>
<p>В последнее время все чаще требованием при разработке сайта становится бестабличная или «дивная» верстка. Оба термина стали чрезвычайно популярны, несмотря на то, что они в корне неверны.</p>
<p>Изначально, таблицы были выбраны дизайнерами и разработчиками для верстки по одной единственной причине — не существовало других средств реализации хоть сколько-нибудь сложных макетов. Со временем таблицы стали нормой и остаются ею до сих пор. Но мы уже не в девяностых и браузеры, которые значатся в наших технических заданиях, способны интерпретировать CSS на том уровне, который необходим для более корректной, структурированной и современной верстки.<br />
<span id="more-74"></span></p>
<p>Именно ее мы называем семантической. Слово на первый взгляд довольно расплывчато, но в то же время лишено недостатков более популярного термина «бестабличная», который подразумевает всего лишь отказ от использования таблиц при реализации макетов. На самом деле все куда сложнее. Под семантической версткой мы подразумеваем следующее:</p>
<ol>
<li>Таблицы используются для табличных данных, а не для визуального позиционирования элементов. К сожалению, мы живем не в идеальном мире и не всегда удается обойтись без этого архаизма, многие макеты просто требуют табличного поведения. Но перед тем как использовать таблицу не по назначению, каждый разработчик должен не раз подумать и попытаться избежать этого. Во многих случаях это вполне реально.</li>
<li>Каждый элемент HTML-кода должен нести структурный смысл. Наилучший способ этого добиться — просмотреть вашу страницу с отключенным CSS. Если списки визуально остались списками, а заголовки заголовками, то вы уже близки к семантике, к которой следует стремиться любому профессиональному верстальщику.</li>
<li>Разрабатываемый вами код соответствует стандартам (X)HTML и CSS. Семантика невозможна без валидности, несмотря на явную разность этих двух понятий. Вы можете сверстать валидный сайт, но без структурной разметки это будет всего лишь популизм.</li>
</ol>
<p>Данная статья не предназначена для совсем новичков и не претендует на статус учебного пособия, но пытается ответить на вопросы, часто возникающие у верстальщиков при попытке изменить табличным привычкам и перейти на семантическую верстку.</p>
<h4>Проблемы кроссбраузерности и их решения</h4>
<h5>Правильный DOCTYPE</h5>
<p>Правильный DOCTYPE — это то, с чего должен начинаться любой сайт. Вы можете написать трижды правильный (X)HTML и СSS код, но с неправильным или отсутствующим DOCTYPE он не будет валидным и, что самое ужасное, будет работать неправильно.</p>
<p>Согласно спецификациям HTML и XHTML тег DOCTYPE, указанный в первой строке документа, указывает браузеру, какую именно версию (X)HTML вы используете в своем документе. Без указания DOCTYPE браузер будет воспринимать ваш документ в режиме Quirks mode, что приведет, в частности, к неправильной интерпретации блочной модели.</p>
<p>Правильный DOCTYPE обязан содержать полный абсолютный путь к файлу DTD, хранящемуся на серверах w3.org.</p>
<p class="imp">Использование правильного DOCTYPE — первый и необходимый путь к валидной кроссбраузерной верстке.</p>
<p>В этой статье мы используем указанный выше XHTML 1.0 Strict.</p>
<p class="inf">Подглядеть корректные DOCTYPE, а также подробнее узнать практическое значение этого тега можно в статье Джеффри Зельдмана в переводе Макса Россомахина «<a href="http://www.webmascon.com/topics/coding/25a.asp">Почему так важен DOCTYPE</a>».</p>
<h5>Ластики</h5>
<p>Одна из самых пространенных причин того, что сайт выглядит по-разному в разных браузерам вызвана тем, что браузеры по умолчанию оформляют многие элементы по-своему.</p>
<p>Для примера возьмем небольшой код:</p>
<pre><code class="html">&lt;fieldset&gt;
    &lt;legend&gt;Авторизация&lt;/legend&gt;
    &lt;label for="login"&gt;Логин:&lt;/label&gt;
    &lt;input id="login" maxlength="15" type="text" /&gt;
    &lt;label for="password"&gt;Пароль:&lt;/label&gt;
    &lt;input id="password" maxlength="15" type="password" /&gt;
&lt;/fieldset&gt;
</code></pre>
<p>Взгляните на результат в Firefox 2.0 (слева) и Internet Explorer 6 (справа):<br />
<img src="http://flack.ru/lab/image001.gif" alt="Результат" /></p>
<p>Разница вызвана тем, что разные браузеры имеют различные значения для полей (margin) и отступов (padding). Разумеется, если задать конкретные величины в правилах для нужных элементов, то все исправится, но можно поступить проще.Существует замечательный селектор *, который выбирает все элементы в документе. Таким образом мы можем заранее обнулить значения для отступов и полей и в дальнейшем задавать их только тогда, когда дефолтные значения нас не устраивают. Эта, на первый взгляд мелочь, поможет вам избежать множества незначительных, но трудно находимых кроссбраузерных несоответствий и просто ошибок в процессе имплементации дизайна.</p>
<p>Добавим чуть-чуть CSS:</p>
<pre><code class="css">* {margin:0;padding:0;}
</code></pre>
<p>и посмотрим на результат:</p>
<p><img src="http://flack.ru/lab/image002.gif" alt="Результат" /></p>
<p>Уже гораздо ближе к тому кроссбраузерному сооветствию, что мы ищем.</p>
<p>Подход к использованию «ластиков» у каждого свой и подобные стили по умолчанию каждый верстальщик должен выработать для себя самостоятельно. Это, как и стиль написания HTML и CSS, должно стать профессиональной привычкой, значительно увеличивающей вашу личную производительностью.</p>
<p class="imp">Во всех примерах нашей статьи вышеупомянутый «ластик» используется по умолчанию.</p>
<p><strong>Материалы для изучения:</strong></p>
<ul>
<li>«<a href="http://pepelsbey.net/webdev/2007/02/10/i-otstupili-polya/">И отступили поля</a>»</li>
<li><a href="http://developer.yahoo.com/yui/reset/">YUI Reset CSS</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2007/11/29/semantic-coding-howto-1/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Инлайновый хак для IE</title>
		<link>http://flack.ru/2007/09/05/inline-hack-for-ie/</link>
		<comments>http://flack.ru/2007/09/05/inline-hack-for-ie/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 12:03:46 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[хаки]]></category>

		<guid isPermaLink="false">http://flack.ru/2007/09/05/inline-hack-for-ie/</guid>
		<description><![CDATA[Если у вас вдруг нет conditional comments, то наиболее удачным, имхо, можно считать данный хак: #target { overflow:hidden; *overflow:visible; /* IE 5-7 */ }]]></description>
			<content:encoded><![CDATA[<p>Если у вас вдруг нет conditional comments, то наиболее удачным, имхо, можно считать данный хак:</p>
<pre><code class="css">#target {
    overflow:hidden;
    *overflow:visible; /* IE 5-7 */
    }
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2007/09/05/inline-hack-for-ie/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Видео выступления на РИТ-2007</title>
		<link>http://flack.ru/2007/08/02/video-from-rit-2007/</link>
		<comments>http://flack.ru/2007/08/02/video-from-rit-2007/#comments</comments>
		<pubDate>Thu, 02 Aug 2007 11:54:10 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[веб-стандарты]]></category>
		<category><![CDATA[выступления]]></category>

		<guid isPermaLink="false">http://flack.ru/2007/08/02/video-from-rit-2007/</guid>
		<description><![CDATA[Ужасайтесь.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rit2007.ru/images/2.8.rybakov.avi">Ужасайтесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2007/08/02/video-from-rit-2007/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
<enclosure url="http://www.rit2007.ru/images/2.8.rybakov.avi" length="141077254" type="video/x-msvideo" />
		</item>
	</channel>
</rss>
