<?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>Paradigm.ru &#187; css</title>
	<atom:link href="http://paradigm.ru/tag/css/feed" rel="self" type="application/rss+xml" />
	<link>http://paradigm.ru</link>
	<description>Блог Александра Мусаева</description>
	<lastBuildDate>Sat, 08 May 2010 16:13:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>IE6, CSS и интервью с Алексом Могилевским</title>
		<link>http://paradigm.ru/2008/04/ie-css-special-features</link>
		<comments>http://paradigm.ru/2008/04/ie-css-special-features#comments</comments>
		<pubDate>Thu, 24 Apr 2008 18:46:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-дизайн]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[браузеры]]></category>
		<category><![CDATA[интервью]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[стандарты]]></category>

		<guid isPermaLink="false">http://paradigm.ru/?p=281</guid>
		<description><![CDATA[Популярность шестой версии Internet Explorer является причиной траты немалого времени на&#160;адаптацию кода страниц, идентично отображаемых во&#160;всех других браузерах, а&#160;иногда&#160;&#8212; и&#160;вовсе камнем преткновения, не&#160;позволяющим использовать в&#160;работе какую-то часть стандарта. Зачастую оформление страницы естесственным образом разделяется у&#160;меня на&#160;три этапа. На&#160;первом происходит, собственно, разработка дизайна с&#160;тестированием в&#160;Firefox (выбор браузера обоснован множеством удобных расширений). На&#160;втором&#160;&#8212; проверка, что все номально [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://paradigm.ru/;-)/2008/04/00ie.png" alt="" title="Internet Explorer" width="130" height="130" align="left" class="alignleft" /></p>
<p>Популярность шестой версии Internet Explorer является причиной траты немалого времени на&nbsp;адаптацию кода страниц, идентично отображаемых во&nbsp;всех других браузерах, а&nbsp;иногда&nbsp;&#8212; и&nbsp;вовсе камнем преткновения, не&nbsp;позволяющим использовать в&nbsp;работе какую-то часть стандарта. Зачастую оформление страницы естесственным образом разделяется у&nbsp;меня на&nbsp;три этапа. На&nbsp;первом происходит, собственно, разработка дизайна с&nbsp;тестированием в&nbsp;Firefox (выбор браузера обоснован множеством удобных расширений). На&nbsp;втором&nbsp;&#8212; проверка, что все номально отображается в&nbsp;Opera, Safari и&nbsp;IE7. А&nbsp;на&nbsp;третьем&nbsp;&#8212; доработка под IE6&nbsp;(иногда даже не&nbsp;надфилем, а&nbsp;молотком и&nbsp;пассатижами).</p>
<p>Хорошая статья на эту тему была опубликована пару дней назад на сайте <a href="http://css-tricks.com/">CSS-Tricks</a>. Ниже привожу ее перевод (повествование ведется от&nbsp;лица автора).</p>
<p><strong>Автор:</strong> Крис Койер, <a href="http://css-tricks.com">css-tricks.com</a></strong><br />
<strong>Перевод:</strong> Александр Мусаев, <a href="http://paradigm.ru">paradigm.ru</a></strong><br />
<strong>Оригинал статьи:</strong> &laquo;IE&nbsp;CSS Bugs That&#8217;ll Get You Every Time&raquo;, <a href="http://css-tricks.com/ie-css-bugs-thatll-get-you-every-time/">http://css-tricks.com/ie-css-bugs-thatll-get-you-every-time/</a></strong></p>
<p>Когда IE6&nbsp;только появился, в&nbsp;нем была лучшая поддержка CSS среди существовавших в&nbsp;то&nbsp;время браузеров. Но&nbsp;это было 7&nbsp;лет назад. А&nbsp;различные мелкие недоработки в&nbsp;реализации CSS, преследуют веб-разработчиков до&nbsp;сих пор и&nbsp;часто становятся причиной отказа от&nbsp;использования той или иной техники.</p>
<p>Не&nbsp;смотря на&nbsp;то,&nbsp;что я&nbsp;стараюсь не&nbsp;ограничиваться возможностями шестой версии IE,&nbsp;все&nbsp;же понимаю важность корректного отображения страниц везде, где это возможно. Ниже перечислены основные вредоносные недочеты&nbsp;IE.</p>
<h3>Блочная модель</h3>
<p>Вероятно, это самый распространенный и&nbsp;один из&nbsp;самых неприятных багов в&nbsp;IE&nbsp;до&nbsp;шестой версии. Допустим, мы&nbsp;хотим определить блок:</p>
<pre><code class="css">div#box {
   width: 100px;
   border: 2px solid black;
   padding: 10px;
}</code></pre>
<p>IE6&nbsp;сделает ширину блока равной 100px. В&nbsp;действительности ширина должна быть равна 124px, и&nbsp;все современные браузеры отобразят блок именно так.</p>
<p>Это мелкое отличие в&nbsp;рендеринге может вызвать немало неприятностей при верстке страниц. Думаю, поведение IE&nbsp;может быть в&nbsp;какой-то мере оправдано с&nbsp;точки зрения логики, но&nbsp;в&nbsp;любом случае оно противоречит спецификации.</p>
<p>Чтобы избежать этих проблем, я&nbsp;вообще не&nbsp;использую свойство <code>padding</code> для элементов, отвечающих за&nbsp;разметку страницы. Вместо этого можно задавать отступ непосредственно для тех элементов, которые содержат контент (например, <code>&lt;p&gt;</code>).</p>
<h3>Удвоение полей</h3>
<p>Ошибка проявляется при определении свойств <code>float</code> и&nbsp;<code>margin</code>.</p>
<pre><code class="css">div#box {
   float: right;
   margin-right: 20px;
}</code></pre>
<p>IE6&nbsp;увеличит ширину поля с&nbsp;20&nbsp;до&nbsp;40px. Обычно эффект пропадает после добавления элементу <code>&lt;div&gt;</code> свойства <code>display:inline;</code>. Но&nbsp;ценой такого решения станет отсутствие возможности задавать ширину для такого <code>&lt;div&gt;</code>, так&nbsp;же как и&nbsp;для всех других inline-элементов.</p>
<p>Как и&nbsp;в&nbsp;предыдущем случае, проблему можно обойти. Понадобится либо добавить <code>padding</code> для родительского элемента, либо задать его в&nbsp;самом <code>&lt;div&gt;</code>. На&nbsp;свойство <code>padding</code> действие бага не&nbsp;распространяется.</p>
<h3>Ограничений ширины и&nbsp;высоты</h3>
<p>Применение свойств <code>min-width</code> и&nbsp;<code>min-height</code> само по&nbsp;себе является очень естесственным и&nbsp;логичным. Поэтому осознание факта их&nbsp;недоступности остается весьма безрадостным. IE&nbsp;6&nbsp;не&nbsp;просто воспринимает их&nbsp;неправильно, а&nbsp;вообще игнорирует.</p>
<p><code>min-height</code> может быть очень полезен, например, для нижнего колонтитула страницы (иногда называемого &laquo;подвалом&raquo;). Допустим, мы&nbsp;хотим ограничить его высоту величиной 100px, чтобы обеспечить полное отображение фоновой картинки. При этом фиксация высоты свойством height остается нежелательной, т.к. объем текста в&nbsp;блоке может увеличиться.</p>
<p>Если ограничиться указанием <code>min-height</code>, для IE&nbsp;6&nbsp;это будет равноценным полному отсутствию опрелеления высоты. Зато указание <code>height</code> будет воспринято по&nbsp;смыслу именно как <code>min-height</code>. Иногда этим можно воспользоваться.</p>
<h3>&laquo;Эффект лестницы&raquo;</h3>
<p>Предполагается, что последовательность плавающих объектов должна выстраиваться в&nbsp;линию. Везде происходит именно так, но&nbsp;IE&nbsp;6&nbsp;зачем-то добавляет невидимый перенос строки после каждого блока, что приводит к&nbsp;ступенчатому отображению элементов. Проблема исправляется обнулением <code>line-height</code>. Более подробно это описано в&nbsp;<a href="http://paradigm.ru/2008/03/06/preventing-stepdown/">отдельной заметке</a>.</p>
<h3>Отсутствие hover</h3>
<p>Большинство современных браузеров допускает определение псевдо-классов <code>hover</code> для любых элементов. В&nbsp;IE&nbsp;6&nbsp;это возможно только для &lt;a&gt;. И&nbsp;даже в&nbsp;нем <code>hover</code> не&nbsp;будет отображаться при отсутствии атрибута <code>href</code>. Можно воспользоваться <a href="http://www.xs4all.nl/~peterned/csshover.html">хитрым фиксом</a> или просто смириться.</p>
<h3>Альфа-канал для PNG</h3>
<p>Удивительно, что в&nbsp;браузере Microsoft так долго отсутствовала поддержка этого формата (до&nbsp;седьмой версии). Cуществует огромное количество возможных решений и&nbsp;они описаны <a href="http://css-tricks.com/the-different-techniques-for-applying-the-png-hack/">отдельным постом</a>. Стоит помнить, что обычные PNG файлы (без прозрачности) отображаются нормально и&nbsp;их&nbsp;использование этого формата зачастую предпочтительнее GIF.</p>
<h3>Ссылки по&nbsp;теме</h3>
<p>Пожалуй, дополню этот пост всего одной ссылкой, которую просто не&nbsp;могу не&nbsp;дать&nbsp;&#8212; на&nbsp;<a href="http://b23.ru/pc9" rel="nofollow">интервью с&nbsp;архитектором Internet Explorer Алексом Могилевским</a>, выложенное вчера на&nbsp;Хабре в&nbsp;качестве дополнения к&nbsp;подкасту <a href="http://b23.ru/pcm" rel="nofollow">Radio-T #82</a>.</p>
<div class="i"><a href="http://b23.ru/pc9" rel="nofollow"><img src="http://paradigm.ru/;-)/2008/04/01alex-mogilevsky-interview.jpg" alt="" title="01alex-mogilevsky-interview" width="489" height="280" /></a></div>
<p>Интервью так&nbsp;же можно скачать с&nbsp;<a href="http://narod.yandex.ru/disk/126159000/mogila.m4a">Народ.диска</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/04/ie-css-special-features/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CSS: Отключаем пунктирную рамку вокруг ссылок</title>
		<link>http://paradigm.ru/2008/03/href-outline</link>
		<comments>http://paradigm.ru/2008/03/href-outline#comments</comments>
		<pubDate>Thu, 27 Mar 2008 21:01:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-дизайн]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[веб-дизайн]]></category>

		<guid isPermaLink="false">http://paradigm.ru/2008/03/27/href-outline/</guid>
		<description><![CDATA[Всем знакома точечная рамка, которой IE&#160;обводит периметр графических ссылок при клике? Точно такую&#160;же отображает Firefox (в&#160;том числе вокруг обычных текстовых линков). У&#160;этой рамки два есть два предназначения. Первое состоит в&#160;том, чтобы продемонстрировать реакцию интерфейса на&#160;пользовательское действие, обеспечив визуальную обратную связь. Второе&#160;&#8212; в&#160;том, чтобы выделить активный в&#160;данный момент элемент страницы. Это востребовано, если навигация осуществляется не&#160;мышью, [...]]]></description>
			<content:encoded><![CDATA[<p>Всем знакома точечная рамка, которой IE&nbsp;обводит периметр графических ссылок при клике? Точно такую&nbsp;же отображает Firefox (в&nbsp;том числе вокруг обычных текстовых линков). У&nbsp;этой рамки два есть два предназначения. Первое состоит в&nbsp;том, чтобы продемонстрировать реакцию интерфейса на&nbsp;пользовательское действие, обеспечив визуальную обратную связь. Второе&nbsp;&#8212; в&nbsp;том, чтобы выделить активный в&nbsp;данный момент элемент страницы. Это востребовано, если навигация осуществляется не&nbsp;мышью, а&nbsp;с&nbsp;клавиатуры, и&nbsp;старательный пользователь выбирает ссылку для перехода многократными нажатиями Tab.</p>
<p>Не&nbsp;смотря на&nbsp;эту функциональность, иногда возникают ситуации, когда отображение рамки остается нежелательным по&nbsp;эстетическим причинам. Например, вокруг логотипа сайта, или иных крупных элементов веб-страницы.</p>
<p>В&nbsp;такой ситуации рамку можно отключить. Раньше я&nbsp;использовал для этого функцию JavaScript <code>blur()</code>:</p>
<pre><code class="html">&lt;h1&gt;&lt;a href="/" <strong>onclick="this.blur();"</strong>&gt;&lt;img ... /&gt;&lt;/a&gt;&lt;/h1&gt;</code></pre>
<p>А&nbsp;сегодня нашел еще один более лаконичный вариант, основанный на&nbsp;CSS2. А&nbsp;именно, на&nbsp;свойстве <code><a href="http://www.w3.org/TR/REC-CSS2/ui.html#propdef-outline-width">ouline</a></code>, которое как раз предназначено для настройки деталей отображения рамки вокруг ссылок. Код очень простой:</p>
<pre><code class="css">a:active, a:focus, img { outline: 0; }</code></pre>
<p>Проверено в&nbsp;актуальных версиях IE&nbsp;и&nbsp;Firefox. Есть некоторые подозрения на&nbsp;счет IE6, т.к. в&nbsp;нем традиционно ничего не&nbsp;работает как должно. Но&nbsp;под рукой этого браузера сечас нет. Такие дела.</p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/03/href-outline/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>CSS: Средство от&#160;синдрома &#171;лестницы&#187;</title>
		<link>http://paradigm.ru/2008/03/preventing-stepdown</link>
		<comments>http://paradigm.ru/2008/03/preventing-stepdown#comments</comments>
		<pubDate>Wed, 05 Mar 2008 21:22:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-дизайн]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[веб-дизайн]]></category>

		<guid isPermaLink="false">http://paradigm.ru/2008/03/06/preventing-stepdown/</guid>
		<description><![CDATA[В&#160;статье рассматривается пример решения типовой проблемы позиционирования элементов меню с&#160;помощью каскадных таблиц стилей. Когда я&#160;в&#160;первый раз столкнулся с&#160;ней сам, решение пришлось искать методом тыка. Вероятно, инструкция Криса может оказаться полезной для многих. Оригинал: http://css-tricks.com/prevent-menu-stepdown/ Автор: Chris Coyier (css-tricks.com) Перевод: Александр Мусаев (paradigm.ru) Всем, кто работал с&#160;&#171;плавающими&#187; HTML-элементами, должно быть известно, что при задании контейнеру значения [...]]]></description>
			<content:encoded><![CDATA[<p><em>В&nbsp;статье рассматривается пример решения типовой проблемы позиционирования элементов меню с&nbsp;помощью каскадных таблиц стилей. Когда я&nbsp;в&nbsp;первый раз столкнулся с&nbsp;ней сам, решение пришлось искать методом тыка. Вероятно, инструкция Криса может оказаться полезной для многих.</em></p>
<p><strong>Оригинал:</strong> <a href="http://css-tricks.com/prevent-menu-stepdown/">http://css-tricks.com/prevent-menu-stepdown/</a><br />
<strong>Автор:</strong> Chris Coyier (<a href="http://css-tricks.com/">css-tricks.com</a>)<br />
<strong>Перевод:</strong> Александр Мусаев (<a href="http://paradigm.ru">paradigm.ru</a>)</p>
<p>Всем, кто работал с&nbsp;&laquo;плавающими&raquo; HTML-элементами, должно быть известно, что при задании контейнеру значения CSS-свойства float:left, следующий за&nbsp;ним &laquo;всплывает&raquo; вверх, если это возможно. В&nbsp;подобной ситуации часто встречается одна проблема&nbsp;&#8212; позиционируемые элементы выстраиваются &laquo;лестницей&raquo;.</p>
<p>Например, при оформлении таким образом меню, сделанного на&nbsp;основе ненумерованного списка (<code>&lt;ul&gt;</code>), браузер может отобразить его примерно так:</p>
<p><img src="http://paradigm.ru/;-)/2008/03/stepdown-01.png" width="550" height="83" alt="" /></p>
<p>Рассмотрим пример корректного горизонтального форматирования элементов меню для следующего HTML кода: <span id="more-199"></span></p>
<pre><code class="html">&lt;ul id="menu"&gt;
	&lt;li&gt;&lt;a href="#"&gt;My&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="#"&gt;Little&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="#"&gt;Menu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</code></pre>
<p>Для того, чтобы придать списку необходимый внешний вид, ссылки внутри него оформляются в&nbsp;виде блоков увеличенной ширины:</p>
<pre><code class="css">ul#menu li&nbsp;a&nbsp;{
	display: block;
	width: 130px;
	text-align: center;
	font-weight: bold;
	float: left;
	color: white;
	font-size: 1.2em;
	text-decoration: none;
	background: #600;
}</code></pre>
<p><em>(Прим. переводчика: при оформлении подобного меню, я&nbsp;бы дополнительно задал увеличенное значение верхнего и&nbsp;нижнего padding. Кроме того, сочетание фиксированной в&nbsp;пикселях ширины контейнера и&nbsp;размера шрифта, определенного в&nbsp;относительных единицах&nbsp;&#8212;, не&nbsp;слишком хорошее решение автора.)</em></p>
<p>При подобном оформлении, элементы меню не&nbsp;выстроятся в&nbsp;горизонтальную линию, т.к. &laquo;якоря&raquo; (<code>&lt;a&gt;</code>) находятся внутри блочных контейнеров <code>&lt;li&gt;</code>. А&nbsp;блочные контейнеры всегда выводятся браузером так, как если&nbsp;бы за&nbsp;ними следовал перенос строки (невидимый <code>&lt;br&gt;</code>). При этом, высота &laquo;ступеньки&raquo; может варьироваться в&nbsp;соответствии с&nbsp;текущим значением <code>line-height</code>.</p>
<p>Решение элементарно:</p>
<pre><code class="css">ul#menu li {
	display: inline; /* Средство от "лестницы" */
}</code></pre>
<p>Теперь элементы списка будут выводиться браузером линейно, и&nbsp;меню приобретет подобающий вид:</p>
<p><img src="http://paradigm.ru/;-)/2008/03/stepdown-02.png" width="550" height="71" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/03/preventing-stepdown/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Гигиена CSS-кодинга</title>
		<link>http://paradigm.ru/2008/01/clean-and-efficient-css</link>
		<comments>http://paradigm.ru/2008/01/clean-and-efficient-css#comments</comments>
		<pubDate>Tue, 08 Jan 2008 10:11:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[веб-разработка]]></category>

		<guid isPermaLink="false">http://www.paradigm.ru/2008/01/08/clean-and-efficient-css/</guid>
		<description><![CDATA[Этот пост основан на&#160;статье разработчика Yahoo Store Иствана Сайпосса &#171;How to&#160;create clean and efficient CSS&#187; и&#160;содержит некоторые общие правила написания качественного CSS кода. Текст не&#160;является прямым переводом, а&#160;скорее изложением содержания оригинала, дополненным моими комментариями. Храните CSS во&#160;внешних файлах, присоединяя их&#160;к&#160;HTML документам тегами link. &#60;link rel="stylesheet" type="text/css" href="/css/common.css"&#62; Это даст возможность браузеру сохранять такие файлы в&#160;кэше [...]]]></description>
			<content:encoded><![CDATA[<p>Этот пост основан на&nbsp;статье разработчика Yahoo Store Иствана Сайпосса &laquo;<a href="http://b23.ru/cxn">How to&nbsp;create clean and efficient CSS</a>&raquo; и&nbsp;содержит некоторые общие правила написания качественного CSS кода. Текст не&nbsp;является прямым переводом, а&nbsp;скорее изложением содержания оригинала, дополненным моими комментариями. <span id="more-154"></span></p>
<ul>
<li>Храните CSS во&nbsp;внешних файлах, присоединяя их&nbsp;к&nbsp;HTML документам тегами <code>link</code>.
<pre><code class="html">&lt;link rel="stylesheet" type="text/css" href="/css/common.css"&gt;</code></pre>
<p>Это даст возможность браузеру сохранять такие файлы в&nbsp;кэше и&nbsp;не&nbsp;загружать лишний раз при переходах внутри сайта.</li>
<li>Всегда стремитесь минимизировать количество отдельных CSS файлов. Когда их число возрастает, внутри стилей становится сложно найти необходимое, особенно если селекторы в&nbsp;одном файле наследует те,&nbsp;что определены в&nbsp;другом. Именам файлов всегда стоит задавать осмысленные имена (например, <code>common.css</code> и&nbsp;<code>print.css</code> будут выглядеть понятнее, чем <code>style1.css</code> и&nbsp;<code>vasya.css</code>).
<p>Имена директорий, в&nbsp;которых хранятся таблицы стилей, так&nbsp;же стоит определять согласно стандартизованной (пусть даже в&nbsp;рамках одного сайта) схеме. Например, <code>/css/*</code> или <code>/themes/theme_name/css/*</code>. Кроме того, не стоит забывать о директиве <code>@import</code>, как хорошем вспомогательном средстве структуризации CSS файлов. Уже на&nbsp;этапе проектирования файлового фреймворка для сайта нужно избавить себя от&nbsp;потенциальной проблемы поиска по&nbsp;всему дереву файлов нужной таблицы стилей.</li>
<li>Практически никогда не&nbsp;стоит использовать inline CSS, т.е. определения стилей непосредственно внутри HTML кода с&nbsp;помощью атрибутов <code>style</code>. Во-первых, это противоречит логике (смысл применения CSS состоит в&nbsp;отделении стилей оформления от&nbsp;семантикидокумента, а&nbsp;не&nbsp;в&nbsp;смешивании того и&nbsp;другого), во-вторых, может сделать документ менее управляемым, блокируя возможность задавать стили тем или иным элементам из&nbsp;внешнего CSS.
<p>Встраивание CSS является приемлемым в&nbsp;тех случаях, когда не&nbsp;предполагается правка кода в&nbsp;дальнейшем. Например, если он&nbsp;генерируется програмно для отображения в&nbsp;каких-то конкретных условиях. Но&nbsp;в&nbsp;этом случае, опять&nbsp;же, соит все взвесить, чтобы не&nbsp;перенести проблему с&nbsp;путанницей в&nbsp;стилях на&nbsp;уровень генератора кода.</li>
<li>Атрибуты <code>id</code>&nbsp;и&nbsp;<code>class</code> стоит использовать строго по&nbsp;назначению: <code>id</code>&nbsp;&#8212; для идентификации уникальных элементов, <code>class</code>&nbsp;&#8212; для объединения типовых элементов группы. С&nbsp;их&nbsp;помощью можно подчеркнуть структуру и&nbsp;логику построения документов. В&nbsp;то&nbsp;же время при неправильном использовании, HTML и&nbsp;CSS может стать более громоздским и&nbsp;неуправляемым.</li>
<li>Не стоит многократно повторять определение одного и&nbsp;того&nbsp;же класса для группы элементов, когда его можно определить для их&nbsp;общего контейнера. Например, вместо
<pre><code class="html">&lt;a class="nav" href="index.html"&gt;Home&lt;/a&gt;
&lt;a class="nav" href="info.html"&gt;Info&lt;/a&gt;
&lt;a class="nav" href="contents.html"&gt;Contents&lt;/a&gt;</code></pre>
<p>гораздо логичнее сделать</p>
<pre><code class="html">&lt;div id="navlinks"&gt;
&lt;a href="index.html"&gt;Home&lt;/a&gt;
&lt;a href="info.html"&gt;Info&lt;/a&gt;
&lt;a href="contents.html"&gt;Contents&lt;/a&gt;
&lt;/div&gt;
</code></pre>
</li>
<li>Отражайте иерархию HTML документов в&nbsp;CSS файлах. Например, вначале стоит дать наиболее общее описание для тегов, далее&nbsp;&#8212; перейти к&nbsp;описанию классов, сгруппированных согласно смысловым узлам страниц (общая разметка страницы, шапка, навигационные элементы, отдельные колонки и&nbsp;т.д.).
<p>Благодаря хорошей структурированности стилей, их&nbsp;код можно сделать более лаконичным и&nbsp;легко воспринимаемым. Не&nbsp;понадобится лишний раз переопределять глобальные стили и&nbsp;делать аналогичные описания для разных элементов.<br />
О&nbsp;поддержке структурированности CSS не&nbsp;стоит забывать не&nbsp;только при первоначальной верстке, но&nbsp;и&nbsp;при дальнейшей корректировке стилей, т.к. на&nbsp;этом этапе так&nbsp;же есть хорошие шансы создать беспорядок даже в&nbsp;грамотно-написанном CSS.</li>
<li>Не нужно лишний раз использовать <code>!important</code>. Очень часто его используют для исправления неполадок в&nbsp;частных случаях, но&nbsp;наличие <code>!important</code> само по&nbsp;себе может привести к&nbsp;дополнительным сложностям при дальнейшей работе с&nbsp;таким CSS. То&nbsp;же, кстати, относится к&nbsp;разнообразным хакам: если без них можно обойтись, значит без них нужно обойтись.</li>
<li>Совершенно бессмысленным шагом явялется использование цепочек id&nbsp;(например <code>#main #maintable #navbar</code>). id&nbsp;по&nbsp;определению предназначен для уникальной идентификации элементов и&nbsp;для определения стиля всегда достаточно простого указания его имени, без дополнительного уточнения. Цепочки уместно ипсользовать в&nbsp;отношении элементов и&nbsp;классов.</li>
</ul>
<h3>Ссылки по&nbsp;теме</h3>
<ul>
<li><a href="http://b23.ru/cxn">How to&nbsp;create clean and efficient CSS</a> by&nbsp;Istvan &laquo;RTML 101&raquo; Siposs @ <a href="http://ytimes.blogspot.com/">Y-Times Blog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/01/clean-and-efficient-css/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>«Резиновость» в рамках разумного</title>
		<link>http://paradigm.ru/2007/12/max-width-for-ie</link>
		<comments>http://paradigm.ru/2007/12/max-width-for-ie#comments</comments>
		<pubDate>Thu, 27 Dec 2007 22:10:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-дизайн]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[браузеры]]></category>

		<guid isPermaLink="false">http://www.paradigm.ru/2007/12/28/max-width-for-ie/</guid>
		<description><![CDATA[Как известно, для определения минимального и&#160;максимального значения размеров &#171;резиновых&#187; блоков в&#160;(X)HTML, предусмотрены свойства CSS max-width и&#160;max-height. Все браузеры уже года полтора правильно их&#160;интерпретируют. Кроме IE,&#160;разработчики которого по&#160;каким-то умным маркетинговым причинам клали болт на&#160;многие детали стандартов. Тем не&#160;менее, возможность задавать предельные значения для масштабируемых блоков очень полезна. Например, для того чтобы &#171;резиновая&#187; верстка не&#160;теряла товарный вид [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно, для определения минимального и&nbsp;максимального значения размеров &laquo;резиновых&raquo; блоков в&nbsp;(X)HTML, предусмотрены свойства CSS <code>max-width</code> и&nbsp;<code>max-height</code>. Все браузеры уже года полтора правильно их&nbsp;интерпретируют. Кроме IE,&nbsp;разработчики которого по&nbsp;каким-то умным маркетинговым причинам клали болт на&nbsp;многие детали стандартов.</p>
<p>Тем не&nbsp;менее, возможность задавать предельные значения для масштабируемых блоков очень полезна. Например, для того чтобы &laquo;резиновая&raquo; верстка не&nbsp;теряла товарный вид при максимизации окна браузера на&nbsp;большом мониторе, заставляя пользователя читать полуметровые строки текста.</p>
<p>Раньше я&nbsp;решал этот вопрос с&nbsp;помощью JavaScript: небольшая функция автоматически корректировала ширину &laquo;резиновых&raquo; контейнеров при изменении размера окна браузера. Вчера был найден довольно более красивый способ заставить IE&nbsp;ограничивать масштабируемые блоки. Тоже на&nbsp;основе&nbsp;JS. <span id="more-137"></span></p>
<p>В&nbsp;имлементации CSS IE&nbsp;есть своя-собственная конструкция&nbsp;&#8212; <code>expression</code>, чье значение может вычисляться с&nbsp;помощью client-side скрипта. Например, так:</p>
<pre><code class="css">div {
   width: expression(750 + "px");
}</code></pre>
<p>Что эквивалентно:</p>
<pre><code class="css">div {
   width: 750px;
}</code></pre>
<p>Используя expression в&nbsp;сочетании со&nbsp;стандартными свойствами CSS, можно добиться необходимого эффекта в&nbsp;отношении масштабируемых блоков:</p>
<pre><code class="html">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Limiting width&lt;/title&gt;
&lt;style type="text/css"&gt;
div#cont {
// min-width и max-width для IE
   width:expression(document.body.clientWidth &gt; 776 ?
      "777px" : (document.body.clientWidth &lt; 334 ? "333px" : "auto"));
// то же, для всех остальных
   max-width: 777px;
   min-width: 333px;

   height:320px;
   text-align:center;
   color:black;
   background:#f5f5f5;
}
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;div id="cont"&gt;Hello World!&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Файл лежит здесь: <a href="http://things.paradigm.ru/limited-width.html">http://things.paradigm.ru/limited-width.html</a>. Я&nbsp;проверил работоспособность этого кода в&nbsp;IE&nbsp;5.55, 6,&nbsp;7,&nbsp;Firefox и&nbsp;Opera. Теоретически, должно работать и&nbsp;в&nbsp;IE&nbsp;5.01, т.к. expression появился именно в&nbsp;ней, но&nbsp;проверить не&nbsp;начем&nbsp;&#8212; эта версия на&nbsp;моем компьютере почему-то не&nbsp;уживается с&nbsp;пятью другими инсталяциями IE&nbsp;(:</p>
<p>Точно таким&nbsp;же образом, как и&nbsp;ширину, можно контролировать высоту блоков. Разница в&nbsp;том, что вместо параметра <code>document.body.clientWidth</code>, потребуется использовать <code>this.scrollHeight</code>, а&nbsp;изменять, вместо <code>width</code>, CSS свойство <code>height</code>.</p>
<p>Основано на&nbsp;<a href="http://b23.ru/clx">материалах</a> perishablepress.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2007/12/max-width-for-ie/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->