<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Бузочок &#187; спрайты</title>
	<atom:link href="http://buzochok.org.ua/tag/sprajty/feed/" rel="self" type="application/rss+xml" />
	<link>http://buzochok.org.ua</link>
	<description>Для интересных людей</description>
	<lastBuildDate>Wed, 21 Apr 2010 16:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Спрайты в CSS</title>
		<link>http://buzochok.org.ua/sprajty-v-css/</link>
		<comments>http://buzochok.org.ua/sprajty-v-css/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 09:33:10 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[рецепты]]></category>
		<category><![CDATA[спрайты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=963</guid>
		<description><![CDATA[Как оказалось, css-спрайты за бугром &#8212; весьма распространённая фишка. А чем мы хуже? :) Мы, правда, далеко не так активно апробируем всяческие инновации. Даже такие полезные. Еле-еле перешли от табличной вёрстки к блочной, и то хорошо. Но планку надо поднимать, поэтому сегодня мы обсудим простую технику, которая изменит ваше представление о применении однотипной графики на [...]]]></description>
			<content:encoded><![CDATA[<p>Как оказалось, css-спрайты за бугром &mdash; весьма распространённая фишка. А чем мы хуже? :) Мы, правда, далеко не так активно апробируем всяческие инновации. Даже такие полезные. Еле-еле перешли от табличной вёрстки к блочной, и то хорошо. Но планку надо поднимать, поэтому сегодня мы обсудим простую технику, которая изменит ваше представление о применении однотипной графики на сайте.</p>
<p>Спрайты — это несколько небольших картинок, объединённых в один графический файл.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/img1.jpg" alt="img1" title="img1" width="500" height="398" class="alignnone size-full wp-image-964" /></p>
<p><span id="more-963"></span></p>
<p>Во-первых, объём одного файла как правило меньше, чем сумма объёмов отдельных файлов. Это можно объяснить снижением издержек на сохранение одного изображения: всякие там заголовки, указывающие на формат изображения, или общая палитра цветов. Если вы помните рекомендацию 90-х годов про разбивку одного большого файла на несколько мелких, чтобы создать иллюзию, что сайт грузится быстрее &mdash; забудьте сейчас же :) Такой подход создавал именно иллюзию, так как суммарный объём нескольких файлов был больше, чем объём одного файла, а сама картинка грузилась дольше.</p>
<p>Во-вторых — самое главное — сокращается количество HTTP-запросов к серверу. Многие не обращают на это внимание, а зря. Зачастую отдельный запрос обходится намного дороже, чем десяток «лишних» данных в одном изображении.</p>
<p>В общем спрайты — это круто и модно. Сегодня разберём первый пример.</p>
<p>Допустим, для красоты, необходимо изменить цвет иконки при наведении на неё мышкой. <a href="http://css-tricks.com/examples/CSS-Sprites/Example1Before/">Живой пример</a>.</p>
<pre class="brush: css;">#nav li a {background:none no-repeat left center}
#nav li a.item1 {background-image:url('../img/image1.gif')}
#nav li a:hover.item1 {background-image:url('../img/image1_over.gif')}
#nav li a.item2 {background-image:url('../img/image2.gif')}
#nav li a:hover.item2 {background-image:url('../img/image2_over.gif')}
и т.д.
</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/example1before.png" alt="example1before" title="example1before" width="450" height="294" class="alignnone size-full wp-image-967" /></p>
<p>Обычно мы используем такой подход, так как он очевиден. Но он ещё и неэффективен. Если вы применяете этот код на практике, то наверняка заметили, что изображениям надо время, чтобы подгрузиться. А иконки, которые появляются при наведении, подгружаются только по запросу, что визуально нифига не эстетично, так как это создаёт ощущение тормознутости и дёрганости у сайта.</p>
<p>Используя спрайты, мы можем исправить ситуацию. Вместо использования 10-ти отдельных изображений кнопок (5 на таковые и 5 на состояние при наведении), можно объединить их все в одну большую картинку. В общем создайте новое изображение, которое по ширине такое же как ваша самая большая картинка, а в высоту такое же как сумма высот всех ваших картинок плюс X пикселей, где X &mdash; количество картинок в спрайте. Дополнительные пиксели нужны для однопиксельного расстояния между картинками, незачем им сливаться в одну белиберду. Ну и теперь, на таких условиях, расположите картинки одна под другой, с однопиксельным просветом между ними.</p>
<p><a href="http://css-tricks.com/examples/CSS-Sprites/Example1After/">Зацените результат</a>:</p>
<pre class="brush: css;">#nav li a {background-image:url('../img/image_nav.gif')}
#nav li a.item1 {background-position:0px 0px}
#nav li a:hover.item1 {background-position:0px -72px}
#nav li a.item2 {background-position:0px -143px;}
#nav li a:hover.item2 {background-position:0px -215px;}
и т.д.
</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/example1after.png" alt="example1after" title="example1after" width="450" height="294" class="alignnone size-full wp-image-966" /></p>
<p>Нехило оптимизировали, правда? Теперь представьте как это круто, когда на сайте очень много мелкой однотипной графики. Те же кнопки, звёздочки рейтингов, смайлики и т.п.</p>
<p>Если вы не поняли что мы сделали в коде &mdash; поясню. По факту, мы указали для всех кнопок одно фоновое изображение. Оно у нас большое и хранит в себе все 10 кнопочек. Простой арифметикой мы вычисляем какой участок изображения надо показать, применимо к пунктам списка. Всё остальное прячется. Люблю этот принцип с диафильмом сравнивать :) Если вы всё равно ничего не поняли &mdash; не отчаивайтесь. В следующий раз рассмотрим ещё один пример во всех-всех подробностях. </p>
<p>Пара спрайтов для затравки :)</p>
<p><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/apple.jpg" alt="apple" title="apple" width="590" height="152" class="alignnone size-full wp-image-970" /><br />
<img src="http://buzochok.org.ua/wp-content/uploads/2009/11/youtube.gif" alt="youtube" title="youtube" width="152" height="450" class="alignnone size-full wp-image-971" /></p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/sprajty-v-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
