<?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>Arttu Peka</title>
	<atom:link href="http://arttu-peka.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://arttu-peka.info</link>
	<description>блог об интернет-технологиях</description>
	<lastBuildDate>Fri, 27 Aug 2010 01:59:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Восстановление NTFS в Ubuntu</title>
		<link>http://arttu-peka.info/ubuntu/vosstanovlenie-ntfs-v-ubuntu/</link>
		<comments>http://arttu-peka.info/ubuntu/vosstanovlenie-ntfs-v-ubuntu/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 00:49:05 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=774</guid>
		<description><![CDATA[Переносил файлы с ext4 на NTFS, комп завис &#8211; с кем не бывает? После перезагрузки Убунту заругалась и отказалась монтировать диск &#8211; мол, ошибки в структуре. GParted сказал то же самое, прибавив, что лучше бы я загрузился с винды и запустил некий chkdsk. Винды на диске у меня на данный момент нет, так что я, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fubuntu%2Fvosstanovlenie-ntfs-v-ubuntu%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fubuntu%2Fvosstanovlenie-ntfs-v-ubuntu%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/ubuntu-logo.gif" alt="" style="margin-left:180px;" /></p>
<p><span class="capital-big">П</span>ереносил файлы с ext4 на NTFS, комп завис &#8211; с кем не бывает? После перезагрузки Убунту заругалась и отказалась монтировать диск &#8211; мол, ошибки в структуре. <strong>GParted</strong> сказал то же самое, прибавив, что лучше бы я загрузился с винды и запустил некий chkdsk. Винды на диске у меня на данный момент нет, так что я, не веря что Убунту не может решить такую простую проблему, обратился к гуглу.<span id="more-774"></span></p>
<p>Там, как всегда было дофига сеошного мусора, так что я просто забил на это дело, подключил диск с виндой, и из-под нее запустил тот самый chkdisk (который оказался стандартным Check Disk, Propriesties->Tools->Check Disk). Важно, что запускать его надо с флагом /f (автоматически исправлять ошибки), или просто поставить соответствующую галочку.</p>
<p>Ну, а что делать виндоненавистникам, у которых ни загрузочного диска с Windows, ни харда, как в моем случае? Ответ прост &#8211; они не  используют NTFS. Эта файловая система нужна, по большому счету, только для совместимости с Windows. Единственная найденная мной прога под линукс, которая якобы может восстановить NTFS-партицию &#8211; это <a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk</a>.<br />
 Ни одной истории успешного восстановления, впрочем, не нашел (хоть и уверен, что такие есть). Так что лучше <del datetime="2010-08-27T00:23:07+01:00">качайте с торрентов образ винды</del> покупайте официальный дистрибутив только в проверенных магазинах, и восстанавливайте партицию с него.</p>
<p>Так и разрушаются детские иллюзии, что под линукс есть все. </p>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/ubuntu/vosstanovlenie-ntfs-v-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Создание нестандартных настроек WP-темы</title>
		<link>http://arttu-peka.info/wordpress/sozdanije-nestandartnih-nastrojek-wp-temi/</link>
		<comments>http://arttu-peka.info/wordpress/sozdanije-nestandartnih-nastrojek-wp-temi/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 15:23:30 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[wordpress тема]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=760</guid>
		<description><![CDATA[Собственно, еще одна зарисовка на тему создания меню темы WordPress. Статья ориентирована на начинающих разработчиков (HTML/PHP гуру врят-ли найдут что новое). Объясню, в частности, как организовать загрузку файла юзера, с последующим использованием его в теме. Для удобства, буду рассматривать вариант, когда приведенная ниже опция &#8211; единственная. Алгоритм: 1. Загружаем выбранный файл 2. Переносим его из [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fwordpress%2Fsozdanije-nestandartnih-nastrojek-wp-temi%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fwordpress%2Fsozdanije-nestandartnih-nastrojek-wp-temi%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/wp-fileupload.jpg" alt="wordpress" style="margin-left:150px;" /></p>
<p><span class="capital-big">С</span>обственно, еще одна зарисовка на тему создания меню темы WordPress. Статья ориентирована на начинающих разработчиков (HTML/PHP гуру врят-ли найдут что новое). Объясню, в частности, как организовать загрузку файла юзера, с последующим использованием его в теме.<span id="more-760"></span></p>
<p>Для удобства, буду рассматривать вариант, когда приведенная ниже опция &#8211; единственная. Алгоритм:<br />
1. Загружаем выбранный файл<br />
2. Переносим его из временной директории в постоянное место<br />
3. Зная путь до файла, используем его в теме<br />
Сначала php-код:</p>
<pre class="brush: php;">
if(isset($_FILES['fileupload']['name'])&amp;&amp;$_REQUEST['action']=='update'){
	$file_path = TEMPLATEPATH.'/uploads/';
	$file_path = $file_path.basename($_FILES['fileupload']['name']);
	$file_css_path = get_bloginfo('template_url');
	$file_css_path = $file_css_path.'/uploads/'.basename($_FILES['fileupload']['name']);
	$file_path = str_replace('\\','/',$file_path);
</pre>
<p>Если проставленно имя файла, и в поле &#8216;action&#8217; значение &#8216;update&#8217; (это будет скрытое поле, для подтверждения, что юзер ввел новые настройки), то начинаем. В глобальной переменной <strong>TEMPLATEPATH</strong> хранится движок хранит путь до темы. Нам нужен как абсолютный путь, так и URL (в моем случае, для доступа к файлу-картинке через CSS). URL темы достается функцией get_bloginfo(&#8216;template_url&#8217;). Ну и в конце, заменяем все символы &#8220;\&#8221; на символы &#8220;/&#8221; в абсолютном пути файла.<br />
Далее, переместим файл, и выведем в опцию его URL:</p>
<pre class="brush: php;">
$is_a_file = move_uploaded_file($_FILES['fileupload']['tmp_name'],$file_path);

	if (!get_option('uploaded_pic)) {add_option('uploaded_pic');}
	if ($is_a_file) {update_option('uploaded_pic',$file_css_path);}
	}
</pre>
<p>При создании меню настроек меня преследовала ошибка, когда опция обнулялась при каждом обновлении настроек, если только пользователь не загрузил новую картинку. Проверка на проставленный $_FILES['fileupload']['name'] ничего не давала, потому что ключ не пустой в любом случае. Чтобы определить, была ли загрузка, можно, к примеру, проверить размер файла ($_FILES['fileupload']['size']>0) или сделать как я &#8211; проверить результат перемещения файла, который будет FALSE при ошибке.<br />
Ну и наконец HTML-интерфейс:</p>
<pre class="brush: xml;">
&lt;?php wp_nonce_field(); ?&gt;
&lt;form method=&quot;post&quot; action=&quot;&quot; enctype=&quot;multipart/form-data&quot;&gt;
Upload an image: &lt;input type=&quot;file&quot; name=&quot;fileupload&quot; /&gt;&lt;br /&gt;
&lt;p&gt;&lt;input name=&quot;update&quot; type=&quot;submit&quot; value=&quot;&lt;?php _e('Save changes'); ?&gt;&quot; style=&quot;padding:3px;&quot;  /&gt;&lt;/p&gt;
&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;update&quot;  /&gt;
&lt;/form&gt;
</pre>
<p>Не забываейте параметр <strong>ectype</strong> у формы. Здесь, думаю, все очевидно.<br />
Удачного кодинга!</p>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/wordpress/sozdanije-nestandartnih-nastrojek-wp-temi/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>Меню опций для WordPress-темы</title>
		<link>http://arttu-peka.info/wordpress/menyu-opcij-dlja-wp-temi/</link>
		<comments>http://arttu-peka.info/wordpress/menyu-opcij-dlja-wp-temi/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 16:25:54 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[wordpress тема]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=737</guid>
		<description><![CDATA[Понадобилось мне недавно сделать администраторское меню для WP-темы. В гугле найти инфы удалось преступно мало, в основном перепечатки одной довольно устаревшей статьи, ноги которой растут вроде как с ThemeForest. Реализованный там механизм любопытен, особенно генерация опций из массивов, но для простой темы целесообразнее, имхо, использовать более прямолинейный и прозрачный метод. Не буду подробно останавливаться на [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fwordpress%2Fmenyu-opcij-dlja-wp-temi%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fwordpress%2Fmenyu-opcij-dlja-wp-temi%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/wordpress.png" width="200" height="200" style="margin-left:100px;" /></p>
<p><span class="capital-big">П</span>онадобилось мне недавно сделать администраторское меню для WP-темы. В гугле найти инфы удалось преступно мало, в основном перепечатки одной довольно устаревшей статьи, ноги которой растут вроде как с ThemeForest. Реализованный там механизм любопытен, особенно генерация опций из массивов, но для простой темы целесообразнее, имхо, использовать более прямолинейный и прозрачный метод.<span id="more-737"></span></p>
<p>Не буду подробно останавливаться на основах, как создавать простейшие опции и форму читайте в <a href="http://codex.wordpress.org/Creating_Options_Pages">официальном мануале</a>. Да и на русский перевели этот текст, думаю, не раз. Заметьте, там описывается создание панели опций для плагина, но для темы все абсолютно так-же. А я расскажу о некоторых неоднозначных для начинающего особенностях.</p>
<p>В меню мне понадобилось сделать несколько чекбоксов (checkbox, как это по-русски?). Казалось бы, проще простого &#8211; чекбокс или отмечен, или нет, так что забиваем булевое true/false в опцию и радуемся жизни. Первая проблема &#8211; опция таких значений не принимает. Ну и ладно, вместо используем 1/0 вместо этого:</p>
<pre class="brush: php;">
add_action('admin_menu','add_user_options');	

function add_user_options(){
add_options_page('Theme Options','Theme settings','edit_themes','functions','edit_theme_options');
}

function edit_theme_options(){
$options_names = array('option1','option2');
if ('update'==$_REQUEST['action']){
	foreach ($options_names as $option_name){
		if (!get_option($option_name)) {add_option($option_name);}
		$checked = isset($_POST[$option_name])?1 : 0;
		update_option($option_name, $checked);
		}
}
</pre>
<p>В случае увеличения кол-ва чекбоксов просто добавляются элементы в массив. Удобно и канонiчно. Спасибо <strong>Stack Overflow</strong>, когда у меня мозги не работали.</p>
<p>Переходим к форме для администраторской панели. Тут меня постигла вторая неожиданность &#8211; html-свойство checked, при <strong>любых</strong> значениях означает что поле отмечено, поэтому чтобы убрать галочку надо удалить свойство совсем. Надеюсь, когда-нибудь свойство приведут в более человеческий вид.</p>
<pre class="brush: php; html-script: true;">
&lt;div class=&quot;wrap&quot;&gt;
&lt;h2&gt;Theme Settings&lt;/h2&gt;
&lt;form method=&quot;post&quot; action=&quot;&quot;&gt;
&lt;?php wp_nonce_field(); ?&gt;
&lt;br /&gt;
&lt;input type=&quot;checkbox&quot; name=&quot;option1&quot; &lt;?php  if(get_option('option1')&gt;0){ echo('checked=&quot;checked&quot;');} ?&gt; /&gt;
Use option1
&lt;br /&gt;&lt;br /&gt;
&lt;input type=&quot;checkbox&quot; name=&quot;option2&quot; &lt;?php if(get_option('option2')&gt;0){ echo('checked=&quot;checked&quot;');} ?&gt;  /&gt;
Use option2
</pre>
<p>Ну и на десерт &#8211; в именах опций нельзя использовать тире (-). Капризы парсера?</p>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/wordpress/menyu-opcij-dlja-wp-temi/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Еще несколько CSS-техник</title>
		<link>http://arttu-peka.info/web-design/eshhe-neskolko-css-texnik/</link>
		<comments>http://arttu-peka.info/web-design/eshhe-neskolko-css-texnik/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 17:10:16 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=671</guid>
		<description><![CDATA[Развивая тему стилей, расскажу о нескольких не совсем очевидных приемах. Полезно знать каждому верстальщику. White-Space По умолчанию в (X)HTML пробелы, идущие в ряд, урезаются до одного, а переходы на новую строку выбрасываются вообще. Это удобно, так как дает нам возможность разделять элементы в разметки, делая ее более понятной. Это компенсируется тегом &#60;pre&#62;, внутри которого элементы [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fweb-design%2Feshhe-neskolko-css-texnik%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fweb-design%2Feshhe-neskolko-css-texnik%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/css.jpg" alt="css" style="margin-left:150px;" /></p>
<p><span class="capital-big">Р</span>азвивая тему стилей, расскажу о нескольких не совсем очевидных приемах. Полезно знать каждому верстальщику.<span id="more-671"></span></p>
<p style="font-size:16pt;"><strong>White-Space</strong></p>
<p>По умолчанию в (X)HTML пробелы, идущие в ряд, урезаются до одного, а переходы на новую строку выбрасываются вообще. Это удобно, так как дает нам возможность разделять элементы в разметки, делая ее более понятной.</p>
<p>Это компенсируется тегом &lt;pre&gt;, внутри которого элементы вне тегов выводятся абсолютно так-же, как они заданы в разметке. Есть и символ непрерывного пробела (non-breaking space) &#8211; <span style="color:#00AFFF;"> &amp;nbsp;</span></p>
<p>Но гораздо более корректно управлять отображением пробелов через CSS-свойство <span style="color:#00AFFF;">white-space</span><br />
Рассмотрим возможные его значения:<br />
<em>white-space:normal</em><br />
Состояние по умолчанию. Пожалуй, единственный случай, когда оно используется &#8211; это когда вы хотите отменить для конкретного блока ранее заданное глобальное значение.<br />
<img src="http://arttu-peka.info/wp-content/uploads/ws-1.jpg" alt="ws1" style="margin-left:100px;" /><br />
<em>white-space:nowrap</em><br />
Самое используемое значение, делает то же, что и <em>normal</em>, за исключением того, что режет все переходы на новую строку, даже автоматические при недостатке места в элементе.<br />
<img src="http://arttu-peka.info/wp-content/uploads/ws-2.jpg" alt="ws2" style="margin-left:100px;" /><br />
<em>white-space:pre</em><br />
Аналогично действию тега &lt;pre&gt;. Текст выводится как есть.<br />
<img src="http://arttu-peka.info/wp-content/uploads/ws-3.jpg" alt="ws3" style="margin-left:100px;" /><br />
<em>white-space:pre-line</em><br />
Все так-же как в normal, только учитываются переходы на новую строку. <strong>Работает в IE начиная с 7, Firefox начиная с 3.0, и Opera с версии 9.2</strong><br />
<img src="http://arttu-peka.info/wp-content/uploads/ws-4.jpg" alt="ws4" style="margin-left:100px;" /></p>
<p>Помните, что <span style="color:00AFFF;">white-space</span> может использоваться только для inline-элементов. Для блоков (<span style="color:#00AFFF;">display:block</span>) оно не действует.</p>
<p style="font-size:16pt;"><strong>Прозрачность</strong></p>
<p>Одна из первых проблем, с которой сталкиваются начинающие верстальщики &#8211; поддержка прозрачности. Итак, рассмотрим основные способы обеспечения прозрачности элемента:</p>
<p>&nbsp;</p>
<p><strong>Прозрачность в браузерах:</strong><br />
Просто, как две копейки:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#element</span><span style="color: #00AA00;">&#123;</span>
opacity<span style="color: #00AA00;">:</span>.6
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Opacity переводится как &#8220;непрозрачность&#8221; (или видимость, в данном случае). При значении .6 элемент непрозрачен (виден) на 60%. Значение может иметь до двух десятичных чисел, к примеру .06 означает 6% непрозрачности. Вот и все.</p>
<p>&nbsp;</p>
<p><strong>Прозрачность в Internet Explorer:</strong><br />
Конечно, IE плевать хотел на остальных и имеет собственную версию обеспечения прозрачности:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#element</span><span style="color: #00AA00;">&#123;</span>
filter<span style="color: #00AA00;">:</span>alpha<span style="color: #00AA00;">&#40;</span>opacity<span style="color: #00AA00;">=</span><span style="color: #cc66cc;">40</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Для того, чтобы свойство работало, элемент должен иметь расположение (layout). Самое простое, как заставить его появиться &#8211; указать ширину (<span style="color:#00AFFF;">width</span>) или высоту (<span style="color:#00AFFF;">height</span>), или свойство <span style="color:#00AFFF;">zoom</span> (любое, кроме normal). Некоторые элементы (как tr, th, td, img&#8230;) имеют расположение изначально.<br />
В IE 8 работает еще и следующий метод:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">-ms-filter<span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;progid:DXImageTransform.Microsoft.Alpha(opacity=6)&quot;</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>Почти удобно.</p>
<p>&nbsp;</p>
<p><strong>Прозрачность через RGBA:</strong><br />
Это CSS3-метод, поддерживаемый последними версиями крупных браузеров.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#element</span><span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>rgba<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">120</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">120</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">120</span><span style="color: #00AA00;">,</span>.6<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Тут все очевидно &#8211; задаем цвет в формате rgb (в данном случае должен быть серый) и непрозрачность 60%.</p>
<p>&nbsp;</p>
<p><strong>Прозрачность через HSLA:</strong><br />
HSLA &#8211; это Hue, Saturation, Lightness, Alpha. Прозрачность &#8211; последний параметр (альфа-канал). Пример:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#element</span><span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> hsla<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">205</span><span style="color: #00AA00;">,</span> <span style="color: #933;"><span style="color: #cc66cc;">38</span>%</span><span style="color: #00AA00;">,</span> <span style="color: #933;"><span style="color: #cc66cc;">47</span>%</span><span style="color: #00AA00;">,</span> .6<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Подробнее о нем читайте <a href="http://www.w3.org/TR/2003/CR-css3-color-20030514/#hsla-color">на W3</a>. Следует заметить что прозрачность через <span style="color:#00AFFF;">rgba</span> и <span style="color:#00AFFF;">hsla</span> затрагивает только фон элемента, и не трогает наследников (child).</p>
<p>Хотел выложить еще несколько техник, но для одного поста выходит многовато. Скорее всего выложу еще один такой пост на днях.</p>
<p>P.S. Поздравте меня с наступившей сессией, тысяча чертей.</p>
<p>P.P.S. Вольный перевод <a href="http://www.impressivewebs.com/css-opacity-reference/">этого</a> и <a href="http://www.impressivewebs.com/css-white-space/">вот этого</a> материалов.</p>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/web-design/eshhe-neskolko-css-texnik/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>Lightbox на CSS3</title>
		<link>http://arttu-peka.info/web-design/lightbox-na-css3-2/</link>
		<comments>http://arttu-peka.info/web-design/lightbox-na-css3-2/#comments</comments>
		<pubDate>Sun, 30 May 2010 17:12:10 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=613</guid>
		<description><![CDATA[Полагаю, все из вас знакомы со скриптом Lightbox. Если нет, попробуйте нажать мышью на любую уменьшенную картинку на этом блоге &#8211; картинка развернется в полный размер, а остальная часть экрана померкнет. Название &#8220;lightbox&#8221; уже стало нарицательным, обозначая бесчиленные виды этого скрипта. Я, к примеру, использую реализацию на jQuery и доволен ею. Теперь я покажу, как [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fweb-design%2Flightbox-na-css3-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fweb-design%2Flightbox-na-css3-2%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/lb.jpg" alt="lb" style="margin-left:100px;" /></p>
<p><span class="capital-big">П</span>олагаю, все из вас знакомы со скриптом Lightbox. Если нет, попробуйте нажать мышью на любую уменьшенную картинку на этом блоге &#8211; картинка развернется в полный размер, а остальная часть экрана померкнет. Название &#8220;lightbox&#8221; уже стало нарицательным, обозначая бесчиленные виды этого скрипта. Я, к примеру, использую реализацию на jQuery и доволен ею. Теперь я покажу, как создать подобный эффект с помощью CSS3.<span id="more-613"></span></p>
<p>Главный вопрос &#8211; зачем изобретать велосипед? Ну, во-первых, CSS-аналог не в пример быстрее скриптовых, а во-вторых я предпочитаю избавляться от скриптов, где только возможно. Чего и вам желаю.<br />
Выглядеть это все будет так:<br />
<img src="http://arttu-peka.info/wp-content/uploads/23-02_css_lightbox_finished.png" alt="lightbox" /><br />
Ну и <a href="http://downloads.sixrevisions.com/css-light-box/source.html#">живой пример</a>.</p>
<p>Что касается поддержки, то данный пример будет работать во всех последних версиях браузеров &#8211; <strong>Firefox</strong>, <strong>Chrome</strong>, <strong>Safari</strong> и <strong>Opera</strong>. Что касается <strong>Internet Explorer</strong>, то для него придется написать небольшой javascript-хак, о котором ниже.<br />
<img src="http://arttu-peka.info/wp-content/uploads/23-03_css_lightbox_internet_explorer_rus1.png" alt="ie" /></p>
<p>Итак, начнем разметку. Чтобы показать всю мощь этого метода, сделаем три разных лайтбокса &#8211; с картинкой, текстом и видео.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">html</span> <span style="color: #000066;">xmlns</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #000066;">lang</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;en&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">head</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">meta</span> <span style="color: #000066;">http-equiv</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;content-type&quot;</span> <span style="color: #000066;">content</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">title</span><span style="color: #0000FF;">&gt;</span></span>CSS Lightbox<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">title</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">head</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">body</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">h1</span><span style="color: #0000FF;">&gt;</span></span>CSS Lightbox<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">h1</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>You can use this fantastic solution to create lightboxes for not just <span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">a</span> <span style="color: #000066;">href</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#image&quot;</span> <span style="color: #000066;">title</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;Image Lightbox&quot;</span><span style="color: #0000FF;">&gt;</span></span>images<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">a</span><span style="color: #0000FF;">&gt;</span></span> but rich, semantic <span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">a</span> <span style="color: #000066;">href</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#content&quot;</span> <span style="color: #000066;">title</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;Content Lightbox&quot;</span><span style="color: #0000FF;">&gt;</span></span>content<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">a</span><span style="color: #0000FF;">&gt;</span></span> and <span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">a</span> <span style="color: #000066;">href</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#video&quot;</span> <span style="color: #000066;">title</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;Video Lightbox&quot;</span><span style="color: #0000FF;">&gt;</span></span>video's<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">a</span><span style="color: #0000FF;">&gt;</span></span> as well!<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">body</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">html</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Пока все предельно просто. У нас есть заголовок и три ссылки, которые никуда не ведут. Теперь надо создать контейнеры для каждого лайтбокса. Рассмотрим все по порядку:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;lightbox&quot;</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;image&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;w300 h60&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">img</span> <span style="color: #000066;">alt</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;Six Revisions&quot;</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;98&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;255&quot;</span> <span style="color: #000066;">src</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;logo.jpg /&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;close&quot;</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">a</span> <span style="color: #000066;">href</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">title</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;Close This Image Lightbox&quot;</span><span style="color: #0000FF;">&gt;</span></span>Close <span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">span</span><span style="color: #0000FF;">&gt;</span></span>X<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">span</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">a</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>У каждого из них будет свой идентификатор, по которому мы их и будем вызывать, через параметр <strong>href</strong> у ссылок.<br />
Блок с текстом:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;lightbox&quot;</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;content&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;w60p h400 scroll&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">h2</span><span style="color: #0000FF;">&gt;</span></span>Your Content Goes Here!<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">h2</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent quis felis suscipit tellus euismod varius quis ut nibh. Curabitur in ante nunc, vitae venenatis dui. Phasellus egestas ipsum in ipsum suscipit volutpat. Etiam eu nibh eros. Sed dolor ligula, tincidunt vitae elementum vitae, pharetra vitae eros. Cras risus lectus, aliquam vitae condimentum id, feugiat eu nisi. Cras eu sem erat, eget ultrices enim. Suspendisse feugiat fringilla massa at convallis. Quisque tincidunt, diam quis facilisis volutpat, purus orci rutrum leo, id dapibus tellus ante vel mauris. Quisque posuere, tortor in laoreet hendrerit, ipsum sem molestie nunc, et ultrices erat nulla sed dui. Donec sit amet mi sapien. Maecenas fermentum nulla eu ligula dictum id elementum nisi commodo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In ac massa quam. Suspendisse nibh nibh, condimentum a porttitor a, placerat in lorem. Sed sit amet elit eget magna condimentum posuere volutpat a neque.<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>Sed dignissim viverra neque, sit amet lobortis elit luctus ac. Proin placerat varius quam eu molestie. Pellentesque vel ante quis metus auctor convallis. Duis mattis risus ac tortor luctus in semper sem fringilla. Vestibulum consectetur iaculis risus vel rutrum. Nam scelerisque gravida felis quis egestas. Mauris vehicula nisl quis felis bibendum nec placerat neque dictum. Donec erat tortor, venenatis id consequat ut, dictum nec enim. Ut ultrices eros vel diam pulvinar aliquam. Phasellus non nisi vitae ligula imperdiet dapibus eleifend sed neque. Morbi gravida dignissim turpis eu auctor. Morbi pellentesque urna vitae nunc dictum elementum. Aliquam erat volutpat. Aenean urna nibh, pretium ut accumsan ut, luctus eget nibh. Nulla sollicitudin fermentum turpis eget rutrum. Integer dignissim dui turpis. Morbi metus libero, suscipit blandit dignissim aliquam, sodales non mi. Proin id augue odio, sit amet gravida mauris.<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>Proin a dignissim orci. Nam nec urna nisi, in blandit lorem. Nulla cursus ornare rhoncus. Nunc lectus orci, tristique et aliquet sed, venenatis et felis. Nullam sodales orci at est pharetra nec aliquam risus scelerisque. Nullam varius, nisi ut sagittis scelerisque, nulla mauris tempus magna, quis pellentesque sem erat a diam. Cras lectus est, dictum ut consequat ut, adipiscing sit amet sapien. Curabitur tincidunt varius gravida. Quisque augue sem, commodo sed molestie venenatis, cursus vehicula lorem. Praesent scelerisque, tortor a euismod malesuada, ipsum ligula semper odio, ultricies molestie sapien metus condimentum felis. Vivamus hendrerit gravida interdum. Fusce at purus eu orci laoreet lobortis. Aliquam cursus mi at tellus fringilla dictum. Sed nec libero dolor. Integer nec neque at mi malesuada tincidunt.<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;close&quot;</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">a</span> <span style="color: #000066;">href</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">title</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;Close This Content Lightbox&quot;</span><span style="color: #0000FF;">&gt;</span></span>Close <span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">span</span><span style="color: #0000FF;">&gt;</span></span>X<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">span</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">a</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Чтобы выглядело совсем продвинуто, добавим и блок с видео:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;lightbox&quot;</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;video&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;w640 h386&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">object</span> <span style="color: #000066;">type</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;application/x-shockwave-flash&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;640&quot;</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;385&quot;</span> <span style="color: #000066;">data</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;http://www.youtube.com/v/bsGEWHNJ3s8&quot;</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">param</span> <span style="color: #000066;">name</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;movie&quot;</span> <span style="color: #000066;">value</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;http://www.youtube.com/v/bsGEWHNJ3s8&quot;</span> <span style="color: #0000FF;">/&gt;&lt;/</span><span style="color: #0000FF;">object</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;close&quot;</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">a</span> <span style="color: #000066;">href</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">title</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;Close This Video Lightbox&quot;</span><span style="color: #0000FF;">&gt;</span></span>Close <span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">span</span><span style="color: #0000FF;">&gt;</span></span>X<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">span</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">a</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p><img src="http://arttu-peka.info/wp-content/uploads/23-07_css_lightbox_youtube.png" alt="video" /><br />
Если вы просмотрите получившуюся работу в браузере, то обнаружите три следующих друг за другом блока, каждый со ссылкой &#8220;Close&#8221; под ним. На этом закончим разметку и приступим к CSS.</p>
<p>Вы, возможно, недоумеваете, как будет выбираться нужный контент. Для этой цели используем CSS3 псевдо-селектор <strong>:target</strong><br />
Он позволяет стилизовать элемент, к которому обращаются по идентификатору фрагмента (# + id элемента). Обращение можно видеть в адресном окне. К примеру: www.yoursite.com/index.html#content<br />
<img src="http://arttu-peka.info/wp-content/uploads/23-08_css_lightbox_fragment_links_rus.png" alt="frag-link" /><br />
Помните, <strong>считается дурным тоном</strong> ставить стили вместе с контентом. И хотя в этом небольшом примере я сделал именно так &#8211; для простоты, ничто не мешает вам вынести стили в отдельный файл.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">html<span style="color: #00AA00;">,</span> body <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span>
body <span style="color: #00AA00;">&#123;</span> overflow-y<span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><strong>На заметку:</strong> Можно спрятать лайтбоксы и с помощью <em>display:none</em>. А мы будем использовать отрицательные поля.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.lightbox</span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #933;">-999em</span><span style="color: #00AA00;">;</span>position<span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.lightbox</span><span style="color: #3333ff;">:target </span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.lightbox</span><span style="color: #3333ff;">:target </span><span style="color: #6666ff;">.close</span> a <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> rgba<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.75</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.close</span> span <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#FFFFFF</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2em</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">text-indent</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0.5em</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0.5em</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.close</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">text-indent</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-999em</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Приведенный выше код заставит лайтбокс занять все окно браузера, через абсолютное позиционирование. В третьей строке, мы подобным методом заставляем закрывающую ссылку занять все, кроме окна лайтбокса и задаем фон (черный, прозрачность &#8211; 0.75). Хотя лайтбокс закрывается от любого клика вне выделенного контента, мы все-же поставим &#8220;Х&#8221; с подписью &#8220;close&#8221; чтобы все сразу догадались.</p>
<p>Ниже вы найдете остатки CSS, которые зададут нужный отступ элементам:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.lightbox</span><span style="color: #3333ff;">:target </span>div <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#FFFFFF</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">50</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">50</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">99</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.w60p</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-<span style="color: #cc66cc;">30</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">60</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span> <span style="color: #6666ff;">.w300</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-150px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span> <span style="color: #6666ff;">.w640</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-320px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">640px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.h60</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">60px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-30px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span> <span style="color: #6666ff;">.h400</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">400px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-200px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span> <span style="color: #6666ff;">.h386</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">386px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-193px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.scroll</span> <span style="color: #00AA00;">&#123;</span> overflow-y<span style="color: #00AA00;">:</span> <span style="color: #993333;">scroll</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">1em</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Заданы различные отступы, для элементов шириной 300px, 640px, и 60%. То же самое для высоты. Обратите внимание на класс <em>scroll</em> &#8211; он дает возможность прокручивать непомещающийся в окне контент.</p>
<p>Если вы владелец <strong>Firefox, Chrome, Safari или Opera</strong>, то код должен работать идеально, с <strong>осликом IE</strong> придется немного повозиться.<br />
Вот как мы будем обходить отсутствие поддержки :target Эксплорером:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">script</span> <span style="color: #000066;">type</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #707070; font-style: italic;">&lt;!--</span>
<span style="color: #707070; font-style: italic;"> 	/*@cc_on @if (@_jscript_version &gt; 5.6)</span>
<span style="color: #707070; font-style: italic;"> 	function bootup(){</span>
<span style="color: #707070; font-style: italic;"> 	var tds = document.getElementsByTagName(&quot;a&quot;); lightbox();</span>
<span style="color: #707070; font-style: italic;"> 	for( var x=0; x &lt; tds.length; x++ ){tds[x].onclick = function(){setTimeout(lightbox, 1);};}</span>
<span style="color: #707070; font-style: italic;"> 	}</span>
<span style="color: #707070; font-style: italic;"> 	function lightbox(){</span>
<span style="color: #707070; font-style: italic;"> 	var counted = document.getElementsByTagName(&quot;div&quot;);</span>
<span style="color: #707070; font-style: italic;"> 	for( var x=0; x &lt; counted.length; x++ ){ if ( counted[x].className == &quot;boxfocus&quot; ) { counted[x].className = &quot;lightbox&quot;; } }</span>
<span style="color: #707070; font-style: italic;"> 	if (location.hash.substr(1) == &quot;&quot;) {} else { document.getElementById(location.hash.substr(1)).className = &quot;boxfocus&quot;; }</span>
<span style="color: #707070; font-style: italic;"> 	}</span>
<span style="color: #707070; font-style: italic;"> 	window.onload=bootup;</span>
<span style="color: #707070; font-style: italic;"> 	@end @*/</span>
<span style="color: #707070; font-style: italic;"> 	// --&gt;</span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">script</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Вставте приведенный код в хедер ниже описания стилей, или подключайте извне. Функция использует условные комменты, чтобы убедится, что мы используем именно IE. Если это подтвердилось, функция <em>bootup</em> мониторит клики по анкору. Когда срабатывает событие, определенные классы добавляются к стилю блока, чей идентификатор (&#8220;#&#8221;) находится во фрагментной ссылке.<br />
Чтобы обойти отсутствие поддержки прозрачности в IE, добавим следующее в стили:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.boxfocus</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.boxfocus</span> div <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#FFFFFF</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">50</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">50</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">99</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.boxfocus</span> <span style="color: #6666ff;">.close</span> a <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'trans.png'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Вероятно вы заметили, что приведенные выше стили почти полностью повторяют те для :target. Появляется желание их сгруппировать, чтобы уменьшить объем кода. Но к сожалению, стандартное поведение браузеров &#8211; удаление непонятного кода (:target непонятен для IE, если помните), так что его надо выносить отдельно.</p>
<p>Следует отметить, что IE 9 наконец будет поддерживать :target, как и многие другие CSS3/HTML5 техники.</p>
<p>Надеюсь этот урок побудит вас использовать CSS3, так как большинство его нововведений уже поддерживается всеми современными браузерами.</p>
<p>P.S. Вольный перевод <a href="http://sixrevisions.com/css/semantic-css3-lightboxes/">этой</a> статьи.</p>
<div style="background:#9ba7c2;border:1px solid gray;padding:5px;font-size:10pt;">
<span style="color:red;">Постовой: </span>Бесплатно скачать <a href='http://svictor.ru/gadzhety-rss'>гаджет RSS</a> для Windows 7</div>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/web-design/lightbox-na-css3-2/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>HTML 5 &#8211; Часть 2. Интерактивный холст</title>
		<link>http://arttu-peka.info/html-5/html-5-chast-2-interaktivnyj-xolst/</link>
		<comments>http://arttu-peka.info/html-5/html-5-chast-2-interaktivnyj-xolst/#comments</comments>
		<pubDate>Fri, 28 May 2010 18:35:55 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=578</guid>
		<description><![CDATA[В первой части я показал, как создать холст, на котором генерируются пузыри случайного размера и цвета. Но у холста (canvas) есть еще одна важна особенность &#8211; возможность обратной связи. Именно это позволяет ему на равных конкурировать с флэшем. Сейчас я покажу улучшенный вариант холста из первого урока, который позволит пользователю создавать пузыри, кликая по холсту. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fhtml-5%2Fhtml-5-chast-2-interaktivnyj-xolst%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fhtml-5%2Fhtml-5-chast-2-interaktivnyj-xolst%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/interactive-canvas.png" alt="html5-interactive" width="500" /></p>
<p><span class="capital-big">В</span> первой части я показал, как создать холст, на котором генерируются пузыри случайного размера и цвета. Но у холста (canvas) есть еще одна важна особенность &#8211; возможность обратной связи. Именно это позволяет ему на равных конкурировать с флэшем. Сейчас я покажу улучшенный вариант холста из первого урока, который позволит пользователю создавать пузыри, кликая по холсту.<span id="more-578"></span></p>
<p>Итак, разметка:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">html</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">head</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">title</span><span style="color: #0000FF;">&gt;</span></span>Интерактивный холст<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">title</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">head</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">body</span> <span style="color: #000066;">onload</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;init()&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">canvas</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;canv&quot;</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;output&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;400&quot;</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;250&quot;</span> <span style="color: #000066;">style</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;width:400px;height:250px;&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;blobs.push(createBlob(event));&quot;</span><span style="color: #0000FF;">&gt;</span></span>
Тут должна была быть HTML5-презентация.
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">canvas</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">table</span> <span style="color: #000066;">style</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;border:1px solid #ccc;&quot;</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">tr</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">style</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;border:1px solid #c0c0c0;&quot;</span> <span style="color: #000066;">align</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;center&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(null);&quot;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">b</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">font</span> <span style="color: #000066;">face</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;arial&quot;</span> <span style="color: #000066;">size</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;-3&quot;</span><span style="color: #0000FF;">&gt;</span></span>RND<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">font</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">b</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">td</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">bgcolor</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#ff0000&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(this);&quot;</span><span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">bgcolor</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#00ff00&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(this);&quot;</span><span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">bgcolor</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#0000ff&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(this);&quot;</span><span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">bgcolor</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#CCFF33&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(this);&quot;</span><span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">bgcolor</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#3366CC&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(this);&quot;</span><span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">bgcolor</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#99ff00&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(this);&quot;</span><span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">td</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">bgcolor</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;#000000&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;setColor(this);&quot;</span><span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">tr</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">table</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Кроме холста мы, как видите, создаем таблицу цветов, чтобы пользователь имел возможность создавать пузыри определенного цвета. Возвратиться к случайной генерации цветов можно кликнув по ячейке <strong>RND</strong>.</p>
<p>После этого, открываем тег &lt;script&gt; и объявляем переменные:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> minBlobs <span style="color: #339933;">=</span> <span style="color: #CC0000;">15</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> initBlobs <span style="color: #339933;">=</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> width <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canv'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">width</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> height <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canv'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> curcolor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> blobs <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> context<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">function</span> Blob<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span>y<span style="color: #339933;">,</span>r<span style="color: #339933;">,</span>vx<span style="color: #339933;">,</span>vy<span style="color: #339933;">,</span>w<span style="color: #339933;">,</span>p<span style="color: #339933;">,</span>c<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//координаты появления</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> y<span style="color: #339933;">;</span> 
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">r</span> <span style="color: #339933;">=</span> r<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//радиус</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">vx</span> <span style="color: #339933;">=</span> vx<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//скорость движения вбок</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">vy</span> <span style="color: #339933;">=</span> vy<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//скорость движения вверх</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">wobble</span> <span style="color: #339933;">=</span> w<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">wperiod</span> <span style="color: #339933;">=</span> p<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">color</span> <span style="color: #339933;">=</span> c<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>wobble</strong> &#8211; это амплитуда раскачки пузыря, пока он поднимается вверх (посмотрите на пузырь газа в стакане минералки; поднимаясь, он никогда не идет по прямой).<br />
<strong>wperiod</strong> &#8211; соответственно период раскачки.</p>
<p>Инициация:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> elt <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canv'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  context <span style="color: #339933;">=</span> elt.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>blobs.<span style="color: #660066;">length</span> <span style="color: #339933;">&lt;</span> initBlobs<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    blobs.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>createBlob<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  setInterval<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;draw();&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">40</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Пока количество пузырей не превысило константу initBlobs, создаем новые. В конце, как и в прошлом примере, забиваем функцию отрисовки холста <strong>draw()</strong> в цикл. Частота вызова функции напрямую определяет скорость анимации.</p>
<p>Рисуем анимацию:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// рисуем фон</span>
	<span style="color: #003366; font-weight: bold;">var</span> g <span style="color: #339933;">=</span> context.<span style="color: #660066;">createLinearGradient</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'#202020'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'#aaa'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	context.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> g<span style="color: #339933;">;</span>
	context.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>width<span style="color: #339933;">,</span>height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> time <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #006600; font-style: italic;">// рендерим пузыри</span>
  <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>blobs.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> blob <span style="color: #339933;">=</span> blobs<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> tf <span style="color: #339933;">=</span> time<span style="color: #339933;">/</span><span style="color: #CC0000;">1000</span><span style="color: #339933;">/</span>blob.<span style="color: #660066;">wperiod</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> wf <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>tf<span style="color: #339933;">-</span>Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>tf<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">2</span><span style="color: #339933;">*</span>Math.<span style="color: #660066;">PI</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> xw <span style="color: #339933;">=</span> blob.<span style="color: #660066;">wobble</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">sin</span><span style="color: #009900;">&#40;</span>wf<span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003366; font-weight: bold;">var</span> rg <span style="color: #339933;">=</span> context.<span style="color: #660066;">createRadialGradient</span><span style="color: #009900;">&#40;</span>
        blob.<span style="color: #660066;">x</span><span style="color: #339933;">+</span>xw<span style="color: #339933;">+</span>blob.<span style="color: #660066;">r</span><span style="color: #339933;">/</span><span style="color: #CC0000;">4</span><span style="color: #339933;">,</span>blob.<span style="color: #660066;">y</span><span style="color: #339933;">-</span>blob.<span style="color: #660066;">r</span><span style="color: #339933;">/</span><span style="color: #CC0000;">4</span><span style="color: #339933;">,</span>blob.<span style="color: #660066;">r</span><span style="color: #339933;">/</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span>
        blob.<span style="color: #660066;">x</span><span style="color: #339933;">+</span>xw<span style="color: #339933;">,</span>blob.<span style="color: #660066;">y</span><span style="color: #339933;">,</span>blob.<span style="color: #660066;">r</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rg.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#fff'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rg.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0.85</span><span style="color: #339933;">,</span> blob.<span style="color: #660066;">color</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rg.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'rgba(0,0,128,0)'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      context.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> rg<span style="color: #339933;">;</span>
      context.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span>blob.<span style="color: #660066;">x</span><span style="color: #339933;">+</span>xw<span style="color: #339933;">-</span>blob.<span style="color: #660066;">r</span><span style="color: #339933;">,</span>blob.<span style="color: #660066;">y</span><span style="color: #339933;">-</span>blob.<span style="color: #660066;">r</span><span style="color: #339933;">,</span>blob.<span style="color: #660066;">r</span><span style="color: #339933;">*</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span>blob.<span style="color: #660066;">r</span><span style="color: #339933;">*</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">// обновляем позицию пузырей</span>
    blob.<span style="color: #660066;">x</span> <span style="color: #339933;">+=</span> blob.<span style="color: #660066;">vx</span><span style="color: #339933;">;</span>
    blob.<span style="color: #660066;">y</span> <span style="color: #339933;">+=</span> blob.<span style="color: #660066;">vy</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>blob.<span style="color: #660066;">x</span> <span style="color: #339933;">&gt;</span> width<span style="color: #339933;">+</span>blob.<span style="color: #660066;">r</span> <span style="color: #339933;">||</span> blob.<span style="color: #660066;">x</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">-</span>blob.<span style="color: #660066;">r</span> <span style="color: #006600; font-style: italic;">//если пузырь ушел за пределы холста, удаляем его из массива</span>
     <span style="color: #339933;">||</span> blob.<span style="color: #660066;">y</span> <span style="color: #339933;">&gt;</span> height<span style="color: #339933;">+</span>blob.<span style="color: #660066;">r</span> <span style="color: #339933;">||</span> blob.<span style="color: #660066;">y</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">-</span>blob.<span style="color: #660066;">r</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">delete</span> blob<span style="color: #339933;">;</span> 
      <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>blobs.<span style="color: #660066;">length</span> <span style="color: #339933;">&lt;=</span> minBlobs<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">//если количество меньше или равно минимуму, создаем еще пузырей</span>
        blobs.<span style="color: #660066;">splice</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> createBlob<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
        blobs.<span style="color: #660066;">splice</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> i<span style="color: #339933;">--;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Обратите внимание на интересное использование функции <strong>CreateRadialGradient</strong>. Мы заполняем круги с помощью функции <strong>fillRect</strong>(x,y,width,height), буквальный перевод &#8211; заполнить прямоугольник. Но так как градиент у нас радиальный (круговой), заполняется именно область круга, создавая эффект псевдотрехмерности.</p>
<p>Создаем пузырь, и обрабатываем клик мышью по холсту:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> createBlob<span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">21</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #CC0000;">10</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> x<span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> y<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event <span style="color: #339933;">==</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    x <span style="color: #339933;">=</span> Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>width<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// если пузырь создан не пользователем - нет координат клика - генерируем их</span>
    y <span style="color: #339933;">=</span> height<span style="color: #339933;">+</span>r<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    x <span style="color: #339933;">=</span> event.<span style="color: #660066;">clientX</span><span style="color: #339933;">;</span>
    y <span style="color: #339933;">=</span> event.<span style="color: #660066;">clientY</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #003366; font-weight: bold;">var</span> vx <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">21</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #CC0000;">10</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// от -1 до 1</span>
  <span style="color: #003366; font-weight: bold;">var</span> vy <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">15</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #CC0000;">3.0</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// от -.3 до -5</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>curcolor <span style="color: #339933;">==</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// случайный цвет</span>
    <span style="color: #003366; font-weight: bold;">var</span> clr <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;rgba(&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>j <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> j <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003366; font-weight: bold;">var</span> v <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">256</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// 0-255;</span>
      clr <span style="color: #339933;">+=</span> v <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;,&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    clr <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;1.0)&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    clr <span style="color: #339933;">=</span> curcolor<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #003366; font-weight: bold;">var</span> wob <span style="color: #339933;">=</span> Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">2</span><span style="color: #339933;">+</span><span style="color: #CC0000;">5</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// амплитуда 0.1-2.1</span>
  <span style="color: #003366; font-weight: bold;">var</span> wp <span style="color: #339933;">=</span> Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>wob<span style="color: #339933;">+</span><span style="color: #CC0000;">0.5</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// wobble period 0.5-2.1 sec</span>
  <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">new</span> Blob<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #339933;">,</span> r<span style="color: #339933;">,</span> vx<span style="color: #339933;">,</span> vy<span style="color: #339933;">,</span> wob<span style="color: #339933;">,</span> wp<span style="color: #339933;">,</span> clr<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Тут, думаю, все понятно. Если цвет не определен юзером, создаем случайный, если не определены коррдинаты, генерируем опять-же случайные.</p>
<p>Определяем цвет:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> setColor<span style="color: #009900;">&#40;</span>elt<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>elt <span style="color: #339933;">==</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    curcolor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    curcolor <span style="color: #339933;">=</span> elt.<span style="color: #660066;">bgColor</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Закрываем теги разметки:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">script</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">body</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">html</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Вот и все. Если хотите включить пример на свою страницу, рекомендую подключать этот код из отдельного html-файла через фрейм, при прямом включении в тело страницы мною наблюдались различные баги. Живой пример смотрите <a href="http://www.recon-by-fire.eu/html5.php">здесь</a> (кликаем по пункту <strong>Interactive canvas</strong>).<br />
P.S. Скелет кода взят опять-же у <a href="http://3.paulhamill.com">этого</a> человека.</p>
<p>Остальные уроки:<br />
<a href="http://arttu-peka.info/html-5/html-5-animirovannyj-xolst/" style="color:#3399FF">HTML 5 &#8211; Часть 1. Анимированный холст</a></p>
<div style="background:#9ba7c2;border:1px solid gray;padding:5px;font-size:10pt;">
<span style="color:red;">Постовой: </span>Читайте у Свободного Человека про <a href="http://www.neosaitehomebiz.ru/satellit">нестандартный взгляд на сателлиты</a> и чем их можно заменить</div>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/html-5/html-5-chast-2-interaktivnyj-xolst/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>HTML 5 &#8211; Часть 1. Анимированный холст</title>
		<link>http://arttu-peka.info/html-5/html-5-animirovannyj-xolst/</link>
		<comments>http://arttu-peka.info/html-5/html-5-animirovannyj-xolst/#comments</comments>
		<pubDate>Sun, 23 May 2010 14:46:42 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=556</guid>
		<description><![CDATA[Думаю, каждый из вас уже играл или хотя-бы видел интерактивного &#8220;пакмана&#8221; на главной странице Google. И хотя эта игра сделана безо всякого холста, именно она меня побудила обратить свой взгляд на HTML 5, чтобы узнать, как можно создать динамичные изображения на странице безо всякого флэша. Для начала немного теории. Холст (Canvas) &#8211; это элемент HTML [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fhtml-5%2Fhtml-5-animirovannyj-xolst%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fhtml-5%2Fhtml-5-animirovannyj-xolst%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/html5logo1.png" width="400" height="100" alt="logo" style="margin-left:70px;" /></p>
<p><span class="capital-big">Д</span>умаю, каждый из вас уже играл или хотя-бы видел интерактивного &#8220;пакмана&#8221; на главной странице Google. И хотя эта игра сделана безо всякого холста, именно она меня побудила обратить свой взгляд на HTML 5, чтобы узнать, как можно создать динамичные изображения на странице безо всякого флэша.<span id="more-556"></span></p>
<p>Для начала немного теории. Холст (Canvas) &#8211; это элемент HTML 5, в котором можно выводить и генерировать изображения. Генерация изображений производится с помощью <strong>Javascript</strong>, и все работает в любом современном браузере. </p>
<p>В качестве относительно простого примера сгенерируем анимацию на градиентном фоне. Чтобы это отличалось от простой анимированной гифки (.gif), генерироваться будут круги произвольного размера и цвета, которые будут двигаться  с произвольной скоростью. Направление движения, в зависимости от вектора скорости &#8211; вверх или вниз.</p>
<p>Итак:</p>
<p>Намечаем холст в HTML:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">canvas</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;canv&quot;</span> <span style="color: #000066;">width</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;400&quot;</span> <span style="color: #000066;">height</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;250&quot;</span> <span style="color: #000066;">style</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;width:400px;height:250px;margin:0 0 20px 230px;&quot;</span><span style="color: #0000FF;">&gt;</span></span>HTML 5 Canvas presentation was meant to be here.<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">canvas</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">script</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Как видите, я так-же открыл тег <strong>script</strong>, так как<br />
дальнейшие действия будут в Javascript.</p>
<p>Инициируем переменные:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> width <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canv'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">width</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> height <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canv'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> init<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> context<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> g<span style="color: #339933;">;</span> 
<span style="color: #003366; font-weight: bold;">function</span> <span style="color: #000066; font-weight: bold;">Item</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span>y<span style="color: #339933;">,</span>r<span style="color: #339933;">,</span>speed<span style="color: #339933;">,</span>c<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> y<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">r</span> <span style="color: #339933;">=</span> r<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">speed</span> <span style="color: #339933;">=</span> speed<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">c</span> <span style="color: #339933;">=</span> c<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">var</span> items <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Функция Item &#8211; нужна для эмуляции многомерных массивов. Ведь у каждого элемента (круга) есть свои параметры (координаты возникновения, диаметр, скорость, цвет). </p>
<p>Инициируем холст:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> initiate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
init <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canv'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
context <span style="color: #339933;">=</span> init.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    x <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>width<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    y <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>height<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    r <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// 1-30;</span>
    speed <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//скорость нулевой быть не может:</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>speed <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> speed <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//генерируем цвета</span>
	c <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;rgba(&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>j <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> j <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      v <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">256</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
      c <span style="color: #339933;">+=</span> v <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;,&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    c <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;0.7)&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//записываем элемент в массив</span>
    it <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">Item</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #339933;">,</span> r<span style="color: #339933;">,</span> speed<span style="color: #339933;">,</span> c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    items.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>it<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
setInterval<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;draw();&quot;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>С математическими формулами, думаю все понятно. Функция <strong>rgba</strong> генерирует цвет, первые три аргумента &#8211; это числа (0-256), а четвертый регулирует альфа-канал (прозрачность) и принимает значения от 0 до 1. Первые три  заполняем случайными значениями, а четвертый у нас равен 0.7 всегда. Если хотите, генерируйте его случайно, по аналогии.</p>
<p>Переходим к функции draw(), которую мы циклично вызываем через setInterval():</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//задник</span>
g <span style="color: #339933;">=</span> context.<span style="color: #660066;">createLinearGradient</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
g.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'#202020'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
g.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'#aaa'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
context.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> g<span style="color: #339933;">;</span>
context.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>width<span style="color: #339933;">,</span>height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #000066; font-weight: bold;">in</span> items<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    context.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">c</span><span style="color: #339933;">;</span>
    context.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    context.<span style="color: #660066;">arc</span><span style="color: #009900;">&#40;</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #339933;">,</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">r</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>Math.<span style="color: #660066;">PI</span><span style="color: #339933;">*</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    context.<span style="color: #660066;">fill</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #339933;">+</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">speed</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//задаем движение</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #339933;">&gt;</span>height<span style="color: #339933;">+</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">r</span><span style="color: #009900;">&#41;</span> items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">r</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//круг бесконечно движется по прямой, как только заходит за верхнюю грань, появляется снизу</span>
    <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #339933;">&lt;-</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">r</span><span style="color: #009900;">&#41;</span> items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> height<span style="color: #339933;">+</span>items<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">r</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ну вот все на этот раз. Живой пример смотрите <a href="http://www.recon-by-fire.eu/portfolio.php">здесь</a>. В качестве домашнего задания можете посмотреть, как в примере реализована перезагрузка холста по нажанию кнопки &#8220;reset&#8221;, без перезагрузки всей страницы.</p>
<p>P.S. Скелет кода взят у <a href="http://3.paulhamill.com/node">этого</a> человека.</p>
<p>Остальные уроки:<br />
<a href="http://arttu-peka.info/html-5/html-5-chast-2-interaktivnyj-xolst/" style="color:#3399FF">HTML 5 &#8211; Часть 2. Интерактивный холст.</a></p>
<div style="background:#9ba7c2;border:1px solid gray;padding:5px;font-size:10pt;">
<span style="color:red;">Постовой: </span><a href="http://www.mango-city.by/">Разработка и программирование web сайтов</a></div>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/html-5/html-5-animirovannyj-xolst/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Clear&amp;Simple. Моя WordPress тема</title>
		<link>http://arttu-peka.info/wordpress/clearsimple-moya-wordpress-tema/</link>
		<comments>http://arttu-peka.info/wordpress/clearsimple-moya-wordpress-tema/#comments</comments>
		<pubDate>Mon, 10 May 2010 22:42:53 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[wordpress тема]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=507</guid>
		<description><![CDATA[Тема доросла до версии 1.0, скачать можно здесь Пару дней назад решил создать свою собственную WP-тему с нуля. Так как это мой первый опыт в этом, вышло немного хлопотно &#8211; в основном со всеми этими флоатами (float). Части шаблона разъезжались, как дерьмо по лопате, и приходилось затыкать это дело обнуляющими блоками (clear:both). Итак, я все-таки [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fwordpress%2Fclearsimple-moya-wordpress-tema%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fwordpress%2Fclearsimple-moya-wordpress-tema%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/0007271854F-1280x1024.jpg" alt="img" width="400" height="300" /><br />
<span style="color:red; font-size:14pt;">Тема доросла до версии 1.0, скачать можно <a href="http://depositfiles.com/files/pewx6jjj6">здесь<br />
</a></span></p>
<p><span class="capital-big">П</span>ару дней назад решил создать свою собственную WP-тему с нуля. Так как это мой первый опыт в этом, вышло немного хлопотно &#8211; в основном со всеми этими флоатами (float). Части шаблона разъезжались, как дерьмо по лопате, и приходилось затыкать это дело обнуляющими блоками (clear:both). Итак, я все-таки закончил. Отчет и описание темы &#8211; под катом.<span id="more-507"></span></p>
<p>Сразу после решения делать тему возникла мысль, что делать что-то сложное, с эффектами и гламурным интерфейсом просто глупо, пока я не сделал простой, минималистичной темы. Так родилась концепция: минимализм во всем и вся. Скриншот:<br />
<a href="http://arttu-peka.info/wp-content/uploads/theme_scrshot.png" rel="lightbox[507]"><img src="http://arttu-peka.info/wp-content/uploads/theme_scrshot-150x150.png" alt="" title="theme_scrshot" width="150" height="150" class="alignnone size-thumbnail wp-image-553" /></a></p>
<p>Описание &#8211; достоинства и недостатки:<br />
<span style="color:green;font-weight:bold;">(+)</span> Не содержит ни единой строчки javascript, будет работать если он отключен/не поддерживается (в то же время содержит css2-эффекты)<br />
<span style="color:green;font-weight:bold;">(+)</span> Предельно легковесна за счет минимализма<br />
<span style="color:green;font-weight:bold;">(+)</span> Поддерживает виджеты в сайдбаре<br />
<span style="color:red;font-weight:bold;">(-)</span> Не работает под так называемым браузером IE 7 (в данной версии отдельный файл стилей под него отсутствует)</p>
<p>Скачать ее можно <a href="http://depositfiles.com/files/pewx6jjj6">тут</a>. Все валидно. Нужна русская версия &#8211; отпишитесь в комментах, сделаю за полчаса.</p>
<div style="background:#9ba7c2;border:1px solid gray;padding:5px;font-size:10pt;">
<span style="color:red; ">Постовой: </span><a href= "http://blogwork.ru/">http://blogwork.ru/</a> &#8211; блог о заработке</div>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/wordpress/clearsimple-moya-wordpress-tema/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>Русская блогосфера. Особое мнение</title>
		<link>http://arttu-peka.info/offtopic/russkaya-blogosfera-osoboe-mnenie/</link>
		<comments>http://arttu-peka.info/offtopic/russkaya-blogosfera-osoboe-mnenie/#comments</comments>
		<pubDate>Sat, 01 May 2010 14:34:27 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[Offtopic]]></category>
		<category><![CDATA[русская блогосфера]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=465</guid>
		<description><![CDATA[Разбавлю тематический блог небольшим оффтопом. Школьникам-сеошникам до 16 лет и владельцам ГС к прочтению не рекомендуется. К созданию своего standalone-блога я созрел недавно &#8211; 3 месяца назад, в феврале 2010 года. Цель &#8211; сборник практических советов по программированию, верстке и смежным темам. Естественно, с последующей монетизацией &#8211; каждый труд должен оплачиваться. Само собой, так как [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fofftopic%2Frusskaya-blogosfera-osoboe-mnenie%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fofftopic%2Frusskaya-blogosfera-osoboe-mnenie%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Разбавлю тематический блог небольшим оффтопом. Школьникам-сеошникам до 16 лет и владельцам ГС к прочтению не рекомендуется.<span id="more-465"></span><br />
К созданию своего standalone-блога я созрел недавно &#8211; 3 месяца назад, в феврале 2010 года. Цель &#8211; сборник практических советов по программированию, верстке и смежным темам. Естественно, с последующей монетизацией &#8211; каждый труд должен оплачиваться. Само собой, так как человек в сети я не сильно известный, пришлось заниматься раскруткой. В ходе которой пришлось окунутся в русскую блогосферу &#8211; бессмысленную и беспощадную.</p>
<p>Начнем с того, что у меня не совсем стандартное восприятие интернета. Для меня это в первую очередь кладезь знаний и связь,<br />
потом самовыражение и поиск интересных людей, ну и потом все остальное. Флуд и флейм на форумах, набивание репутации и счетчика сообщений, а так-же массовая рассылка инвайтов в социальных сетях &#8211; это не про меня. Так что для меня задача несколько осложнялась. </p>
<p>Проблема в том, что в сети очень много хлама. На всех этих вебмастерских форумах на одно полезное сообщение приходится с десяток шлаковых. Нужда постоянно фильтровать информацию очень сильно утомляет. То же самое с блогами. Редкий блоггер умеет правильно подавать информацию, больше полагаясь на всякие замыленные клише, типа якобы оптимальной длины постов, обязательные видео после поста и т.д. Нет, идея, что юзера, которого не привлек топик, привлечет видео, не лишена логики, но<br />
реально интересные видео я наблюдал только у <strong>Шакина</strong>. Находить каждый раз интересное видео &#8211; это вам не два байта по локалке переслать. Да и в тематическом блоге это ютубовское окно, имхо, только мешает.<br />
Другое интересное поверье &#8211; что если ты не профессиональный дизайнер, лучше ставить чужую тему. И чем она более яркая и нагруженная элементами &#8211; тем лучше. И главное &#8211; не забыть потереть копирайты. Да, я тоже начинал с чужой темы. Но я сразу же переделал некоторые элементы под себя. Моих тогдашних базовых знаний CSS хватило на это с лихвой. Да, дизайн получился не идеальным &#8211; даже сейчас у меня есть идеи по его улучшению &#8211; но я прошел этот путь от модифицированной чужой темы к своей, получив опыт. Да и, как показывает практика, всегда найдутся клоуны, которые будут поливать его гавном из спортивного интереса.</p>
<p>Контент &#8211; пожалуй, самое уязвимое место. По теме того же СЕО (по которой как минимум половина русскоязычных блогов) сложно регулярно придумывать что-то новое. И тем ни менее, люди пытаются, высунув языки, рерайтят топовых блоггеров, крадут контент, вешают разноцветные кнопки добавления в соцзакладки, покупают комментарии и флудят на форумах. И главное &#8211; рекламные статьи, которые отлично вписываются в контент. </p>
<p>У меня обновления довольно редкие, для начинающего блоггера. Раз в 3-4 дня. Но &#8211; статьи до последней точки мои, код тоже мой, иначе &#8211; ссылаюсь на автора. Считаю это оправдвнием для высокомерия по отношению ко всяким зарвавшимся школьникам и задротам, которым умения и знания заменяет наглость.</p>
<p>В итоге остается констатировать &#8211; с распространением интернета, наплыва прыщавых подростков и быдла, делать что-то самому, соблюдать нормы общения &#8211; стало &#8220;не круто&#8221;. Исключение &#8211;  полузакрытые сообщества типа Хабра и остальные форумы и блоги &#8220;по инвайтам&#8221;.<br />
P.S. И да, люблю иногда пройтись свежим взягядом по старым статьям, делая косметические изменения <img src='http://arttu-peka.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Если что &#8211; не удивляйтесь.</p>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/offtopic/russkaya-blogosfera-osoboe-mnenie/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Улучшаем блог с помощью jQuery</title>
		<link>http://arttu-peka.info/jquery/uluchshaem-blog-s-pomoshhyu-jquery/</link>
		<comments>http://arttu-peka.info/jquery/uluchshaem-blog-s-pomoshhyu-jquery/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 14:23:58 +0000</pubDate>
		<dc:creator>Nordvind</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://arttu-peka.info/?p=432</guid>
		<description><![CDATA[Считайте это третьей частью &#8220;симбиоза jQuery и WordPress&#8221;. Многие бесплатные WP-темы бедны на эффекты. Я поддерживаю минимализм, но считаю, что проходить мимо некоторых приятных глазу эффектов просто глупо. Для начала обратите взгляд на форму комментариев. Хотите, чтобы при фокусировке на поле ввода текст расстворялся, а при расфокусировке появлялся снова, если пользователь ничего не ввел (как [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Farttu-peka.info%2Fjquery%2Fuluchshaem-blog-s-pomoshhyu-jquery%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Farttu-peka.info%2Fjquery%2Fuluchshaem-blog-s-pomoshhyu-jquery%2F&amp;source=nordvind&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://arttu-peka.info/wp-content/uploads/0007405151S-1280x1024.jpg" alt="inject" width="500" height="300"/></p>
<p>Считайте это третьей частью &#8220;симбиоза jQuery и WordPress&#8221;.<br />
Многие бесплатные WP-темы бедны на эффекты. Я поддерживаю минимализм, но считаю, что проходить мимо некоторых приятных глазу эффектов просто глупо.<span id="more-432"></span></p>
<p>Для начала обратите взгляд на форму комментариев. Хотите, чтобы при фокусировке на поле ввода текст расстворялся, а при расфокусировке появлялся снова, если пользователь ничего не ввел (как на Grabr.ru, к примеру)? Это не так и сложно. Потребуется только подключенная к блогу jQuery (как это сделать, читайте <a href="http://arttu-peka.info/wordpress/jquery-and-wordpress-symbiosis-2/">здесь</a>)</p>
<p>Сначала html-каркас:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;input-wrapper&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">input</span> <span style="color: #000066;">type</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;author&quot;</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;author&quot;</span> <span style="color: #000066;">value</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">size</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;22&quot;</span> <span style="color: #000066;">tabindex</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">label</span><span style="color: #0000FF;">&gt;</span></span>Name<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">label</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;input-wrapper&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">input</span> <span style="color: #000066;">type</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;email&quot;</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;email&quot;</span> <span style="color: #000066;">value</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">size</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;22&quot;</span> <span style="color: #000066;">tabindex</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">label</span><span style="color: #0000FF;">&gt;</span></span>E-mail<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">label</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">div</span> <span style="color: #000066;">class</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;input-wrapper&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #0000FF;">input</span> <span style="color: #000066;">type</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;url&quot;</span> <span style="color: #000066;">id</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;url&quot;</span> <span style="color: #000066;">value</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">size</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;22&quot;</span> <span style="color: #000066;">tabindex</span><span style="color: #0000FF;">=</span><span style="color: #ff0000;">&quot;3&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;</span><span style="color: #0000FF;">label</span><span style="color: #0000FF;">&gt;</span></span>Your personal website<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">label</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #0000FF;">p</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000FF;">&lt;/</span><span style="color: #0000FF;">div</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Стили CSS:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">.input-wrapper<span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
label<span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#939393</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Блок с отностительным (relative) позиционированием, обрамляющий поле ввода, нужен, чтобы текст надписи (label) не убегал наверх. Ну, и наконец jQuery-код:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'label'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeOut</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fast'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'label'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slow'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;label&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prev</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'input'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeOut</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fast'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ну, и немного CSS на десерт. Закругляем углы у полей и текстовой области (textarea):</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">input <span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span> textarea<span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #993333;">gray</span>!important<span style="color: #00AA00;">;</span>
-moz-border-radius<span style="color: #00AA00;">:</span><span style="color: #933;">3px</span><span style="color: #00AA00;">;</span>
-webkit-border-radius<span style="color: #00AA00;">:</span><span style="color: #933;">3px</span><span style="color: #00AA00;">;</span>
border-radius<span style="color: #00AA00;">:</span><span style="color: #933;">3px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">,</span> textarea<span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#808080</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>IE, конечно (даже восьмой) с углами идет лесом. Вас это удивляет?</p>
<div style="background:#9ba7c2;border:1px solid gray;padding:5px;font-size:10pt;">
<span style="color:red; ">Постовой: </span><a href="http://mega-obzor.ru/">Свежий Взгляд</a> &#8211; взгляд на блоггинг по новому!</div>
]]></content:encoded>
			<wfw:commentRss>http://arttu-peka.info/jquery/uluchshaem-blog-s-pomoshhyu-jquery/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>
