<?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>Css-live - Сверстай свой мир!</title>
	<atom:link href="http://css-live.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://css-live.ru</link>
	<description>Css-live - Сверстай свой мир!</description>
	<lastBuildDate>Tue, 21 Feb 2012 23:09:23 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CSS Backgrounds and Borders Module Level 3 (&#8220;последний звонок&#8221;)</title>
		<link>http://css-live.ru/vecssti-s-polej/css-backgrounds-and-borders-module-level-3-poslednij-zvonok/</link>
		<comments>http://css-live.ru/vecssti-s-polej/css-backgrounds-and-borders-module-level-3-poslednij-zvonok/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 09:28:46 +0000</pubDate>
		<dc:creator>psywalker</dc:creator>
				<category><![CDATA[ВеCSSти с полей]]></category>
		<category><![CDATA[ВеCSSти]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3676</guid>
		<description><![CDATA[Рабочая группа CSS опубликовала черновик &#34;последнего звонка&#34; (финальную стадию перед присвоением статуса кандидата в рекомендации) спецификации CSS Backgrounds and Borders Module Level 3 (для исправления ошибок предыдущей версии, уже имевшей статус кандидата в рекомендации &#8212; по требованиям рабочего процесса W3C, такие изменения требуют перевода документа обратно в статус черновика). Этот CSS модуль содержит свойства 3-го [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.w3.org/Style/CSS/members">Рабочая группа CSS</a> опубликовала черновик &quot;последнего звонка&quot; (финальную стадию перед присвоением статуса кандидата в рекомендации) спецификации <a href="http://www.w3.org/TR/2012/WD-css3-background-20120214/">CSS Backgrounds and Borders Module Level 3</a> (для исправления ошибок предыдущей версии, уже имевшей статус кандидата в рекомендации &mdash; по требованиям рабочего процесса W3C, такие изменения требуют перевода документа обратно в статус черновика). Этот CSS модуль содержит свойства 3-го уровня, связанные с границами и фоном.&nbsp;Основные добавления к CSS уровня 2 &mdash; границы, состоящие из изображений, боксы со множественными фонами, боксы с закруглёнными углами и тени для боксов. Всем желающим рекомендуется ознакомится с&nbsp;<a href="http://www.w3.org/TR/2012/WD-css3-background-20120214/#changes-2011">changes</a>&nbsp;и отправить комментарии в список рассылки www-style. Крайний срок комментариев: 6 марта 2012 года. Узнайте больше о <a href="http://www.w3.org/Style/">работе над CSS</a>.</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/vecssti-s-polej/css-backgrounds-and-borders-module-level-3-poslednij-zvonok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сайту требуются переводчики</title>
		<link>http://css-live.ru/articles/sajtu-trebuyutsya-perevodchiki/</link>
		<comments>http://css-live.ru/articles/sajtu-trebuyutsya-perevodchiki/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 17:58:55 +0000</pubDate>
		<dc:creator>psywalker</dc:creator>
				<category><![CDATA[Статьи]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3633</guid>
		<description><![CDATA[Добрый день, уважаемые коллеги! Как вы уже наверное знаете, мы стремимся создать, действительно, профессиональное сообщество. Сообщество веб-разработчиков, которое разговаривает на языках HTML, CSS и JS.&#160; Но, к сожалению, наших физических возможностей не хватает на то, чтобы часто пополнять сайт интересным материалом, поэтому мы вынуждены попросить помощи у сообщества. Если у кого-то из вас вдруг возникнет [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день, уважаемые коллеги!</p>
<p>Как вы уже наверное знаете, мы стремимся создать, действительно, профессиональное сообщество. Сообщество веб-разработчиков, которое разговаривает на языках HTML, CSS и JS.&nbsp;<br />
	Но, к сожалению, наших физических возможностей не хватает на то, чтобы часто пополнять сайт интересным материалом, поэтому мы вынуждены попросить помощи у сообщества. Если у кого-то из вас вдруг возникнет желание быть причастным к великому делу и внести свой вклад в его развитие, то мы бы были безумно этому рады. В частности нам нужны переводчики. Люди, хорошо владеющие английским языком, желающие помогать сообществу и развиваться в этом направлении.</p>
<p>Все ваши предложения пишите на почту:&nbsp;<span style="color: rgb(102, 102, 102); font-family: Arial, sans-serif; font-size: 13px; line-height: 16px; text-align: left; white-space: nowrap; ">psywalker09@gmail.com</span></p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/articles/sajtu-trebuyutsya-perevodchiki/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Равномерное выравнивание  блоков по ширине</title>
		<link>http://css-live.ru/articles-css/ravnomernoe-vyravnivanie-blokov-po-shirine/</link>
		<comments>http://css-live.ru/articles-css/ravnomernoe-vyravnivanie-blokov-po-shirine/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 10:43:31 +0000</pubDate>
		<dc:creator>psywalker</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Статьи по CSS]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=1007</guid>
		<description><![CDATA[В задачах вёрстки периодически возникают моменты, когда появляется необходимость выровнять какой-нибудь список по ширине экрана. При этом пункты этого списка должны выравниваться равномерно, прижимаясь своими крайними элементами к границам контейнера, а расстояние между ними должно быть одинаковым. Чтобы было более понятно, о чём идёт речь, приведу пару изображений. На рисунках видно, что при разном разрешении [...]]]></description>
			<content:encoded><![CDATA[<p>В задачах вёрстки периодически возникают моменты, когда появляется необходимость выровнять какой-нибудь список по ширине экрана. При этом пункты этого списка должны выравниваться равномерно, прижимаясь своими крайними элементами к границам контейнера, а расстояние между ними должно быть одинаковым.<br />
	Чтобы было более понятно, о чём идёт речь, приведу пару изображений.</p>
<p><a class="width400" href="http://css-live.ru/wp-content/uploads/2011/11/primer3.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1046" height="97" src="http://css-live.ru/wp-content/uploads/2011/11/primer3.png" width="417" /></a></p>
<p><a class="width500" href="http://css-live.ru/wp-content/uploads/2011/11/primer21.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1020" height="100" src="http://css-live.ru/wp-content/uploads/2011/11/primer21.png" width="517" /></a></p>
<p>На рисунках видно, что при разном разрешении экрана, пункты всё равно продолжают выравниваться по ширине, примыкая к боковым стенкам и делая отступы между собой &#8211; равнозначными.<br />
	В этой статье я хочу подробнее разобрать разные варианты решения данной задачи, а также рассмотреть все плохие и хорошие стороны этих методов.</p>
<p><span id="more-1007"></span></p>
<h2>Как это работает?</h2>
<p>Перед тем, как рассматривать каждое решение в отдельности, давайте немного углубимся в тонкости механизма и поразмыслим, как он работает.<br />
	По сути мы должны получить то, что делает <var>text-align: justify</var> с текстом. Так как поведение наших блоков уж очень напоминает результат выравнивания слов в строке с помощью именно этого свойства. Немного углубившись в процесс работы <var>text-align: justify</var>, мы можем наблюдать следующий алгоритм.</p>
<p><strong>Этап первый</strong><br />
	Сначала в строке текста ищутся минимальные, неразрывные &quot;кирпичики&quot;. Это могут быть отдельные слова в тексте, картинки, инлайн-блоки, инлайн-таблицы и т.д. В общем всё то, что в случае необходимости перенесется на новую строку как единое целое.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/justify1.jpg" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1064" height="187" src="http://css-live.ru/wp-content/uploads/2011/11/justify1.jpg" width="500" /></a></p>
<p>Цифрой <strong>1</strong> на картинке отмечены обычные инлайн-боксы, т.е. попросту текст или инлайн элементы, такие, например, как &lt; <strong>span&gt;</strong> или <strong>&lt;em&gt;</strong>.<br />
	Под цифрой <strong>2</strong> у нас находится элемент строчно-блочного уровня, т.е <var>inline-block</var>. Как можно заменить, алгоритм отступов внутри него рассчитывается заново. Причина в том, что внутри себя <var>inline-block</var> генерирует свой собственный контекст форматирования. Что нельзя сказать об обычном <var>inline</var> элементе, внутри которого межсловное расстояние распределялось бы, по общему, внешнему алгоритму.<br />
	Цифрой <strong>3</strong> отмечена обычная картинка. Так же, как и остальные, она является строчным, целым элементом.<br />
	Для нашей строки все эти вещи представляют из себя отдельные сущности, неразделимые слова, единые целые. А расстояния между ними как раз и регулируется нашим механизмом, под названием <var>text-align: justify</var><br />
	<strong>*</strong>Последняя же строка не попадает в поле зрения <var>justify</var>, так как он работает только для целиком заполненных строк, а в последней строке пробелы всегда остаются своего обычного размера.</p>
<p><strong>Этап второй</strong><br />
	Вторым этапом алгоритм высчитывает ширины всех наших &quot;кирпичей&quot; в строке, складывает их, а полученный результат отнимает от общей ширины самой строки.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/justify31.jpg" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1068" height="197" src="http://css-live.ru/wp-content/uploads/2011/11/justify31.jpg" width="500" /></a></p>
<p>Отсюда можно сделать вывод, что сейчас мы имеем общую сумму всех пробельных зон в строке, которая равна <strong>116px</strong>.</p>
<p><strong>Этап третий &#8211; завершающий</strong><br />
	Третьим и последним этапом алгоритма будет деление полученной цифры (в данном случае 116) на количество пробелов в строке (в нашей строке их 7). Из полученного результата (16.571) вычитается ширина одного пробела и уже это значение добавляется к каждому из них. Что в итоге даёт равномерное распределение отступов во всей строке.</p>
<p><strong>Итог</strong><br />
	Как мы можем видеть, алгоритм работы <var>text-align: justify</var> не так уж и сложен на самом деле, всё вроде бы понятно и логично. Я уверен, что каждый из нас, решая подобную задачу, высчитывал бы результат, по точно такому же сценарию. Сложность заключается только в том, чтобы написать хорошее, красивое, а главное качественное решение, затратив при этом минимум материала. Ведь существует много подводных камней, в виде последней (не попадающей под алгоритм) строки, которую нужно прятать, или каким либо образом выравнивать точно так же, как и все остальные. Ну и естественно нельзя забывать об интерпретации кода, таких браузеров, как Opera, IE6-7, которые любят преподносить неожиданные сюрпризы.</p>
<h2>Наша задача</h2>
<p>Наша задача состоит в том, чтобы построить решение на базе этого алгоритма. Применить, симулировать, заменить, сделать всё что угодно, главное в итоге получить то, что мы хотим. А именно &#8211; равномерно выровненные элементы в строке, боковые из которых прижаты к своим границам. Ну и конечно же расстояния (пробелы) между этих элементов должны быть абсолютно одинаковыми при любой ширине контейнера.</p>
<h3>Вариант 1</h3>
<p>Самое первое, что пришло мне на ум, это взять список из пяти пунктов, сделать 4 из них обтекаемыми, а у последнего отменить <var>float</var> и растянуть на всю оставшуюся ширину. Чтобы было понятнее, о чём идёт речь, привожу код.<br />
	Структура будет таковой</p>
<pre class="prettyprint" rel="HTML">&lt;ul&gt;
	&lt;li class=&quot;left&quot;&gt;
		&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
	&lt;/li&gt;
	&lt;li class=&quot;left&quot;&gt;
		&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
	&lt;/li&gt;
	&lt;li class=&quot;right&quot;&gt;
		&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
	&lt;/li&gt;
	&lt;li class=&quot;right&quot;&gt;
		&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
	&lt;/li&gt;
	&lt;li class=&quot;center&quot;&gt;
		&lt;div class=&quot;content&quot;&gt;&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>А CSS таким</p>
<pre class="prettyprint" rel="CSS">ul {
	font: 14px Verdana, Geneva, sans-serif;
	overflow: hidden;
}
	ul li {

	}
	ul li.left {
		width: 20%;
		float: left;
	}
	ul li.right {
		width: 20%;
		float: right;
		text-align: right;
	}
	ul li.center {
		text-align: center;
	}
	ul li .content {
		background: #E76D13;
		width: 98px;
		height: 98px;
		display: inline-block;
		text-align: left;
		border: 1px solid #000;

		/* эмуляция inline-block для IE6-7*/
		//display : inline;
		//zoom : 1;
	}
</pre>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/width600.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1085" height="147" src="http://css-live.ru/wp-content/uploads/2011/11/width600.png" width="500" /></a></p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/width700.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1086" height="126" src="http://css-live.ru/wp-content/uploads/2011/11/width700.png" width="500" /></a></p>
<p>Что мы собственно сделали? А сделали мы следующее. Два левых и два правых пункта мы раскидали по разным сторонам с помощью <var>float : left</var> и <var>float : right</var> соответственно, при этом назначив им по 20% ширины каждому, что в сумме дало 80% от всей ширины контейнера. Последний пункт, я решил не делать обтекаемым, так как его содержимое само по себе занимает всё оставшиеся пространство после float-блоков.<br />
	Соответственно для такого решения пришлось пожертвовать разметкой, а точнее дополнительными классами + внутренними контейнерами для контента. Как вы могли заметить, каждый из этих контейнеров я сделал строчно-блочным, повесив на них <var>display : inline-block</var>, благодаря чему мой контент смог выравниваться в любую сторону с помощью <var>text-align</var> у родителя. Эти &quot;жертвы&quot; с большой натяжкой можно было бы отнести к хорошему решению, если бы не некоторые, весомые &quot;но&quot;.<br />
	Во-первых, как видно из скриншотов, равномерные отступы имеют только боковые пункты, а между средним и остальными есть явная разница. И чем больше ширина контейнера, тем заметнее это становится.<br />
	Во-вторых, ради эксперимента, я назначил второму пункту ширину, равную 200px.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/width70021.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1093" height="130" src="http://css-live.ru/wp-content/uploads/2011/11/width70021.png" width="500" /></a></p>
<p>И второй элемент сразу же оказался под третьим. Конечно же можно было бы поставить минимальную ширину контейнеру и такого бы не произошло, но разве можно считать это действие отговоркой или решением? Конечно же нет! Я хочу, чтобы наши пункты могли иметь любую ширину и при этом чтобы наш алгоритм идеально работал.<br />
	Ну и в-третьих, все эти дополнительные обёртки, классы, рассчитывание кол-ва элементов, их ширины, а так же и ширины контейнера ставят абсолютную точку на этот варианте, заставляя нас идти дальше, в поисках настоящего решения.<br />
	Выкладываю этот вариант на всеобщий суд и перехожу к следующему способу.<br />
	<a href="http://css-live.ru/Primer/viravnivanie-items/viravnivanie-items.html">Вариант с разносторонним выравниванием</a></p>
<h3>Вариант 2</h3>
<p>Второй вариант напоминает первый, но только отчасти. Дело в том, что в нём мы выравниваем по левому краю только один, левый блок, а остальные находятся уже в своём, собственном контейнере. Но перейдём от слов к делу.</p>
<pre class="prettyprint" rel="HTML">&lt;ul&gt;
	&lt;li class=&quot;one&quot;&gt;
		&lt;div class=&quot;content&quot;&gt;1&lt;/div&gt;
	&lt;/li&gt;
	&lt;li class=&quot;two&quot;&gt;
		&lt;ul&gt;
			&lt;li&gt;
				&lt;div class=&quot;content&quot;&gt;2&lt;/div&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;div class=&quot;content&quot;&gt;3&lt;/div&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;div class=&quot;content&quot;&gt;4&lt;/div&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;div class=&quot;content&quot;&gt;5&lt;/div&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</pre>
<pre class="prettyprint" rel="CSS">ul {
	font: 14px Verdana, Geneva, sans-serif;
	overflow: hidden;
}
	ul li.one {
		float: left;
	}
	ul li.two {
		overflow : hidden;
		float : none;
	}
	ul li.two li {
		width: 25%;
		text-align: right;
		float: left;

		/* Лекарство для IE6-7*/
		//width: 24.9%;
	}

	ul li .content {
		background: #E76D13;
		width: 98px;
		height: 98px;
		display: inline-block;
		text-align: left;
		border: 1px solid #000;

		/* эмуляция inline-block для IE6-7*/
		//display : inline;
		//zoom : 1;
	}
</pre>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/width6002.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1106" height="146" src="http://css-live.ru/wp-content/uploads/2011/11/width6002.png" width="500" /></a></p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/width7001.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1107" height="127" src="http://css-live.ru/wp-content/uploads/2011/11/width7001.png" width="500" /></a></p>
<p>Если вы скажите, что в данной ситуации мы по сути имеем две разных колонки, то будете абсолютно правы. Ведь наша структура поделена на две части, левая из которых представляет из себя контейнер с одним блоком, а правая соответственно содержит в себе все остальные. Выглядит это примерно так:</p>
<p><a class="width600" href="http://css-live.ru/wp-content/uploads/2011/11/float-right3.jpg" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1149" height="171" src="http://css-live.ru/wp-content/uploads/2011/11/float-right3.jpg" width="600" /></a></p>
<p>Левая колонка прижата к левому краю и содержит в себе самый первый, одиночный блок. Это нужно для того, чтобы правая часть прижималась вплотную с правой стороны и растягивалась на всё оставшееся место. Растяжка правой части происходит благодаря <var>overflow : hidden</var>, который создаёт свой контекст форматирования, т.е. по сути свой собственный, независимый контейнер. Для всех дочерних элементов этого контейнера его ширина составляет 100% и поэтому блоки внутри него мы растягиваем в соответствии с этим правилом. Четыре блока имеют ширину 25%, что в сумме даёт 100. На изображении можно увидеть, как расположены эти блоки. Видно, что строчно-блочные элементы с контентом, внутри них, выровнены по правому краю с помощью <var>text-align : right</var>, благодаря чему самый правый блок прижат к своей боковой стенке, так же как и левый.</p>
<p>Благодаря таким &quot;жертвам&quot; с двумя колонками, мы получили отличный результат, и как видно из первых рисунков, при разных разрешениях, расстояние отступов между блоками остаётся абсолютно одинаковым. Это происходит за счёт равнозначных блоков в правой части. Ширина каждого из них составляет 25%, а элемента внутри них &#8211; 100px. Что и даёт равные отступы слева от каждого &quot;кирпичика&quot; в отдельности.<br />
	На данный момент можно смело заявить, что при фиксированной ширине блоков у нас получилось именно то, что мы хотели.</p>
<p>Но всё же интересно узнать, что будет, если мы поменяем ширину сначала у первого, а потом и у любого блока из правой части. Давайте для начала поставим левому&#8230; ну допустим 150px.</p>
<pre class="prettyprint" rel="CSS">ul li.one .content { width: 150px;}
</pre>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/width700-150.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1160" height="171" src="http://css-live.ru/wp-content/uploads/2011/11/width700-150.png" width="500" /></a></p>
<p>Всё здорово! Пока работает всё та же идея с правым, самостоятельным контейнером. А теперь перенесём нашу ширину на первый блок в правой части.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/width700-right150.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1164" height="146" src="http://css-live.ru/wp-content/uploads/2011/11/width700-right150.png" width="500" /></a></p>
<p>Эх, а вот этот эксперимент потерпел неудачу. Правый отступ у самого левого блока оказался меньше, чем все остальные. Всё легко объясняется тем, что контент первого элемента в правой части, стал больше на 50px, а так как он выровнен по правой стороне, то ширина визуально прибавилась к его левой части и соответственно стала отличаться от ширины соседних блоков. Ну и естественно поменялся отступ, который стал меньше ровно на 50px.</p>
<p>Из всего этого можно сделать вывод, что данный метод явно лучше, чем его предшественник и то, что он имеет право на жизнь. Единственный его недостаток связан с тем, что мы не может задать разную ширину блокам, и должны придерживаться одинаковой. Так что, если у вас есть список, в котором все пункты имеют равную ширину, то вы вполне можете применять этот подход. Конечно же, нужно понимать, что без двухколоночной структуры тут не обойтись + нужна обязательная минимальная ширина у контейнера <var>(min-width)</var>, иначе при маленькой ширине экрана блоки будут наезжать друг на друга.<br />
	<strong>*</strong> Кстати, у себя в примере, в правом контейнере я использовал четыре блока по 25%, и их общая сумма составила 100%. Поэтому нужно помнить, что если блоков будет, ну скажем 6, то ширина каждого из них, будет равна 16.666, что говорит о дробных процентах, которые, например, не поддерживаются в браузере Opera.<br />
	Соответственно результат в этом случае будет немного не тем, чем вам хотелось бы.</p>
<p><a href="http://css-live.ru/Primer/viravnivanie-items/dve-colonki.html">Вариант с двумя колонками</a></p>
<h3>Вариант 3 &#8211; text-align: justify</h3>
<p>Стоит отметить, что до этого момента, ни в одном примере, мы ни разу не воспользовались <var>text-align: justify</var>, даже не смотря на то, что именно на основе его алгоритма и строятся все наши решения. Я предлагаю нарушить эту традицию и, наконец, пустить уже в дело этого зверя.</p>
<p>В первой части статьи мы выяснили, что <var>text-align: justify</var> влияет на все строки, кроме последней, а значит нужно построить наш список с учётом этого поведения, добавив в конец меню дополнительный, вспомогательный элемент.</p>
<pre class="prettyprint" rel="HTML">&lt;ul&gt;
	&lt;li&gt;1&lt;/li&gt;
	&lt;li&gt;2&lt;/li&gt;
	&lt;li&gt;3&lt;/li&gt;
	&lt;li&gt;4&lt;/li&gt;
	&lt;li&gt;5&lt;/li&gt;
	&lt;li class=&quot;helper&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<pre class="prettyprint" rel="CSS">ul {
	font: 14px Verdana, Geneva, sans-serif;
	text-align: justify;
}

	ul li  {
		background: #E76D13;
		width: 98px;
		height: 98px;
		display: inline-block;
		text-align: left;
		border: 1px solid #000;

		/* эмуляция inline-block для IE6-7*/
		//display : inline;
		//zoom : 1;
	}
	ul li.helper {
		width: 100%;
		height: 0;
		visibility: hidden;
	}
</pre>
<p>Из кода ясно, что мы создали список с пятью основными и одним элементом &#8211; помощником. <var>text-align: justify</var> на главном элементе-родителе (<strong>ul</strong>), заставляет своих потомков подчиняться своему алгоритму. Ведь, как известно, это свойство работает с текстом, а так как наши строчно-блочные (<var>display: inline-block</var>) пункты, по сути и являются неразрывными словами в строке, то это поведение вполне закономерно. Кстати, стоит учесть, что <var>text-align: justify</var> наследуемое свойство, поэтому <var>text-align: left</var> на ближайших потомках &#8211; необходимая мера. Этим самым мы как бы возвращаем выравнивание содержимого наших блоков в прежнее состояние.<br />
	В первой части статьи я упоминал, что наш алгоритм не распространяется на последнюю строку, а работает со всеми строками кроме неё. Поэтому я добавил в конец ещё один элемент, пустышку, и растянул его на 100% по ширине, тем самым заставив его растянуться на самую последнюю строчку в списке. С помощью нехитрых приёмов (<var>height: 0</var>, <var>visibility: hidden</var>) я, можно сказать, почти что спрятал его. Почему я сказа &quot;Почти что&quot;? Об этом чуть позже, для начала давайте взглянем на то, что у нас вышло.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/helper1.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1256" height="184" src="http://css-live.ru/wp-content/uploads/2011/11/helper1.png" width="500" /></a></p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/helper700.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1257" height="158" src="http://css-live.ru/wp-content/uploads/2011/11/helper700.png" width="500" /></a></p>
<p>Первое, что бросается в глаза, это то, что при разной ширине наш алгоритм работает так, как и должен. При пунктах с одинаковой шириной расстояние между ними сохраняется одинаковым, что не может не радовать. Но всё таки интересно узнать, будет ли всё так же хорошо при разной ширине блоков. Назначим паре пунктам классы и проверим это.</p>
<pre class="prettyprint" rel="HTML">&lt;ul&gt;
	&lt;li class=&quot;first&quot;&gt;1&lt;/li&gt;
	&lt;li&gt;2&lt;/li&gt;
	&lt;li class=&quot;third&quot;&gt;3&lt;/li&gt;
	&lt;li&gt;4&lt;/li&gt;
	&lt;li&gt;5&lt;/li&gt;
	&lt;li class=&quot;helper&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Добавим для них свои правила.</p>
<pre class="prettyprint" rel="CSS">.first { width: 150px;}
.third { width: 200px;}
</pre>
<p>Проверяем.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/helper700-2.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1261" height="160" src="http://css-live.ru/wp-content/uploads/2011/11/helper700-2.png" width="500" /></a></p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/helper800-2.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1262" height="143" src="http://css-live.ru/wp-content/uploads/2011/11/helper800-2.png" width="500" /></a></p>
<p>Я специально увеличил ширину экрана, чтобы при маленькой ширине блоки не перескакивали на другую строку, как обычные слова в тексте. Но, если посмотреть на результаты алгоритма, то он работает! Пробелы между элементами остаются равнозначными, даже не смотря на то, что у двоих из них, мы увеличили ширину.<br />
	Т.е. можно с лёгкостью заявлять, что этот метод, с дополнительным элементом в конце &#8211; даёт отличный результат и, если ограничить экран по ширине, то его применение на практике нас не разочарует.<br />
	Так, ну а теперь, пожалуй, настало время подлить ложку дёгтя.<br />
	Во-первых, как вы могли заметить, во всех примерах я перечислял все браузеры, кроме IE6-7.<br />
	Во-вторых, опять же, как вы, наверное могли видеть на рисунках, внизу нашей строки, где дополнительный элемент, есть большие, непонятные отступы.<br />
	Давайте разбираться по порядку.</p>
<p><strong>Первая проблема</strong> &#8211; это проблема IE6-7. Не приводя скриншоты, скажу сразу, что наш метод там не работает. Пункты в этих браузерах прижаты друг к другу вплотную и не растягиваются в строке. Дело в том, что парсер IE6-7 полностью игнорирует закрывающие теги у элементов <strong>&lt;li&gt;</strong>. А нет тегов &#8211; значит нет пробелов между ними, и, следовательно <var>text-align: justify</var> пропускает нашу строку, состоящую по сути из одних &quot;строчно-блочных&quot; слов, прижатых друг к другу.</p>
<p>За решением данной проблемы мы отправляемся на самую высокую гору&#8230; на <a href="http://msdn.microsoft.com/en-us/default.aspx">MSDN</a>. Мда&#8230; найти что либо на этом сайте, представляет большую трудность. Но, всё же повозившись, некоторое время, решение было <a href="http://msdn.microsoft.com/en-us/library/ms531172%28v=vs.85%29.aspx">найдено</a>! <var>text-justify: newspaper</var> &#8211; свойство для увеличения или уменьшения интервалов между буквами и между словами. MSDN заявляет, что эта вещь &quot;Самая навороченная форма выравнивания для латинского алфавита&quot;, а вот в <a href="http://www.microsoft.com/middleeast/msdn/JustifyingText-CSS.aspx">этой статье</a> ещё есть и дополнение, что для арабских текстов это свойство вытягивает и сами буквы.<br />
	Отлично, нам как раз нужно что нибудь на подобии. Давайте-ка проверим их слова на деле.</p>
<pre class="prettyprint" rel="CSS">ul {
	font: 14px Verdana, Geneva, sans-serif;
	text-align: justify;

	/* Лекарство для IE6-7*/
	text-justify: newspaper;
}

	ul li  {
		background: #E76D13;
		width: 98px;
		height: 98px;
		display: inline-block;
		text-align: left;
		border: 1px solid #000;

		/* эмуляция inline-block для IE6-7*/
		//display : inline;
		//zoom : 1;
	}
	ul li.helper {
		width: 100%;
		height: 0;
		visibility: hidden;
	}
	.first { width: 150px;}
	.third { width: 200px;}
</pre>
<p>А вот и результат.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/IE6-7.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1275" height="108" src="http://css-live.ru/wp-content/uploads/2011/11/IE6-7.png" width="500" /></a></p>
<p>Победа! <strong>IE6-7</strong> были побеждены их же оружием. Здорово. Теперь во всех браузерах, начиная с IE6, наш способ работает идеально. Выходит, что MSDN не подвели и их слова подтвердились на деле. Так что <var>text-align: justify</var> выручил нас, поэтому берём его на заметку и переходим к решению второй проблемы.</p>
<p><strong>Вторая проблема</strong> связана с непонятным отступом между низом списка и нашей строкой с элементами. В чём же дело? А дело в том, что всё вполне закономерно и этими странными отступами являются ни кто иные, как <strong>межстрочный интервал</strong> (<var>line-height</var>) и <strong>размер шрифта</strong> (<var>font-size</var>), которые априори присутствуют у строк и букв в тексте. Наши элементы &#8211; блочные только внутри, а строчные снаружи, поэтому они и попадают под эти правила.<br />
	Как быть? А легко! Мы можем повесить на контейнер обнуление этих стилей, а уже у потомков восстановить их в прежнее состояние. Пробуем.</p>
<pre class="prettyprint" rel="CSS">ul {
	font: 14px Verdana, Geneva, sans-serif;
	text-align: justify;

	/* Обнуляем для родителя*/
	line-height: 0;
	font-size: 1px; /* 1px для Opera */

	/* Лекарство для IE6-7*/
	text-justify: newspaper;
}

	ul li  {
		background: #E76D13;
		width: 98px;
		height: 98px;
		display: inline-block;
		text-align: left;
		border: 1px solid #000;

		/* Востанавливаем у потомков, кроме последнего*/
		line-height: normal;
		font-size: 14px;

		/* Без него в Opera будет отступ под элементами */
		vertical-align: top;

		/* эмуляция inline-block для IE6-7*/
		//display : inline;
		//zoom : 1;
	}
	ul li.helper {
		width: 100%;
		height: 0px;
		visibility: hidden;
		overflow: hidden;
	}
	.first { width: 150px;}
	.third { width: 200px;}
</pre>
<p>Результат.</p>
<p><strong>До обнуления</strong><a href="http://css-live.ru/wp-content/uploads/2011/11/was.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1282" height="116" src="http://css-live.ru/wp-content/uploads/2011/11/was.png" width="500" /></a></p>
<p><strong>После обнуления</strong><a href="http://css-live.ru/wp-content/uploads/2011/11/now.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1283" height="110" src="http://css-live.ru/wp-content/uploads/2011/11/now.png" width="500" /></a></p>
<p>Отлично! Всё получилось. Обнуление стилей у главного контейнера помогло нам. Единственное, что теперь стоит помнить, это то, что в связи с обнулением размера шрифта мы не сможем задать нашим пунктам шрифт в таких единицах длины, как <strong>em</strong>, а так же % для <strong>&lt;body&gt;</strong> не принесут желаемого результата. Но, а целом, наш метод работает идеально, так что можно подводить итоги и идти дальше, ведь нам же мало одного решения, нам же нужно больше и лучше, не правда ли?</p>
<p>Подводя промежуточные итоги, скажу, что данный подход пока что лидер среди присутствующих до сей поры решений, и что, я лично, не вижу в нём ни одного изъяна, правда, кроме&#8230; Кроме дополнительного элемента в конце строки, плюс, как мне кажется, неактуальные проблемы с % и em. Но, эти натянутые минусы, никак не могут быть причиной отказа от представленного варианта. Так что смотрим результат и идём дальше.<br />
	<a href="http://css-live.ru/Primer/viravnivanie-items/dopolnitelniy-element.html">Вариант дополнительным элементом</a></p>
<h3>Вариант 4 &#8211; Избавление от дополнительного элемента</h3>
<p>В предыдущем варианте для нашей цели мы использовали дополнительный элемент, ставя его в конец списка. С одной стороны, конечно же, этот маневр принес свои плоды, но с другой&#8230; но с другой стороны создал некие неудобства. Например, при динамическом добавлении пунктов, вспомогательный блок будет только мешать, да и потом этот &quot;хвост&quot; портит нашу структуру, засоряя её. В этом варианте, я предлагаю избавиться от него, не испортив при этом решение.<br />
	В CSS2.1 уже давно есть такие вещи, как <a href="http://www.w3.org/TR/CSS21/selector.html#before-and-after">псевдоэлементы</a>. Это такие абстрактные сущности, которые могут быть сгенерированы каким нибудь элементом и вставлены в его начало или конец. Почему бы не заменить таким псевдоэлементом наш лишний вспомогательный блок? Давайте попробуем&#8230;</p>
<pre class="prettyprint" rel="HTML">&lt;ul&gt;
	&lt;li&gt;1&lt;/li&gt;
	&lt;li&gt;2&lt;/li&gt;
	&lt;li&gt;3&lt;/li&gt;
	&lt;li&gt;4&lt;/li&gt;
	&lt;li&gt;5&lt;/li&gt;
&lt;/ul&gt;
</pre>
<pre class="prettyprint" rel="CSS">ul {
	font: 14px Verdana, Geneva, sans-serif;
	text-align: justify;

	/* Обнуляем для родителя*/
	line-height: 0;
	font-size: 1px; /* 1px для Opera */

	/* Лекарство для IE6-7*/
	text-justify: newspaper;
	zoom:1;
}
	ul:after {
			width: 100%;
			height: 0;
			visibility: hidden;
			overflow: hidden;
			content: &#39;&#39;;
			display: inline-block;

	}
		ul li  {
			background: #E76D13;
			width: 98px;
			height: 98px;
			display: inline-block;
			text-align: left;
			border: 1px solid #000;

			/* Востанавливаем у потомков, кроме последнего*/
			line-height: normal;
			font-size: 14px;

			/* Без него в Opera будет отступ под элементами */
			vertical-align: top;

			/* эмуляция inline-block для IE6-7*/
			//display : inline;
			//zoom : 1;
		}
</pre>
<p>В данной ситуации мы воспользовались псевдоэлементом <var>:after</var>, который сгенерировали в конце нашего списка. Выставив ему те же значения, что и бывшему, вспомогательному блоку, мы, по сути сделали тоже самое, но не залезая в разметку. Т.е. создали такой же, пустой, но полезный элемент. И вот результаты.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/firefox-opera-chrome-safari.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1332" height="139" src="http://css-live.ru/wp-content/uploads/2011/11/firefox-opera-chrome-safari.png" width="500" /></a></p>
<p>Здорово! Трюк с псевдоэлементом сработал. Теперь наша разметка чистая, аккуратная и без лишнего &quot;мусора&quot;. Нам удалось избавиться от дополнительного элемента, полностью заменив его сгенерированным.<br />
	Но, как обычно, не обошлось без <del datetime="2011-12-02T07:38:17+00:00">IE6-7 </del> приключений. К сожалению, в браузерах IE6-7 нет поддержки <var>:after</var> и <var>:before</var>. А если нет поддержки, следовательно и нет никаких вспомогательных блоков, а значит и растягивать попросту нечего. Поэтому картина в этих браузерах такова.</p>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/IE6-72.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1340" height="111" src="http://css-live.ru/wp-content/uploads/2011/11/IE6-72.png" width="500" /></a></p>
<p>Как видно из скриншота, IE6-7 полностью игнорирует пробелы между блоков, прижимая их вплотную друг к другу. Даже не смотря на то, что мы уже задействовали тяжёлую артиллерию в виде <var>text-justify: newspaper</var>. Почему же это происходит? Давайте выясним.<br />
	Оказывается всё дело в том, что <var>text-justify: newspaper</var> лишь даёт <strong>возможность</strong> растягивать наши буквы (inline-block), но не <strong>команду</strong>. Проще говоря, он рассказывает строке, как бы он хотел, чтобы она была растянута, а <var>text-align: justify</var> является растягивающей силой. Т.е. <var>text-align: justify</var> отвечает за растяжение строки, а <var>text-justify: newspaper</var> лишь уточняет, как именно это растяжение будет происходить.<br />
	Да, но тогда возникает вопрос: &quot;Если есть и возможность и сила, которая может её исполнить, то почему же тогда ничего не происходит?&quot;. Ответ кроется в самом свойстве <var>text-align: justify</var>. Если вы помните, в обсуждении его алгоритма я упомянул о том, что он не распространяется на последнюю строку в тексте. А так как мы убрали вспомогательный элемент в конце списка, то соответственно наша строка (пускай даже она одна) с блоками &#8211; стала уже последней, и следовательно алгоритм отказался с ней работать.</p>
<p><strong>Как же быть? Есть ли выход?</strong><br />
	К счастью мир не без добрых людей, и один такой добрый человек направил меня на верный путь. Оказывается решение было у меня под носом. <var><a href="http://htmlbook.ru/css/text-align-last">text-align-last</a></var> &#8211; свойство, которое включает алгоритм <var>text-align: justify</var> в самой последней строке текста, если к ней применён этот самый <var>text-align: justify</var>. Проще говоря, когда мы применяем к тексту обычный <var>text-align: justify</var>, то, видя это, <var>text-align-last</var> указывает первому на то, что он поступает плохо и что ему придётся теперь работать и в последней строчке тоже.<br />
	Самое интересное, что это свойство считается ориентированным именно на Internet Explorer, в котором он нам как раз и нужен). В общем пора переходить к делу.</p>
<pre class="prettyprint" rel="CSS">ul {
	font: 14px Verdana, Geneva, sans-serif;
	text-align: justify;

	/* Обнуляем для родителя*/
	line-height: 0;
	font-size: 1px; /* 1px для Opera */

	/* Лекарство для IE6-7*/
	text-justify: newspaper;
	zoom:1;

	/* Включаем в работу последнюю строку*/
	text-align-last: justify;
}
	ul:after {
			width: 100%;
			height: 0px;
			visibility: hidden;
			overflow: hidden;
			content: &#39;&#39;;
			display: inline-block;

	}
		ul li  {
			background: #E76D13;
			width: 98px;
			height: 98px;
			display: inline-block;
			text-align: left;
			border: 1px solid #000;

			/* Востанавливаем у потомков, кроме последнего*/
			line-height: normal;
			font-size: 14px;

			/* Без него в Opera будет отступ под элементами */
			vertical-align: top;

			/* эмуляция inline-block для IE6-7*/
			//display : inline;
			//zoom : 1;
		}
</pre>
<p><a href="http://css-live.ru/wp-content/uploads/2011/11/IE6-7-21.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-1397" height="143" src="http://css-live.ru/wp-content/uploads/2011/11/IE6-7-21.png" width="500" /></a></p>
<p>Да! У нас получилось. <var>text-align-last: justify</var> сделал то, что от него требовалось, и сделал это на 5 баллов. Алгоритм включился в работу, в нашей последней и единственной строке. Так что празднуем победу и подводим итоги этого способа.</p>
<p>Ну что ж, я доволен. Доволен тем, что нам удалось найти действительно достойное решение. Причём не просто найти, а разобраться во всём и довести его до абсолютной кроссбраузерности, затратив минимум кода и не засоряя разметки. На лицо одни плюсы, а что же с минусами? Как по мне, так их попросту &#8211; нет. По сравнению с предыдущим вариантом, в этом мы только улучшили результаты. Разве что&#8230;</p>
<blockquote>
<p>Единственное, что теперь стоит помнить, это то, что в связи с обнулением размера шрифта мы не сможем задать нашим пунктам шрифт в таких единицах длины, как em, а так же % для &lt;body&gt; не принесут желаемого результата.</p>
</blockquote>
<p>Но, опять же, эти &quot;минусы&quot; с большой натяжкой можно назвать таковыми. Их неактуальность говорить о том, что про них можно практически забыть, если это не принципиально.<br />
	Так что в целом решение отличное, надёжное и действительно качественное.<br />
	<a href="http://css-live.ru/Primer/viravnivanie-items/pseudo-element.html">Вариант с псевдо-элементом</a></p>
<h2>Резюме</h2>
<p>В этой статье мы рассматривали не только методы, которые могут помочь нам в равномерном выравнивании блоков по ширине, но и так же очень подробно разобрали механизмы работы всех свойств и деталей, участвующих в процессе. Всё это важно для понимания вещей, с которыми мы имеем дело. Поэтому я настоятельно рекомендую перечитать статью, и не один раз.<br />
	Я безумно рад, что нам удалось добиться своей цели и найти достойное и качественное решения.</p>
<h3>Все варианты воедино</h3>
<p><strong>1.</strong> <a href="http://css-live.ru/Primer/viravnivanie-items/viravnivanie-items.html">Вариант с разносторонним выравниванием</a> (К сожалению неработающее решение. Надеюсь, что в комментариях кто нибудь натолкнёт на верный путь)<br />
	<strong>2.</strong> <a href="http://css-live.ru/Primer/viravnivanie-items/dve-colonki.html">Вариант с двумя колонками</a> (Работающее решение, но только с фиксированными по ширине блоками)<br />
	<strong>3.</strong> <a href="http://css-live.ru/Primer/viravnivanie-items/dopolnitelniy-element.html">Вариант дополнительным элементом</a> (Работающее решение)<br />
	<strong>4.</strong> <a href="http://css-live.ru/Primer/viravnivanie-items/pseudo-element.html">Вариант с псевдо-элементом</a> (Работающее решение)</p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/articles-css/ravnomernoe-vyravnivanie-blokov-po-shirine/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Слухи: два из трех модулей CSS3 для раскладки, возможно, объединят в один</title>
		<link>http://css-live.ru/vecssti-s-polej/obedinenie-grid-lejauta-i-timplejt-lejauta-v-odin-modul/</link>
		<comments>http://css-live.ru/vecssti-s-polej/obedinenie-grid-lejauta-i-timplejt-lejauta-v-odin-modul/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 12:34:14 +0000</pubDate>
		<dc:creator>psywalker</dc:creator>
				<category><![CDATA[ВеCSSти с полей]]></category>
		<category><![CDATA[ВеCSSти]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3619</guid>
		<description><![CDATA[Недавно эксперт W3C и активная участница рабочей группы CSS Элика Этемад (fantasai) упомянула в своем твиттере, что они совместно с Бертом Босом&#160;работают над объединением&#160;CSS Grid Layout и CSS3 Template Layout в один модуль CSS3 Grid Template!&#160; Для тех, кто не особо понимает в чём суть, поясняем, что в модулях на данный момент существует как минимум [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно эксперт W3C и активная участница рабочей группы CSS <a href="http://fantasai.inkedblade.net/">Элика Этемад (fantasai)</a> упомянула в своем твиттере, что они совместно с <a href="http://en.wikipedia.org/wiki/Bert_Bos">Бертом Босом</a>&nbsp;работают над объединением&nbsp;<a href="http://www.w3.org/TR/css3-grid-layout/">CSS Grid Layout</a> и <a href="http://www.w3.org/TR/css3-layout/">CSS3 Template Layout</a> в один модуль CSS3 Grid Template!&nbsp;</p>
<p>Для тех, кто не особо понимает в чём суть, поясняем, что в модулях на данный момент существует как минимум три совершенно разных черновика CSS3 для будущих механизмов раскладки, со множеством спорных моментов в каждом, вдобавок конфликтующих между собой. В черновиках по этому поводу творится некая неразбериха, неопределённость, из-за которой может показаться, что разработчики сами пока ещё не знают, что хотят получить в итоге. И вот из двух таких модулей: <a href="http://www.w3.org/TR/css3-grid-layout/">раскладки сеткой</a> (в котором структура макета описывается сеткой, отдаленно похожей на табличную, предложен Микрософтом) и <a href="http://www.w3.org/TR/css3-layout/">раскладки по шаблону</a> (синтаксис которого напоминает ASCII-арт, а автором является Берт Бос &mdash; один из двух создателей CSS вообще), возможно, получится единый модуль (хотя пока трудно сказать, на что такой &quot;гибрид&quot; будет похож). И есть шанс, что разработчики браузеров наконец придут к консенсусу и реализуют его.</p>
<p>В общем, неразбериха в лейаутных модулях, о которых так давно мечтали вебмастера, вот-вот пройдет свой максимум и начнет уменьшаться, постепенно выруливая на финишную прямую. По крайней мере, есть основания надеяться на это. <span style="color:#d3d3d3;">Хотя нельзя и исключить, что Элика просто пошутила;)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/vecssti-s-polej/obedinenie-grid-lejauta-i-timplejt-lejauta-v-odin-modul/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>W3C вводит специальный уровень членского взноса для компаний-стартапов</title>
		<link>http://css-live.ru/vecssti-s-polej/w3c-vvodit-specialnyj-uroven-chlenskogo-vznosa-dlya-kompanij-startapov/</link>
		<comments>http://css-live.ru/vecssti-s-polej/w3c-vvodit-specialnyj-uroven-chlenskogo-vznosa-dlya-kompanij-startapov/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 11:38:41 +0000</pubDate>
		<dc:creator>psywalker</dc:creator>
				<category><![CDATA[ВеCSSти с полей]]></category>
		<category><![CDATA[ВеCSSти]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3541</guid>
		<description><![CDATA[Для увеличения и расширения участия в ее деятельности, W3C анонсирует сегодня новый (пониженный) уровень членского взноса для компаний-стартапов &#8212; для небольших организаций, впервые участвующих в W3C. Организации будут получать право на новый уровень в зависимости от их размера (не более 10 сотрудников) и годового дохода. Этот новый уровень доступен в течение первых двух лет членства. [...]]]></description>
			<content:encoded><![CDATA[<p><span id="result_box" lang="ru"><span class="hps">Для увеличения</span> <span class="hps">и расширения участия в</span> <span class="hps">ее деятельности,</span> <strong><span class="hps">W3C</span></strong> анонсирует <span class="hps">сегодня</span> <a href="http://www.w3.org/Consortium/fees-201202#startup"><span class="hps">новый</span> (пониженный) уровень <span class="hps">членского взноса для компаний-стартапов</span></a> &mdash; <span class="hps">для небольших организа</span></span>ций, впервые участвующих в W3C<span lang="ru"><span class="hps">.</span> <span class="hps">Организации</span> <span class="hps">будут получать право на</span> <span class="hps">новый уровень</span> <span class="hps">в зависимости от их</span> <span class="hps atn">размера (</span><span>не более 10</span> <span class="hps">сотрудников) и</span> <span class="hps">годового дохода</span>. <span class="hps">Этот новый уровень</span> <span class="hps">доступен</span> <span class="hps">в течение первых двух</span> <span class="hps">лет</span> <span class="hps">членства.</span> </span></p>
<p><span lang="ru"><span class="hps">Пожалуйста, <a href="http://www.w3.org/Consortium/fees-201202#startup">ознакомьтесь с</a></span><a href="http://www.w3.org/Consortium/fees-201202#startup"> <span class="hps">описанием</span></a> <span class="hps">уровня членского взноса для стартапов</span>, чтобы узнать подробности и больше информации об условиях, дающих право на него<span class="hps">.</span> <span class="hps">Пожалуйста, свяжитесь с</span> <em><span class="hps">membership@w3.org</span></em> <span class="hps">если у вас есть</span> <span class="hps">какие-либо вопросы.</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/vecssti-s-polej/w3c-vvodit-specialnyj-uroven-chlenskogo-vznosa-dlya-kompanij-startapov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Финальная версия черновика Web IDL (&#8220;последний звонок&#8221;)</title>
		<link>http://css-live.ru/vecssti-s-polej/finalnaya-versiya-chernovika-web-idl-poslednij-zvonok/</link>
		<comments>http://css-live.ru/vecssti-s-polej/finalnaya-versiya-chernovika-web-idl-poslednij-zvonok/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 11:36:57 +0000</pubDate>
		<dc:creator>psywalker</dc:creator>
				<category><![CDATA[ВеCSSти с полей]]></category>
		<category><![CDATA[ВеCSSти]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3550</guid>
		<description><![CDATA[Рабочая группа веб-приложений опубликовала финальную версию черновика спецификации Web IDL (&#34;последнй звонок&#34; перед переводом ее в статус кандидата в рекомендации). Этот документ определяет язык определения интерфейса,&#160;Web IDL, который может быть использован для описания интерфейсов, предназначенных для реализации в веб-браузерах. Web IDL является вариантом IDL с рядом особенностей, позволяющих легче описывать поведение типичных скриптовых объектов&#160;веб-платформы. Также [...]]]></description>
			<content:encoded><![CDATA[<div><span id="result_box" lang="ru"><a href="http://www.w3.org/2008/webapps/">Рабочая группа веб-приложений</a> <span class="hps">опубликовала финальную версию черновика </span><span class="hps">спецификации </span><a href="http://www.w3.org/TR/2012/WD-WebIDL-20120207/">Web IDL</a> </span><span id="result_box" lang="ru"><span class="hps">(&quot;последнй звонок&quot; перед переводом ее в статус кандидата в рекомендации</span><span class="hps">).</span></span><span id="result_box" lang="ru"> <span class="hps">Этот документ определяет</span> <span class="hps">язык</span> <span class="hps">определения интерфейса</span><span class="atn">,&nbsp;</span><span><strong>Web IDL</strong>,</span> <span class="hps">который может</span> <span class="hps">быть использован для описания</span> <span class="hps">интерфейсов</span>, предназначенных <span class="hps">для реализации в</span> <span class="hps">веб-браузерах.</span> <strong><span class="hps">Web</span> </strong><span class="hps"><strong>IDL</strong> является</span> <span class="hps">вариантом</span> <strong><span class="hps">IDL</span></strong> <span class="hps">с</span> <span class="hps">рядом особенностей</span>, позволяющих легче описывать <span class="hps">поведение</span> типичных скриптовых <span class="hps">объектов</span>&nbsp;<span class="hps">веб-платформы</span><span class="hps">.</span> </span><span id="result_box" lang="ru"><span class="hps">Также в</span> <span class="hps">этом документе подробно разъясняется, к</span></span><span id="result_box" lang="ru"><span class="hps">ак</span> <span class="hps">интерфейсы, описанные</span> <span class="hps atn">с помощью&nbsp;</span><strong><span class="hps">Web</span>&nbsp;</strong><span class="hps"><strong>IDL,</strong></span> соотносятся с <span class="hps">конструкциями</span>&nbsp;<span class="hps">среды</span> ис<span class="hps">полнения</span> <strong><span class="hps">ECMAScript</span></strong><span class="hps">.</span></span><span class="hps"> Ожидается</span>, что этот документ послужит <span class="hps">в качестве руководства для</span> <span class="hps">разработчиков, реализующих</span>&nbsp;<span class="hps">уже</span> <span class="hps">опубликованные</span> <span class="hps">спецификации, и что пу</span><span class="hps">бликуемые в дальнейшем спецификации будут</span> <span class="hps">ссылаться на этот</span> <span class="hps">документ</span>, чтобы <span class="hps">обеспечить</span> <span class="hps">корректную и единообразную реализацию</span> <span class="hps">интерфейсов</span><span class="hps">.</span></div>
<div>&nbsp;</div>
<div><span lang="ru"><span class="hps">Комментарии принимаются </span><span class="hps">до 28 февраля</span>. <span class="hps">Узнайте больше о</span> <a href="http://www.w3.org/2006/rwc/Activity.html"><span class="hps">деятельности в сфере многофункциональных клиентских веб-приложений</span></a>.</span></div>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/vecssti-s-polej/finalnaya-versiya-chernovika-web-idl-poslednij-zvonok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Универсальная независимость при помощи SVG</title>
		<link>http://css-live.ru/articles-css/universalnaya-nezavisimost-pri-pomoshhi-svg/</link>
		<comments>http://css-live.ru/articles-css/universalnaya-nezavisimost-pri-pomoshhi-svg/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 14:10:11 +0000</pubDate>
		<dc:creator>psywalker</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Статьи по CSS]]></category>
		<category><![CDATA[CCS]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3553</guid>
		<description><![CDATA[В этой статье мы рассмотрим масштабируемую векторную графику (Scalable Vector Graphics или сокращённо SVG), как одну из наиболее недостающих технологий в современном сайтостроении. Прежде чем приводить конкретные примеры, давайте посмотрим на уровень web&#8217;а сегодня и то, куда он движется. За последние годы дизайн сайтов обозначил новую тенденцию в развитии техники универсального дизайна (Responsive Website Design). [...]]]></description>
			<content:encoded><![CDATA[<p><em>В этой статье мы рассмотрим масштабируемую векторную графику (Scalable Vector Graphics или сокращённо SVG), как одну из наиболее недостающих технологий в современном сайтостроении.</em></p>
<p>Прежде чем приводить конкретные примеры, давайте посмотрим на уровень web&rsquo;а сегодня и то, куда он движется. За последние годы дизайн сайтов обозначил новую тенденцию в развитии техники универсального дизайна (Responsive Website Design). И это к лучшему. По существу, универсальный дизайн обеспечивает переход от использования полюбившихся нам фиксированных по ширине страниц, к вёрстке плавающих форм с интеллектуальным перемещением их содержимого. Добавьте к этому продуманную стратегию содержимого и мобильный подход, и мы уже начинаем предлагать универсальный опыт адаптации под множество устройств и браузеров, удовлетворяя потребности конечного пользователя.</p>
<p><span id="more-3553"></span></p>
<p>Когда мы смотрим на многочисленные устройства, предполагающие выход в интернет, приходит осознание того, что универсальный дизайн &#8211; это лучшее, что можно предложить современному пользователю интернета. Использование горизонтальной прокрутки, панорамирования и масштабирования окна браузера имеет место быть, как часть дополнительного интерфейса, но принуждение пользователей к выполнению данных действий для навигации по сайту, быстро становится утомительным занятием. Подгонка сайта под размеры окна просмотра основана не только в вёрстке, но и в разрешении. В этой статье я покажу, почему SVG прекрасно дополнит будущие интернет разработки.</p>
<h2>ЗНАКОМЬТЕСЬ, SVG</h2>
<p>В действительности, масштабируемая векторная графика, для представления в интернете, предлагает техники, зависящие от разрешения. SVG это формат векторной графики, который использует XML для определения основных свойств, таких как пути, формы, цвета и шрифты, а также применения более продвинутых функций, как например градиентов, фильтров, написания скриптов и анимации. Создав файл один раз его можно использовать в любом месте, в любом масштабе и при любой разрешающей способности.</p>
<p>Рассмотрим область применения: пользовательский интерфейс, иконки навигации, иллюстрации в векторном стиле, паттерны и повторяющийся фон. Для всего этого, масштабируемая графика является наилучшим решением с визуальной точки зрения, но ограничение разрешения картинок по-прежнему является нормой. В примере, приведённом ниже, мы покажем, как в целом расширить техники разработки и воспользоваться преимуществами SVG.</p>
<p><a class="width500" href="http://css-live.ru/wp-content/uploads/2012/02/resolution-independence1.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-3564" height="250" src="http://css-live.ru/wp-content/uploads/2012/02/resolution-independence1.png" title="Универсальная независимость при помощи SVG" width="500" /></a></p>
<h2>Рассмотрим спрайты CSS</h2>
<p>Всем нам хорошо знакомы методы использования CSS спрайтов (если вам не знакомы данные техники, можете быстро глянуть <a href="http://coding.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/">статью Свена Леннартца</a>. А также ознакомиться с доводами &laquo;<a href="http://coding.smashingmagazine.com/2010/03/26/css-sprites-useful-technique-or-potential-nuisance/">за и против</a>&raquo; Луиза Лазариса). Ниже, мы продемонстрируем с какой лёгкостью SVG способен заменять обыкновенные растровые изображения. Если данный пример не для вас, мы уверены, вы сможете представить целый ряд подобных ситуаций с аналогичным использованием SVG</p>
<p>Векторные иконки играют большую роль при разработке пользовательского интерфейса. Картинки весьма ясно отражают свою значимость, в то время как их текстовой эквивалент может быть вполне двусмысленным. При разработке пользовательского интерфейса, свободное пространство на вес золота и компактная иконка может быть весьма кстати.</p>
<p>Я попробовал на этом примере:</p>
<p><a class="width500" href="http://css-live.ru/wp-content/uploads/2012/02/fig1-finalmenu.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-3570" height="60" src="http://css-live.ru/wp-content/uploads/2012/02/fig1-finalmenu.png" title="Иконки спрайты" width="432" /></a></p>
<p>Я попробовал на этом примере:</p>
<p>Я буду первым, кто отметит, что этот комплект иконок не достоин дизайнерских наград, но его вполне достаточно для этой статьи. Давайте взглянем на HTML:</p>
<pre class="prettyprint" rel="HTML">&lt;div class=&quot;actions&quot;&gt;
	&lt;a class=&quot;a-share&quot; href=&quot;#&quot;&gt;Share&lt;/a&gt;
	&lt;a class=&quot;a-print&quot; href=&quot;#&quot;&gt;Print&lt;/a&gt;
	&lt;a class=&quot;a-tag&quot; href=&quot;#&quot;&gt;Tag&lt;/a&gt;
	&lt;a class=&quot;a-delete&quot; href=&quot;#&quot;&gt;Delete&lt;/a&gt;
&lt;/div&gt;
</pre>
<p>Я выдержал код в минимальном стиле, но на практике, вы захотите создать тоже самое при помощи маркированного списка. И, вполне вероятно, вы замените знаки решётки на URL адреса (даже если функциональность будет обеспечиваться при помощи JavaScript, иметь запасной вариант всегда приятно).<br />
	Посмотрим на CSS:</p>
<pre class="prettyprint" rel="CSS">.actions {
   display: block;
   overflow: auto;
}

.actions a {
   background-image: url(&#39;sprite.png&#39;);
   background-repeat: no-repeat;
   background-color: #ccc;
   border-radius: 5px;
   display: block;
   float: left;
   color: #444;
   font-size: 16px;
   font-weight: bold;
   line-height: 20px;
   text-decoration: none;
   text-shadow: 0 -1px 2px #fff;
   padding: 10px 20px 10px 40px;
   margin-right: 5px;
}

.a-share  { background-position: 10px 0; }
.a-print  { background-position: 10px -40px; }
.a-tag    { background-position: 10px -80px; }
.a-delete { background-position: 10px -120px; }
</pre>
<p>Обратите внимание на фиксированные размеры в пикселях и фон .png, который, как вы можете видеть ниже, оформлен по всем правилам Photoshop:</p>
<p><a class="width300" href="http://css-live.ru/wp-content/uploads/2012/02/sprite2.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-3575" height="234" src="http://css-live.ru/wp-content/uploads/2012/02/sprite2.png" title="sprite2" width="233" /></a></p>
<p>Данная реализация CSS спрайтов является основой, но уже не годится по сегодняшним стандартам! И как мы можем это улучшить? Во-первых, давайте рассмотрим следующие вопросы:</p>
<ol>
<li>Мы <strong>растрировали</strong> изображение на очень ранней стадии. Даже в полном размере, местами, имеется размытость.</li>
<li>Если мы <strong>приблизим</strong>, размытие усилится, т.к. процесс ререндеринга невозможен из-за отсутствия данного изображения в больших размерах.</li>
<li>У всего <strong>фиксированный размер</strong>, что не хорошо, как для универсального дизайна, так и для удобства, учитывая игнорирование стандартного размера шрифта самого браузера.</li>
</ol>
<p>Как вы, наверное, уже догадались, мы покажем вам, как SVG справляется со всеми из перечисленных проблем. Но для начала рассмотрим каждую из проблем более детально, чтобы понять суть проблемы в целом.</p>
<h3>1. РАСТЕРИЗАЦИЯ</h3>
<p>Устройства, на подобии современных смартфонов, имеют очень большую плотность пикселей. Так, некоторые из них превышают 300 пикселей на дюйм (PPI), что практически на грани возможностей человеческого глаза различать столь мелкие детали. Пиксель не имеет эквивалента в реальном мире до тех пор, пока он не окажется на экране фиксированного размера (скажем, диагональю 3,5 дюйма) и фиксированного разрешения (скажем, 640 x 960 пикселей). При таком раскладе, текст, с размером шрифта в 16 пикселей, будет невероятно мелким для его прочтения. По этой причине, устройства просто не могут перевести единицу CSS пикселя в единицу пикселя самого устройства, вместо этого они удваиваются. Таким образом, шрифт, размером 16 пикселей, фактически преобразуется в шрифт, размером 32 пикселя, после своего отображения.</p>
<p>То же самое происходит и с картинками, однако, они уже растрированы, так что от удвоения пикселей нет абсолютно никакой пользы. В нашем примере, каждая иконка была растрирована в 25 x 25 пикселей (полный спрайт получился 30 x 160 пикселей), поэтому они не смогут воспользоваться преимуществом <strong>удвоения пикселей</strong>. Одно из решений заключается в использовании <strong>CSS запросов</strong> по определению соотношений пикселей. Эта возможность уже реализована в WebKit- и браузерах на <a href="https://developer.mozilla.org/en/CSS/Media_queries#-moz-device-pixel-ratio">движке Gecko</a>.</p>
<p>Для улучшения нашего примера, мы может добавить в CSS следующее:</p>
<pre class="prettyprint" rel="CSS">@media only screen and (-webkit-min-device-pixel-ratio: 2)  {
   .actions a {
      background-image: url(&#39;sprite@2x.png&#39;);
      background-size: 30px 160px;
   }
}
</pre>
<p>Альтернативное фоновое изображение, указанное в коде выше, сохранено в размере 60 x 320 пикселей (т.е. в два раза больше от первоначального размера). Свойство background-size сообщает CSS о том, что спрайт меньше. Отметим, что теперь у устройства есть дополнительные данные для подгрузки при отображении лучшего изображения (если есть такая возможность).</p>
<p>Это решение не плохое, но оно не решает проблемы, с которыми мы столкнулись в пунктах 2 и 3. Это также требует от нас создания увеличенных копий изображений, что доставляет немало хлопот и увеличивает нагрузку на пропускную способность. Для невекторных изображений, таких как фотографии в формате .jpg, мы не можем сделать чего-то большего.</p>
<h3>2. УВЕЛИЧЕНИЕ</h3>
<p>В своём первоначальном размере, наши растрированные иконки выглядели приемлемо, по крайней мере на экранах с низкой плотностью пикселей. Однако, при увеличении веб-страницы, эти мелкие элементы пользовательского интерфейсы молниеносно ухудшатся.</p>
<p><a class="width450" href="http://css-live.ru/wp-content/uploads/2012/02/zoom.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-3577" height="104" src="http://css-live.ru/wp-content/uploads/2012/02/zoom.png" title="zoom" width="453" /></a></p>
<p>Первое, что делает пользователь испытывающий дискомфорт при просмотре мелкой страницы сайта &#8211; это увеличение. Подобные сайты весьма распространены. В действительности, нет &laquo;идеального&raquo; размера, в силу ухудшения зрения, неизбежно приходящего к нам с возрастом. Во-вторых, стремительное развитие устройств с сенсорным экраном сделало нормой необходимость постоянного увеличения фиксированных страниц (это большая часть интернет проектов на сегодня), созданных для больших экранов.</p>
<p>Наша задача &#8211; разрабатывать сайты, сводя к минимуму необходимость пользователей осуществлять дополнительные телодвижения для комфортного просмотра интересующих их страниц. Вот для чего необходим универсальный дизайн. Просто нет возможности обеспечить растрированные изображения для каждого уровня приближения (в теории &#8211; это бесконечность). Решением является масштабируемая графика. Мы применим её в нашем примере, но для начала несколько слов о фиксированных размерах.</p>
<h3>3. ФИКСИРОВАННЫЕ РАЗМЕРЫ</h3>
<p>Представление элементов страницы в фиксированных размерах не только провоцирует множество пользователей к увеличению, но и отключает одну из полезных возможностей браузера. Пользователь может задать предпочтительный для него размер шрифта (стандартный используемый размер 16 пикселей). Задавая все размеры в пикселях, мы перекрываем эти настройки. Размер элементов, который зависит от стандартных значений, куда более предпочтителен. Если текст больше, то и всё остальное подстраивается под него. По существу, это имитирует эффект увеличения, только происходит это без каких-либо манипуляций при каждом посещении. Этан Маркотт написал достойную статью на тему <a href="http://blog.typekit.com/2011/11/09/type-study-sizing-the-legible-letter/">относительных размеров шрифта</a>.</p>
<p>Давайте повторно реализуем пример с нашим спрайтом и применим решения для трёх существующих проблем.</p>
<h3>МАСШТАБИРУЕМАЯ РЕАЛИЗАЦИЯ</h3>
<p>И снова HTML код. Здесь мы ничего изменять не будем.</p>
<pre class="prettyprint" rel="HTML">&lt;div class=&quot;actions&quot;&gt;
	&lt;a class=&quot;a-share&quot; href=&quot;#&quot;&gt;Share&lt;/a&gt;
	&lt;a class=&quot;a-print&quot; href=&quot;#&quot;&gt;Print&lt;/a&gt;
	&lt;a class=&quot;a-tag&quot; href=&quot;#&quot;&gt;Tag&lt;/a&gt;
	&lt;a class=&quot;a-delete&quot; href=&quot;#&quot;&gt;Delete&lt;/a&gt;
&lt;/div&gt;
</pre>
<p>Обновим CSS и сотворим в нём немного магии:</p>
<pre class="prettyprint" rel="CSS">body { font-size: 100%; }

.actions {
   display: block;
   overflow: auto;
}

.actions a {
   font-size: 1em;
   line-height: 1.25em;
   padding: 0.625em 1.25em 0.625em 2.5em;
   margin-right: 0.3125em;
   border-radius: 0.3125em;
   background-image: url(&#39;sprite.svg&#39;);
   -webkit-background-size: 1.875em 10em;
   -o-background-size: 1.875em 10em;
   -moz-background-size: 1.875em 10em;
   background-size: 1.875em 10em;
   /* styles carried over from the original implementation */
   background-repeat: no-repeat;
   background-color: #ccc;
   color: #444;
   display: block;
   float: left;
   text-decoration: none;
   text-shadow: 0 -1px 2px #fff;
}

.actions-em .a-share { background-position: 0.625em 0; }
.actions-em .a-print { background-position: 0.625em -2.5em;  }
.actions-em .a-tag { background-position: 0.625em -5.0em;  }
.actions-em .a-delete { background-position: 0.625em -7.5em;  }
</pre>
<p>В эту версию мы внесли следующие изменения:</p>
<ul>
<li>- <var>background-image</var> теперь использует .svg файл</li>
<li>- Все размеры основаны на стандартных 16-ти пикселях, или 1 em. Если стандарт для пользователя больше или меньше, всё будет изменено взаимосвязано. (Если вы помножите каждый размер в em на 16, вы получите число пикселей, которое использовалось в первоначальном примере с фиксированными размерами).</li>
<li>- <strong>Обратите внимание</strong> на <var>background-size</var>. Выставляя размер в em, мы говорим браузеру масштабировать спрайт в зависимости от всего другого. Вы заметили, что 1.875 * 10 em помноженное на 16 равно 30 x 160 &ndash; размер в пикселях, в котором мы представлен наш спрайт.</li>
<li>- <var>background-position</var> каждой иконки спрайта также заданы в относительных единицах.</li>
</ul>
<p>Теперь, используя SVG и относительные размеры, мы решили три большие проблемы, описанные выше. Масштабируемая графика может быть растрирована в зависимости от потребностей для отличного отображения на любом разрешении и при любом увеличении. А используя относительные размеры, мы можем продолжить развитие универсального дизайна, сводя к минимуму потребность пользователей в увеличении. Мы также учитываем размеры шрифта браузера и адаптируем наш дизайн соответствующим образом.</p>
<p>На самом деле сначала я создал SVG спрайт, а лишь потом при его помощи и PNG версию. (Я импортировал SVG в Photoshop, прежде чем экспортировал его в качестве PNG &ndash; экспорт PNG через Illustrator имел плохую растеризацию). Ниже приведён заголовок моего SVG файла, размер тот же (30 x 160 пикселей).</p>
<pre class="prettyprint" rel="CSS">&lt;svg enable-background=&quot;new 0 0 30 160&quot; height=&quot;160px&quot; id=&quot;Layer_1&quot; space=&quot;preserve&quot; version=&quot;1.1&quot; viewbox=&quot;0 0 30 160&quot; width=&quot;30px&quot; x=&quot;0px&quot; xlink=&quot;http://www.w3.org/1999/xlink&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; y=&quot;0px&quot;&gt;
&lt;/svg&gt;</pre>
<p>В открытом SVG теге вы можете видеть, что атрибуты ширины и высоты заданы в пикселях (width=&rdquo;30px&rdquo; height=&rdquo;160px&rdquo;, сгенерировано Illustrator&rsquo;ом). Это заставляет выполнять рендер в Firefox&rsquo;е раньше, чем график масштабируется в соответствии с em размерами background-size. Webkit-браузеры, вроде, масштабируют SVG превосходно. Я заметил, что в SVG файле можно проставить единицы этих двух атрибутов в em для решения проблемы с Firefox.</p>
<pre class="prettyprint" rel="CSS">&lt;svg enable-background=&quot;new 0 0 30 160&quot; height=&quot;160em&quot; id=&quot;Layer_1&quot; space=&quot;preserve&quot; version=&quot;1.1&quot; viewbox=&quot;0 0 30 160&quot; width=&quot;30em&quot; x=&quot;0px&quot; xlink=&quot;http://www.w3.org/1999/xlink&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; y=&quot;0px&quot;&gt;
&lt;/svg&gt;</pre>
<p>Я не знаю, какой из браузеров выполняет масштабирование правильнее, нам лишь необходимо позаботиться о кроссбраузерной совместимости. В Mozilla MDN есть замечательная и углублённая статья &laquo;<a href="https://developer.mozilla.org/en/CSS/Scaling_of_SVG_backgrounds">Масштабирование фоновых изображений SVG</a>&raquo;, которая рассматривает множество практических примеров. Более подробно, читайте статью Алекса Уокера &laquo;<a href="http://designfestival.com/a-farewell-to-css3-gradients/A%20Farewell%20to%20CSS3%20Gradients">Прощание с градиентами CSS3</a>&raquo;.</p>
<p>Вот детальный скриншот, демонстрирующий SVG спрайт:</p>
<p><a class="width400" href="http://css-live.ru/wp-content/uploads/2012/02/share.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-3583" height="187" src="http://css-live.ru/wp-content/uploads/2012/02/share.png" title="share" width="455" /></a></p>
<p>Спрайт масштабируется превосходно (чего, к сожалению, нельзя сказать о моём текстовом shadow эффекте).</p>
<p>Лучше один раз увидеть, чем сто раз услышать. Я подготовил <a href="http://dbushell.com/demos/css-sprites/">live demo</a>, где продемонстрированы масштабируемые спрайты в действии, с обозначением техники сверху каждого примера.</p>
<h3>Поддержа со стороны Браузеров</h3>
<p>В начале статьи я заметил, что SVG недостаточно распространён. Хочется верить, что причина была в плохой поддержке со стороны браузеров. Но сейчас всё по-другому! Расцвет SVG происходил последние несколько лет, в связи с пониманием эффективности его использования.</p>
<p>По данным сайта <a href="http://caniuse.com/#search=SVG">Когда я смогу</a> пользоваться?, поддержка SVG выглядит следующим образом (я объединил поддержку для свойств background-image (CSS) и img source (HTML) &ndash; как наиболее важных):</p>
<ul>
<li>Internet Explorer 9+</li>
<li>Firefox 4+</li>
<li>Chrome 4+</li>
<li>Safari 4+</li>
<li>Opera 9.5+</li>
</ul>
<p><a href="http://mobilehtml5.org/">Поддержка мобильных браузеров</a> также весьма развита по всем направлениям. Если есть рабочий вариант для старых браузеров, тогда SVG будет очень эффективным решением.</p>
<p>В соответствии с некоторыми дополнениями к веб-стандартам, мы спокойно может реализовывать их, зная, что старые браузеры просто проигнорируют их и, что они даже не требуются. Мы называем это &laquo;progressive enchancement&raquo;: чем лучше браузер, тем лучше реализация. SVG &#8211; это немного другое, ведь он в большинстве случаев просто заменяет изображения в элементах CSS и HTML. Форматы изображений, будь-то SVG, PNG, JPG или GIF, они либо поддерживаются, либо нет. Здесь мы не можем просто следовать практике прогрессивного улучшения, т.к. изображения, которые невозможно отобразить, неприемлемы для реализации</p>
<h3>ОПРЕДЕЛЯЕМ БРАУЗЕР ПОЛЬЗОВАТЕЛЯ ИЛИ ПОДДЕРЖКУ САМОЙ ВОЗМОЖНОСТИ</h3>
<p>Мы можем сделать предположение и сказать, что беспокоиться следует только о пользователях Internet Explorer с 6-ой по 8-ую версию. В этом случае техника условных комментариев для IE позволяет применить в CSS второй background-image в одном из поддерживающихся форматах, таких как PNG, вместо используемого по умолчанию SVG.</p>
<p>Определение браузера пользователя всегда было опасной игрой. В то время как Internet Explorer является основным отступником, мы не можем утверждать, что он единственный.</p>
<p>Безопасный и настоятельно рекомендуемый способ заключается в определении поддержки SVG и использовании данной возможности, только в случае её поддержки. Я предлагаю использовать Modernizr, когда вам необходимо определить ряд функций. В случае обнаружения, Modernizr применяет класс SVG к вашему корневому html элементу (к которому можно добавить SVG в качестве background-image). Но всё немного сложнее, если вы используете SVG в качестве источника для изображения в HTML. Придётся дописать JavaScript, чтобы найти и заменить все источники разом, на случай, если поддержка была подтверждена.</p>
<p>Проблема этого метода в том, что браузер будет загружать запасные изображения до того, как поддержка SVG будет установлена &#8211; единственным исключением являются условные комментарии для IE. Пользователи могут также заметить моргание при перестроении содержимого, когда источник будет изменён. Это не будет долго продолжаться, но, по меньшей мере, на сегодня, эти проблемы могут быть достаточными, чтобы остановить вас от использования SVG.</p>
<h3>ВЕС ФАЙЛА</h3>
<p>В нашем примере вес SVG файла составил 2445 байт. Версия PNG весит всего 1064 байт (версия PNG 60 x 320 для удвоенных пикселей весит 1932 байта). На первый взгляд, векторное изображение проигрывает во всём, но при больших размерах, растровые изображения значительно набирают в весе.</p>
<p>Ещё SVG файлы удобны для чтения, благодаря использованию XML формата. Как правило, они содержат весьма ограниченный набор символов, что способствует их существенному GZip &#8211; сжатию при передаче по HTTP. Фактически, это значит что скачиваемый размер файла в разы меньше исходного, до 30% и, возможно, больше. Растровые изображения, такие как PNG и JPG уже изначально сжаты по-максимуму.</p>
<h3>ПРОИЗВОДИТЕЛЬНОСТЬ</h3>
<p>Интересным вопросом остаётся производительность отображения SVG, особенно на мобильных устройствах, чьи аппаратные возможности ограничены. Растровые изображения могут отображаться попиксельно после декомпрессии и декодирования. Векторная графика нуждается в растрировании к определённому разрешению каждый раз при её просмотре.</p>
<p>В качестве платформы для анимированной векторной графики SVG при последовательном <a href="http://blogs.msdn.com/b/ie/archive/2011/03/08/comparing-hardware-accelerated-svg-across-browsers-with-santa-s-workshop.aspx">испытании оказался медленнее</a> Canvas, но нас интересует основное отображение, а не тысячи манипуляций в секунду, но если и это возможно, тогда простое отображение не должно быть проблемой. Более напряжёнными остаются такие возможности SVG, как маски и фильтр &#8211; эффекты. Они не нужны для большинства практических целей (таких как наш пример), но, при необходимости их использования, наилучшим путём оценки производительности остаётся тестирование. Множество интернет разработок поддерживается только в теории, а на практике результаты далеки от совершенства.</p>
<h2>Альтернативные Методы</h2>
<p>Надеюсь, вы согласитесь с тем, что SVG является крайне полезным, но не идеальным решением проблем, связанных с разрешением. В конечном счёте, задумка в том, чтобы избежать масштабирования растровых изображений. Ниже ещё ряд идей, над которыми можно поразмыслить.</p>
<h3>CSS3</h3>
<p>Вы уже возможно начали комбинировать такие свойства CSS3, как linear-gradient, text-shadow и box-shadow с целью создания совокупных стилей. Веб разработчик Лиа Веру курирует<a href="http://lea.verou.me/css3patterns/"> CSS3 галерею образцов</a>, которые демонстрируют впечатляющий потенциал одних только градиентов.</p>
<p><a class="width500" href="http://css-live.ru/wp-content/uploads/2012/02/pattern.png" rel="simplebox"><img alt="" class="aligncenter size-full wp-image-3585" height="220" src="http://css-live.ru/wp-content/uploads/2012/02/pattern.png" title="Patterns" width="500" /></a></p>
<p>В своей статье &laquo;<a href="http://bradbirdsall.com/mobile-web-in-high-resolution">Мобильный Интернет в Высоком Разрешении</a>&raquo;, Бред Бирдсалл демонстрирует технику сохранения pixel-perfect для высокого разрешения, при помощи использования свойства pixel-ratio.</p>
<p>Кроме того, есть чистые CSS &laquo;иконки&raquo;, которые <a href="http://farukat.es/journal/2010/08/469-pure-css-icons-make-madness-stop">Фарук Атеш</a> справедливо считает &laquo;безумием&raquo; &#8211; естественно это так, если вы создаёте логотип при помощи CSS! Вы можете возразить, сославшись на небольшое количество полезных техник, таких как CSS треугольники, <a href="http://css-tricks.com/snippets/css/css-triangle/">описанные Крисом Койером</a>.</p>
<h3>ВЕБ ШРИФТЫ</h3>
<p><a href="http://filamentgroup.com/lab/dingbat_webfonts_accessibility_issues/">Шрифты с графическими</a> маркерами (dingbat) и символы Unicode &#8211; вот две интересные альтернативы векторных иконок, как с семантической точки зрения, так и со стороны их доступности. <a href="http://24ways.org/2011/displaying-icons-with-fonts-and-data-attributes">Джон Хикс описал</a>, пожалуй, лучшее об их использовании. SVG выглядит подходящим решением для иконок и имеет высокий потенциал касательно высокого разрешения. Мы, в ближайшем будущем, будем уделять этому повышенное внимание.</p>
<h3>ЗАГЛЯДЫВАЯ В БУДУЩЕЕ</h3>
<p>Как вы заметили, использование SVG весьма доступно, а поддержка со стороны браузеров и производительность в будущем будут только улучшаться. Из этой статьи важно понять необходимость создания веб-сайтов, которые будут настолько независимы от разрешения, насколько это возможно.</p>
<p>Принимая во внимание &laquo;one web&raquo; философию и широкий спектр устройств можно сделать вывод об отсутствии единого случая для всех пользователей. Чем больше мы можем сделать для познания новых устройств &#8211; тем лучше. Универсальный дизайн сайта способен удовлетворить большинство потребностей и дать ряд преимуществ. Использование векторной графики может быть не столь очевидным плюсом, но даже это незначительное улучшение даёт большую разницу.</p>
<p>Уже сегодня множество пользователей могут насладиться масштабируемой графикой&hellip; или, возможно, так неправильно думать. Большинство пользователей не скажет: &laquo;Вау! Слава вектору&raquo;. Боюсь, они даже не примут это во внимание (и не оценят затраченных на это усилий). И это хорошо. Каждый раз, когда мы улучшаем что-то для пользователей, мы не нуждаемся в посвящении этому песен с танцами. Оправдывайте ожидания пользователей в визуальной эстетике и со временем они сами научаться замечать &laquo;низкопробные&raquo; сайты. Если этого не сделаете вы, это сделают другие.</p>
<p><strong><a href="http://coding.smashingmagazine.com/2012/01/16/resolution-independence-with-svg/">Оригинал</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/articles-css/universalnaya-nezavisimost-pri-pomoshhi-svg/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Каждый раз, когда вы называете проприетарную фичу словом «CSS3», в мире умирает котенок</title>
		<link>http://css-live.ru/articles-css/kazhdyj-raz-kogda-vy-nazyvaete-proprietarnuyu-fichu-slovom-css3-v-mire-umiraet-kotenok/</link>
		<comments>http://css-live.ru/articles-css/kazhdyj-raz-kogda-vy-nazyvaete-proprietarnuyu-fichu-slovom-css3-v-mire-umiraet-kotenok/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 12:06:59 +0000</pubDate>
		<dc:creator>SelenIT</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Статьи по CSS]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3506</guid>
		<description><![CDATA[Перевод статьи &#34;Every Time You Call a Proprietary Feature &#8220;CSS3,&#8221; a Kitten&#160;Dies&#34; из журнала A List Apart, автор &#8212; Лиа Веру, переводчик &#8212; SelenIT Минздрав Интернета предупреждает: каждый раз, когда вы называете проприетарную фичу словом &#171;CSS3&#187;, в мире умирает котенок. Любая -webkit-фича, не входящая в спецификации (хотя бы в редакторский черновик) &#8212; не CSS3 ни [...]]]></description>
			<content:encoded><![CDATA[<p><em>Перевод статьи &quot;<a href="http://www.alistapart.com/articles/every-time-you-call-a-proprietary-feature-css3-a-kitten-dies/">Every Time You Call a Proprietary Feature &ldquo;CSS3,&rdquo; a Kitten&nbsp;Dies</a>&quot; из журнала <a href="http://www.alistapart.com/">A List Apart</a>, автор &mdash; <a href="http://www.alistapart.com/authors/v/lverou">Лиа Веру</a>, переводчик &mdash; SelenIT</em></p>
<p>Минздрав Интернета предупреждает: каждый раз, когда вы называете проприетарную фичу словом &laquo;CSS3&raquo;, в мире умирает котенок. <strong>Любая -</strong><strong>webkit</strong><strong>-фича, не входящая в спецификации (хотя бы в редакторский черновик) &mdash; не </strong><strong>CSS</strong><strong>3</strong> ни разу. Да, их часто выдают за него, но они вообще даже не часть CSS. <strong>Различать эти вещи &mdash; не пустое педантство.</strong> Это важно, потому что эта путаница мотивирует некоторых производителей браузеров (с таким, кхе-кхе, <a href="http://lists.w3.org/Archives/Public/www-style/2010Jun/0341.html">яблочком</a> на лого&hellip;) идти в обход процесса стандартизации, реализовывать в WebKit свою отсебятину, а потом подавать ее вебмастерам как невиданную вкусность. Новые блестящие игрушки ослепляют нас, и мы сами <a href="http://coding.smashingmagazine.com/2011/05/11/the-future-of-css-experimental-css-properties/">начинаем превозносить их</a>, усиливая эхо рекламного шума.<span id="more-3506"></span></p>
<p>Гоняясь за новыми побрякушками, мы часто забываем, сколько людей боролись всё прошлое десятилетие за то, чтобы мы могли писать код без ветвлений и хаков и рассчитывать, что он заработает везде. Если вы &laquo;в теме&raquo; дольше пары-тройки лет, вы наверняка помните, что так было не всегда. Причина удобства нынешней веб-разработки &mdash; веб-стандарты, итог тяжко давшейся нам победы в <a href="http://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%B9%D0%BD%D0%B0_%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%BE%D0%B2">браузерных войнах</a>.</p>
<p>Удивительно, но веб-стандарты существовали и в эпоху браузерных войн. <a href="http://ru.wikipedia.org/wiki/W3C">W3C основан в 1994 году</a>. Однако вебмастерам было не до них, всем хотелось &laquo;потрогать&raquo; проприетарные расширения. В итоге браузеры тоже особо не заморачивались веб-стандартами. Ничего не напоминает? Сегодняшние проприетарные фичи ничуть не лучше ActiveX и IE-шных фильтров. Разница лишь в лучшем пиаре, и то потому, что мы не еще столкнулись с последствиями. Хотите верьте, хотите нет, но <a href="http://www.brucelawson.co.uk/2010/in-praise-of-ie6/">тогдашние фичи тоже принимались с восторгом</a> в те дни.</p>
<p>Да, иногда у браузеров получается что-то стоящее, что со временем становится стандартом (XMLHttpRequest, Drag and Drop API, contentEditable, веб-шрифты &mdash; так, навскидку). Но ничто не препятствует им вводить новинки, соблюдая стандартную процедуру. Ничто не мешает им, придумав что-то клёвое, предложить это соответствующей рабочей группе W3C, заодно улучшив его благодаря коллективной обратной связи, прежде чем пускать в реализацию. Поступил бы так Microsoft с Drag &amp; Drop API &mdash; не был бы он таким геморроем в использовании.</p>
<p>Проприетарные фичи, не прошедшие процедуры стандартизации, обычно страдают конструктивными дефектами, даже когда идея в целом хорошая. Например, CSS-градиенты &mdash; блестящая задумка, но -webkit-gradient() был многобуквенным ужасом, так и подбивающим ошибиться в нем. Веб-шрифты &mdash; великолепная идея, но вот обязательность наличия .eot-файла &mdash; нет. Процедура стандартизации не только способствует переносимости, она еще и помогает лучше спроектировать каждую фичу, благодаря большему разнообразию мнений.</p>
<p>Так что же это за позорные фичи? По части CSS наиболее популярны:</p>
<ul>
<li>-webkit-box-reflect</li>
<li>-webkit-text-stroke</li>
<li>-webkit-mask</li>
<li>-webkit-background-clip: text;</li>
<li>-webkit-text-size-adjust</li>
<li>-webkit-tap-highlight-color</li>
<li>-webkit-text-fill-color</li>
</ul>
<p><strong>Не каждая фича с префиксом &mdash; проприетарщина. </strong>Некоторые из них &mdash; лишь экспериментальные реализации фич, входящих в черновики спецификаций. Что подводит нас к следующему вопросу.</p>
<h3><strong>&laquo;Как узнать, проприетарна ли та или иная фича?&raquo;</strong></h3>
<p>Способ, который помогает мне &mdash; поискать в Гугле название фичи (в кавычках), добавив к поисковому запросу site:w3.org, чтобы искать только в пределах домена w3.org. Два примера:</p>
<ul>
<li><a href="https://www.google.com/?q=%22box-shadow%22+site:w3.org#hl=en&amp;pws=1&amp;sclient=psy-ab&amp;q=%22box-shadow%22+site:w3.org&amp;pbx=1&amp;oq=%22box-shadow%22+site:w3.org&amp;aq=f&amp;aqi=&amp;aql=&amp;gs_sm=3&amp;gs_upl=35188l35812l0l35940l6l6l0l0l0l4l171l758l0.5l5l0&amp;bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&amp;fp=4084e84d72bbc120&amp;biw=1280&amp;bih=679" target="_blank">&ldquo;box-shadow&rdquo; site:w3.org</a></li>
<li><a href="https://www.google.com/?q=%22box-reflect%22+site:w3.org#hl=en&amp;output=search&amp;sclient=psy-ab&amp;q=%22box-reflect%22+site:w3.org&amp;pbx=1&amp;oq=&amp;aq=&amp;aqi=&amp;gs_upl=&amp;pws=1&amp;bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&amp;fp=4084e84d72bbc120&amp;biw=1280&amp;bih=679" target="_blank">&ldquo;box-reflect&rdquo; site:w3.org</a></li>
</ul>
<p>Как видите, один из первых результатов для первой фичи &mdash; спецификация W3C. Результаты для второй &mdash; одни лишь обсуждения в списках рассылки, что говорит о том, что спецификации для нее пока нет.</p>
<h3><strong>&laquo;Чем я могу помочь?&raquo;</strong></h3>
<p>Простейшее &laquo;правило буравчика&raquo; &mdash; избегать проприетарных фич вообще. Не пользуйтесь ими, не пропагандируйте их и &mdash; главное &mdash; не полагайтесь исключительно на них. Хотя я понимаю, что порой это легче сказать, чем сделать. Если вы не можете совсем выкинуть проприетарщину из своей жизни, вот несколько советов, которым, я уверена, вы последовать сможете:</p>
<ul>
<li>Убедитесь, что используете эти фичи в соответствии с принципом <a href="http://www.alistapart.com/articles/understandingprogressiveenhancement">прогрессивного улучшения</a>, что конструкция может прекрасно работать и без них.</li>
<li>Не рекламируйте их, или, если вы вынуждены это делать, не забывайте объяснять, что эти фичи &mdash; проприетарные, и что это значит.</li>
<li>Если вам приходится использовать их в своем коде, добавьте комментарий об этом. Хватит чего-нибудь вроде /* Warning: Нестандартно! */. Многие начинающие фронтенд-кодеры учатся на примерах исходников реальных сайтов. Даже если вы не читаете лекций и не пишете туториалов, вы можете косвенно учить людей каждой строчкой своего кода.</li>
<li>Отзовите статьи, лекции, примеры и т.п., пропагандирующие эти фичи без каких-либо предупреждений, или где используется только один префикс одного производителя (что тоже <a href="http://www.glazman.org/weblog/dotclear/index.php?post/2012/02/09/CALL-FOR-ACTION%3A-THE-OPEN-WEB-NEEDS-YOU-NOW">весьма серьезная проблема</a>). А еще лучше &mdash; <a href="http://codepo8.github.com/prefix-the-web/">сами исправьте их</a>, если возможно.</li>
</ul>
<p>&nbsp;</p>
<h3><strong>&laquo;Как я могу помочь стандартизации фичи?&raquo;</strong></h3>
<p>Если вы испытываете потребность в проприетарной фиче слишком часто, примите участие в стандартизации чего-то подобного. Я рекомендую следующую последовательность действий, большая часть которых подойдет для любых новых предложений вообще:</p>
<p><strong>Шаг</strong><strong> 1. </strong><strong>Изучите</strong> <strong>стандартные</strong> <strong>альтернативы</strong></p>
<p>Прежде всего, изучите стандартные альтернативы. Они могут хуже (или вообще никак) поддерживаться браузерами, но вы хотя бы будете знать, за что бороться. Вы даже можете добавить их как &laquo;фоллбэк&raquo;, не загораживая дорогу другим производителям, если вдруг они эту фичу уже реализуют.</p>
<p>Вы можете даже помочь ускорить реализацию, <a href="http://coding.smashingmagazine.com/2011/09/07/help-the-community-report-browser-bugs/">сообщив о соотв. баге</a> в браузерах, которые ее не поддерживают. Не забудьте сначала поискать среди существующих багов. Если баг уже числится в списке, вы всё еще можете подчеркнуть его важность для вас, написав комментарий (будьте вежливы!). Браузеры учитывают запросы вебмастеров, устанавливая приоритеты для фич &mdash; что из них реализовать раньше. Покажите им, что та или иная фича для вас значима.</p>
<p><strong>Шаг</strong><strong> 2. </strong><strong>Проверьте, не была ли эта фича уже кем-то предложена</strong></p>
<p>W3C обсуждает, какие фичи добавлять и как &laquo;отполировать&raquo; их до совершенства, в своих <a href="http://lists.w3.org/">списках рассылки</a>. У каждой рабочей группы (WG, сокр. от &laquo;Working Group&raquo;) есть свой, иногда даже несколько, чтобы рабочие группы могли сообща разрабатывать фичи, затрагивающие несколько технологий сразу. Например, CSS WG пользуется списком <a href="http://lists.w3.org/Archives/Public/www-style/" target="_blank">www-style</a>, а SVG WG &mdash; списком <a href="http://lists.w3.org/Archives/Public/www-style/" target="_blank">www-svg</a>. Однако для фич, затрагивающих как CSS, так и SVG, есть список <a href="http://lists.w3.org/Archives/Public/public-fx/" target="_blank">public-fx</a>.</p>
<p>Прежде чем писать в любую из этих рассылок, пожалуйста, <strong>поищите прошлые обсуждения вопроса</strong>. Каждая минута, которую тратит член рабочей группы, отвечая на дубликаты предложений &mdash; это еще одна зря потерянная минута для разработки веб-стандартов. Для поиска по архивам вы снова можете воспользоваться мощью Гугла. Наберите ключевые слова как обычно и просто добавьте в конец запроса site:lists.w3.org.</p>
<p>Если вы видите, что фичу уже предлагали, но обсуждение застопорилось без какого-либо результата, вы можете ответить (один раз!), чтобы снова поднять его. Пожалуйста, постарайтесь не выказывать в переписке своего нетерпения или раздражения. Читайте обсуждение дальше, обдумывая, что бы такого добавить, чтобы оно не оказалось уже расписано другими.</p>
<p><strong>Шаг 3. Предложите фичу</strong></p>
<p>Постарайтесь приложить как можно больше относящихся к делу данных.</p>
<p>Вот некоторые типы сведений, которые вы можете включить:</p>
<ul>
<li>Примеры использования, для которых фича была бы полезна. Это очень важно. Ни одна рабочая группа не хочет стандартизировать фичи, которые будут использоваться лишь в редких исключениях. Полезный прием для сбора таких примеров &mdash; погуглить проприетарную фичу и посмотреть, для чего люди ее используют.</li>
<li>Ваш опыт использования фичи. Что вам нравится, что вы хотели бы изменить в ее работе, как можно сделать ее универсальнее и т.д.</li>
</ul>
<p>Также, решите, для какой спецификации она подойдет. Список спецификаций CSS можно найти <a href="http://www.w3.org/Style/CSS/current-work">здесь</a>. Затем <strong>добавьте в начало названия вашей темы </strong><strong>ID</strong> <strong>этой спецификации в квадратных скобках</strong>. Например, если тема относится к <a href="http://www.w3.org/TR/css3-values/">модулю величин и единиц</a>, добавьте в начало названия &laquo;[css3-values]&raquo; (ID каждой спецификации можно найти в ее URL). Это обеспечит легкость нахождения вашей темы редакторами, и такие метки помогают каждому следить за разработкой интересующей его спеки.</p>
<p>Еще надо иметь в виду, что новые фичи не добавляются в спецификации, которые достигли статуса <em>кандидата в рекомендации</em> (или вот-вот его достигнут). Конечно, это относится и к последующим стадиям, напр. <em>предложенной рекомендации</em> и <em>рекомендации</em>. Например, если у вас предложение ввести новый селектор, адресуйте его не <a href="http://www.w3.org/TR/css3-selectors">модулю селекторов 3-го уровня</a> (ID: css3-selectors), которые уже имеют статус <em>рекомендации</em>, а селекторам 4-го уровня.</p>
<p>Если хотите узнать больше о том, как работает процесс стандартизации, прочитайте замечательный цикл статей fantasai <a href="http://fantasai.inkedblade.net/weblog/2011/inside-csswg/">&laquo;Внутри рабочей группы CSS&raquo;</a>.</p>
<h3><strong>&laquo;Это всё так сложно и скучно!&raquo;</strong></h3>
<p>То же самое можно сказать о раздельном сборе мусора для повторной переработки в противовес выбрасыванию всего кучей в один бак. Конечно, это сложнее, чем просто пользоваться проприетарными фичами &laquo;абы работало&raquo;. Но в долгосрочной перспективе это в интересах каждого из нас, включая вас самих &mdash; завтрашних.</p>
<p><em>Огромное спасибо <a href="http://twitter.com/dstorey">Дэвиду Стори</a>, <a href="https://twitter.com/#!/sgalineau">Сильвену Галино</a> и <a href="https://twitter.com/#!/meyerweb">Эрику Мейеру</a> за их отклик.</em></p>
<p>Translated with the permission of <a href="http://www.alistapart.com/">A List Apart Magazine</a> and the author[s].</p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/articles-css/kazhdyj-raz-kogda-vy-nazyvaete-proprietarnuyu-fichu-slovom-css3-v-mire-umiraet-kotenok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DOM, который построил браузер</title>
		<link>http://css-live.ru/articles-css/dom-that-browser-built/</link>
		<comments>http://css-live.ru/articles-css/dom-that-browser-built/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 17:09:10 +0000</pubDate>
		<dc:creator>SelenIT</dc:creator>
				<category><![CDATA[Статьи по CSS]]></category>
		<category><![CDATA[DOM]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=1212</guid>
		<description><![CDATA[Вот DOM, который построил браузер: А это &#8212; страница, Которая в кеше на диске хранится, И служит исходником каждой вещицы В DOMе, который построил браузер. Вот стили, Которые быстро себя применили Ко всем элементам разметки страницы, Которая в кеше на диске хранится, И служит исходником каждой вещицы В DOMе, который построил браузер. Вот область просмотра, [...]]]></description>
			<content:encoded><![CDATA[<p>Вот <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/" target="_blank" title="Спецификация DOM (объектной модели документа)">DOM</a>, который построил браузер:</p>
<p><img alt="Визуализация отображаемой DOM в расширении 3D Tilt для FF" class="aligncenter" height="307" src="http://img850.imageshack.us/img850/342/pagedom.jpg" width="300" /></p>
<p><span id="more-1212"></span></p>
<p><img alt="HTML-исходник" class="alignleft" height="99" src="http://img847.imageshack.us/img847/5780/pageicon.jpg" width="84" /></p>
<p>А это &mdash; страница,<br />
	Которая в кеше на диске хранится,<br />
	И служит исходником каждой вещицы<br />
	В DOMе, который построил браузер.</p>
<p></p>
<p style="clear:both;">Вот <a href="http://www.w3.org/TR/CSS21/visuren.html" target="_blank" title="Спецификация CSS 2.1: модель визуального форматирования">стили</a>,<br />
	Которые быстро себя применили<br />
	Ко всем элементам разметки страницы,<br />
	Которая в кеше на диске хранится,<br />
	И служит исходником каждой вещицы<br />
	В DOMе, который построил браузер.</p>
<p>Вот <a href="http://www.w3.org/TR/CSS21/visuren.html#viewport" target="_blank" title="Определение области просмотра (viewport) в спецификации CSS 2.1">область просмотра</a>,<br />
	В которой рисуются рендером бодро<br />
	(С учетом всех стилей,<br />
	Что к элементам себя применили)<br />
	Все эти вещицы<br />
	(Которым исходником служит страница,<br />
	Которая в кеше на диске хранится)<br />
	В DOMе, который построил браузер.</p>
<p>Вот <a href="http://www.w3.org/TR/CSS21/visudet.html#containing-block-details" target="_blank" title="Определение начального блока-контейнера (соответствующего корневому элементу страницы) в CSS 2.1">корневой элемент</a>.<br />
	Он заполняет в момент<br />
	Всю область просмотра,<br />
	В которой рисуются рендером бодро,<br />
	С учетом всех стилей,<br />
	Что к элементам себя применили,<br />
	Все эти вещицы<br />
	(Которым исходником служит страница,<br />
	Которая в кеше на диске хранится)<br />
	В DOMе, который построил браузер.</p>
<p>А это &mdash; <a href="http://www.w3.org/TR/CSS21/visudet.html#containing-block-details" target="_blank" title="Начальный блок-контейнер в CSS 2.1">начальный</a> <a href="http://www.w3.org/TR/CSS21/visuren.html#block-formatting" target="_blank" title="Контекст форматирования блоков (и правила их форматирования в нем) в CSS 2.1">блочный контекст</a><br />
	Который заведует выдачей мест<br />
	Под всё, что хранит корневой элемент,<br />
	Который заполнил в начальный момент<br />
	Всю область просмотра,<br />
	В которой рисуются рендером бодро,<br />
	С учетом всех стилей,<br />
	Что к элементам себя применили,<br />
	Все эти вещицы<br />
	(Которым исходником служит страница,<br />
	Которая в кеше на диске хранится)<br />
	В DOMе, который построил браузер.</p>
<p><img alt="Блоки" class="aligncenter" height="302" src="http://img440.imageshack.us/img440/3936/blocksd.jpg" width="300" /></p>
<p>Вот <a href="http://www.w3.org/TR/CSS21/visuren.html#block-boxes" target="_blank" title="Определение блочных боксов в CSS 2.1">блоки</a>,<br />
	Что идут друг за дружкой в потоке,<br />
	Упираясь контейнеру margin-ом в боки,<br />
	Образуя тот блочный контекст ,<br />
	Который заведует выдачей мест<br />
	Под всё, что хранит корневой элемент,<br />
	Который заполнил в начальный момент<br />
	Всю область просмотра,<br />
	В которой рисуются рендером бодро,<br />
	С учетом всех стилей,<br />
	Что к элементам себя применили,<br />
	Все эти вещицы<br />
	(Которым исходником служит страница,<br />
	Которая в кеше на диске хранится)<br />
	В DOMе, который построил браузер.</p>
<p>А это вот &mdash; <a href="http://www.w3.org/TR/CSS21/visuren.html#inline-formatting" target="_blank" title="Контекст форматирования строк (и правила размещения в них текстовых элементов) в CSS 2.1">строки</a>,<br />
	Которыми будут заполнены блоки,<br />
	Что идут друг за дружкой в потоке,<br />
	Упираясь контейнеру margin-ом в боки<br />
	(если только в самих в них не вложены блоки,<br />
	что тоже пойдут друг за дружкой в потоке),<br />
	Образуя тот блочный контекст ,<br />
	Который заведует выдачей мест<br />
	Под всё, что хранит корневой элемент,<br />
	Который заполнил в начальный момент<br />
	Всю область просмотра,<br />
	В которой рисуются рендером бодро,<br />
	С учетом всех стилей,<br />
	Что к элементам себя применили,<br />
	Все эти вещицы<br />
	(Которым исходником служит страница,<br />
	Которая в кеше на диске хранится)<br />
	В DOMе, который построил браузер.</p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/articles-css/dom-that-browser-built/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Opera 12 (Wahoo), обновление ядра с исправлениями функции Do Not Track, почты и темизации</title>
		<link>http://css-live.ru/articles/opera-12-wahoo-obnovlenie-yadra-s-ispravleniyami-funkcii-do-not-track-pochty-i-temizacii/</link>
		<comments>http://css-live.ru/articles/opera-12-wahoo-obnovlenie-yadra-s-ispravleniyami-funkcii-do-not-track-pochty-i-temizacii/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 18:44:41 +0000</pubDate>
		<dc:creator>buddah</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Opera 12]]></category>

		<guid isPermaLink="false">http://css-live.ru/?p=3437</guid>
		<description><![CDATA[Как можно видеть со списка изменений, в этой сборке довольно много фиксов, изменений и улучшений. Так как их много, я расскажу о нескольких важных вещах ниже: Конфиденциальность Эта сборка Wahoo добавляет поддержку технологии Do Not Track, которая разрешает браузерам пользователей запрещать их отслеживание в интернете. По умолчанию эта функция отключена, но мы можем её активировать, [...]]]></description>
			<content:encoded><![CDATA[<p>Как можно видеть со списка изменений, в этой сборке довольно много фиксов, изменений и улучшений. Так как их много, я расскажу о нескольких важных вещах ниже:</p>
<h2>Конфиденциальность</h2>
<p>Эта сборка Wahoo добавляет поддержку технологии <a href="http://donottrack.us/">Do Not Track</a>, которая разрешает браузерам пользователей запрещать их отслеживание в интернете. По умолчанию эта функция отключена, но мы можем её активировать, включив следующие опции в настройках Opera: <em>&quot;Preferences &gt; Advanced &gt; Security &gt; Ask websites not to track me&quot;</em></p>
<p>Нужно помнить, что это будет работать только когда сайт акцептует запрос. Некоторые сайты уже сейчас делают это. И эффект DNT будет оценен, чтобы убедиться, что эта технология является жизнеспособным решением в долгосрочной перспективе.</p>
<p><span id="more-3437"></span></p>
<h2>SSL производительность</h2>
<p>Эта сборка так же включает в себя первый раунд оптимизации для быстрой обработки SSL (CORE-41667):</p>
<ul>
<li>TCP оптимизация по исключению задержек прохождения сигнала</li>
<li>Улучшен сеанс согласования (session negotiation) для экономии на времени ожидания</li>
<li>Улучшена обработка соединения, что улучшает HTTP и HTTPS соединения</li>
<li>Более быстрое закрытие соединений, что разрешает новые подключения на ранней стадии</li>
<li>Распараллеливание OCSP/CRL использует в два раза меньше времени на проверку отмены операции</li>
<li>Strict transport security повышает безопасность, а так же будет повышать и скорость, если серверы начнут использовать эту фишку</li>
</ul>
<p>&nbsp;</p>
<p>К примеру, первая загрузка сайта skandiabanken.no была уменьшена более, чем на 1 секунду. В последующие 10 загрузок время открытия уменьшилось почти вдвое.</p>
<h2>XHR</h2>
<p>В CORE-41784 мы доделали поддержку прогресса событий в XMLHttpRequest, для закачки, загрузки и настройки обновлений. Это улучшит закачку (upload) на сервисах Google (никаких Flash-загрузчиков на YouTube и Gmail).</p>
<h2>Еще</h2>
<p>Есть множество других улучшений, включая исправления в ядре, почте и темизации.</p>
<p>Просмотрите список изменений для более точной информации:</p>
<p><strong>Осторожно! Это версия для разработчиков. В ней присутствуют все последние изменения, но так же и серьезные известные проблемы.</strong></p>
<h2>Скачать:</h2>
<p><a href="http://snapshot.opera.com/windows/17240_12.00-1301/Opera-Next-12.00-1301.exe">Windows</a> <a href="http://snapshot.opera.com/mac/17240_12.00-1301/Opera-Next-12.00-1301.dmg">Mac</a> <a href="http://snapshot.opera.com/unix/17240_12.00-1301/">Linux\Free BSD</a></p>
<h2>Полный список исправлений и изменений:</h2>
<h3>Desktop</h3>
<ul>
<li>DSK-351582 Сбой при написании в адресной строке после удаления закладки</li>
<li>DSK-337608 Сбой при выходе после установки расширения Speed ​​Dial</li>
<li>DSK-355413 Одиночная вкладка показывается как набор вкладок</li>
<li>DSK-340411 Зависание при копировании длинной строки в адресное поле</li>
<li>DSK-349889 Отправка данных предупреждения системы безопасности блокирует страницу с двумя диалоговыми окнами с предупреждениями, из которых только одно может быть закрыто</li>
<li>DSK-298032 Поиск по странице (CTRL-F) учитывает последний искомый текст</li>
</ul>
<h3>Почта</h3>
<ul>
<li>DSK-267965 Поддержка Yahoo IMAP</li>
<li>DSK-320233 Ответ на HTML-письмо должен быть представлен как HTML даже если по умолчанию стоит plain-text</li>
<li>DSK-350402 Сбои при откреплении последнего сообщения в &quot;Pinned&quot; режиме</li>
<li>DSK-355394 Сбой при закрытии окна почты</li>
<li>DSK-355494 Заголовок письма прижат к правому краю, вместо левого</li>
<li>DSK-353909 Сбой при выборе письма</li>
<li>DSK-350332 Неверное количество непрочитанных писем</li>
<li>DSK-352390 Невозможно настроить отображение загруженных заголовков</li>
<li>DSK-350584 Пропажа содержимого текстового поля Быстрого Ответа при переключении сообщений</li>
<li>DSK-353193 Колесо прокрутки и стрелки не проматывают сообщение</li>
<li>DSK-353996 Опция &#39;No Images&#39; не работает при переключении на другое сообщение</li>
<li>DSK-354567 Сброс &#39;time period&#39; опции просмотра почты при обновлении с pre-12 версии</li>
<li>DSK-355473 Не запоминает последнее выделенное сообщение после перезапуска</li>
<li>DSK-356611 Не прокручивает textarea до самого низа</li>
<li>DSK-348448 Предварительный просмотр письма для печати должен использовать всю высоту окна почты</li>
<li>DSK-347227 Прикрепление/открепление в списке не перерисовывается в сообщении сразу</li>
<li>DSK-350960 Счетчик обновления акаунта на панели разделов почты не всегда исчезает</li>
<li>DSK-356032 Не показывается диалоговое окно при выходе</li>
</ul>
<h3>Темизация</h3>
<ul>
<li>DSK-340152 Выбранный эскиз в диалоговом окне при добавления в SD находится в &quot;невыбранном&quot; состоянии</li>
<li>DSK-340136 Вкладки меняют свою ширину при наведении</li>
<li>DSK-352081 Нечитабельные сочетания цветов в выбранных opera:config элементах</li>
<li>DSK-347908 Двойные счетчики прогресса в режиме visual tab</li>
<li>DSK-340936 Анимация счетчика загрузки страницы перезапускается при наведении</li>
<li>DSK-346438 Подсказка Opera Turbo повторяется несколько раз</li>
<li>DSK-260734 Загрузка неизвестного размера отображает неверный заголовок вкладки</li>
<li>DSK-349657 Непредусмотренный цвет фона за счетчиками сообщений</li>
<li>DSK-351800 Счетчик загрузки страницы в визуальных вкладках не анимируется</li>
<li>DSK-355062 Неправильная кнопка на странице предупреждения о мошенничестве</li>
<li>DSK-355042 Градиент фона не достаточно широкий когда вкладки находятся сбоку</li>
<li>DSK-351508 Очистка отступов адресного и поискового полей</li>
<li>DSK-353058 Удалена оберточная панель вокруг кнопок Назад/Вперед в адресной строке</li>
<li>DSK-351152 Синяя полоса в верхней части интегрированной вкладки/заголовка</li>
<li>DSK-350701 Амперсанды в главном меню WinXP в теме Zune</li>
<li>DSK-352610 Сломанная полоса панели переключения</li>
<li>DSK-349069 Контекстное меню панели задач не работает в XP с установленной темой</li>
<li>DSK-353449 Шрифт строки меню контролируется &quot;browser toolbars&quot; вместо &quot;browser menus&quot;</li>
<li>DSK-347984 Установка старого шаблона после темы применяет оба</li>
<li>DSK-350481 Шаблон Аero меню не работает при аппаратном ускорении</li>
<li>DSK-351752 Фоновые картинки не выстраиваются между элементами экрана</li>
<li>DSK-354933 Выделение неправильным цветом в выпадающем адресном поле</li>
<li>DSK-356643 [*nix] тема не растягивается при развернутом состоянии</li>
<li>DSK-353770 Подсказка отладки шаблона должна быть показана только при зажатии CTRL</li>
</ul>
<h3>Ядро</h3>
<ul>
<li>Исправлено множество сбоев</li>
<li>Множественные исправления Dragonfly</li>
<li>CORE-41308 Не разрешает встраивание iframe&#39;ов в родительский документ с iframe src=&quot;#&quot; (приводит к зависанию)</li>
<li>CORE-41844 Сбой при огромном поле ввода</li>
<li>CORE-41835 if(top.document) не должен работать кроссдоменно</li>
<li>CORE-41647 &#39;list-style-type: none&#39; влияет на CSS градиенты, но не на другие изображения</li>
<li>CORE-41669 xx-small font size отличается от других браузеров</li>
<li>CORE-31179 Обрезается динамическое добавление тени</li>
<li>CORE-41708 Поддержка HTMLInputElement.width и HTMLInputElement.height</li>
<li>CORE-41793 Внутреннее ES имя класса для key event object должен быть KeyboardEvent</li>
<li>CORE-34674 about:blank недостаточно пуст</li>
<li>CORE-42174 Сбой в webgl демо на codeflow.org</li>
<li>CORE-36742 Cookies, добавленные с помощью AddCookie, не отображаются в JS (document.cookie)</li>
<li>CORE-41643 Вырезать и Вставить текст не вставляет вырезанный текст (FramesDocument::CutTextToClipboard неверный код для помещение в буфер)</li>
<li>CORE-42357 Внешние скрипты не сохраняются в MHTML</li>
<li>CORE-42361 XML парсинг не работает при сохранении XHTML документа с изображениями</li>
<li>CORE-42359 Элементы в тегах OBJECT не сохраняются при сохранении с изображениями</li>
<li>CORE-42296 Добавление color:black к UA стилизации для чтобы сделать его более читаемым при заданном желтым цветом текста по умолчанию</li>
<li>CORE-42450 Некорректный .oex файл приводит к зависанию Opera</li>
<li>CORE-42570 Нельзя залогиниться в Opera Link используя non-ASCII пароль</li>
<li>CORE-42214 Opera виснет после отправки формы, измененной с помощью JS</li>
<li>CORE-28773 non-BMP символ в URL некорректно отображается в строке состояния</li>
<li>CORE-42281 :not(.a).b и :not(#a)#b не совпадают, когда должны</li>
<li>CORE-20881 выделения текста в редактированном документе обрабатывает суррогатную пару (surrogate pair) как два символа</li>
<li>CORE-42217 Неправильная обработка box-shadow</li>
<li>CORE-25919 Конвертирование hex в unicode не срабатывает в режимах почты compose/designmode</li>
<li>CORE-12300 Opera дает сбой при отсутствии файла english.lng</li>
<li>CORE-5664 line-height: 0 предотвращает выделение текста</li>
<li>CORE-40886 minhaseconomias.com.br не загружается после логина (Unicode проблема)</li>
<li>CORE-13929 Если после !important не следует точка с запятой, не сработает не только следующее свойство, но и все правило тоже</li>
<li>CORE-40509 Изображение с процентным значением высоты не меняет ширину, чтобы заполнить своего родителя</li>
<li>CORE-39361 text-indent служит оберткой для вложенных флоат-элементов и элементов с левым отступом</li>
<li>CORE-38020 STF поток содержащий инлайн-блок с левым отступом и флоат-элемент становится слишком узким в почти стандартном режиме</li>
<li>CORE-42663 css white-space свойства со значениями, отличными от &#39;nowrap&#39; не обрабатываются в MultilineEdit</li>
<li>CORE-42614 Баг с линейным градиентом</li>
<li>CORE-42396 Уменьшен расход памяти при Bidi расчете</li>
<li>CORE-42537 Unicode space like символы не должны конвертироваться в ПРОБЕЛ (U+0020) в заголовке документа</li>
<li>CORE-39103 Незначительный прирост производительности JS</li>
<li>CORE-42736 Удалено игнорирование атрибута &#39;transform&#39; элемента после animateTransform</li>
<li>CORE-42671 Элемент остается в активном состоянии после двойного клика</li>
<li>CORE-42776 animateTransform + svg фильтр не размещаются корректно</li>
<li>CORE-40065 В Event.prototype должны быть константы AT_TARGET, BUBBLING_PHASE, CAPTURING_PHASE, &#8230;</li>
<li>CORE-42038 postMessage отдает структуру://host вместо ноля для файловой схемы, у которой нет scheme/host/port кортежа</li>
<li>CORE-42784 EventSource не срабатывает в виджетах в связи с проверкой CORS</li>
<li>CORE-41319 Не срабатывает клик по определенных частях колонки</li>
<li>CORE-42822 Работает, пока оператор с исполняемым регулярным выражением, который был создан во время компиляции, не прекращает пошагово матчить</li>
<li>CORE-42909 Игнорируется стиль тегов SVG, встроенных в HTML5</li>
<li>CORE-42848 Поддерево с символьной информацией (текст или комментарии) вставляется в элемент дважды и вызывает проблемы производительности</li>
<li>CORE-42866 Фикс для Unicode имен прикрепленных файлов в почте приводит к повреждению файлов в некоторых клиентах</li>
<li>CORE-8987 Изменения настроек не сохраняются незамедлительно</li>
<li>CORE-42910 document.lastModified должен возвращать текущее время, если нет данных</li>
<li>CORE-42574 Обход DOM, работающий cloneNode и установка innerHTML массово нагружают CPU</li>
<li>CORE-37862 FileReader API &#8211; последнее &quot;progress&quot; событие иногда срабатывает после &quot;load&quot; и &quot;loaded&quot; событий</li>
<li>CORE-43012 Срабатывает отключение параметра по умолчанию для SSL</li>
<li>CORE-42812 Сокращенный border-radius не может быть удален с помощью removeProperty()</li>
<li>CORE-33296 Opera не читает zip архивы созданные с помощью bsdtar или zip64</li>
<li>CORE-43050 Когда инпут с данными спрятан, и позже его значение убирается и появляется снова, старое значение восстанавливается</li>
<li>CORE-43010 currentColor обрабатывается как значение invert свойства outline-color</li>
</ul>
<p>&nbsp;</p>
<p><a href="http://my.opera.com/desktopteam/blog/2012/02/10/core-dnt-mail-themes">Оригинал</a></p>
]]></content:encoded>
			<wfw:commentRss>http://css-live.ru/articles/opera-12-wahoo-obnovlenie-yadra-s-ispravleniyami-funkcii-do-not-track-pochty-i-temizacii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

