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

<channel>
	<title>Антон Шевчук &#187; HTML and CSS</title>
	<atom:link href="http://anton.shevchuk.name/category/html-and-css/feed/" rel="self" type="application/rss+xml" />
	<link>http://anton.shevchuk.name</link>
	<description>Web-разработчик</description>
	<lastBuildDate>Wed, 01 Feb 2012 12:54:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Мастер-класс Юры Артюха</title>
		<link>http://anton.shevchuk.name/html-and-css/master-klass-yuriy-akella-artyukh/</link>
		<comments>http://anton.shevchuk.name/html-and-css/master-klass-yuriy-akella-artyukh/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 11:51:59 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[announcement]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/?p=1972</guid>
		<description><![CDATA[8-го октября (в Киеве) и 15-го октября (в Харькове) пройдет мастер-класс Юры Артюха &#171;Современные подходы в вёрстке 2&#187; Юрий Артюх — специалист по верстке с многолетним стажем. Принимал участие в разработке нескольких сотен проектов среди которых такие как kremlin.ru, groupon.ru, subscribe.ru, sports.ru, ukr.net, zn.ua, delo.ua, pravda.com.ua. Мастер-класс может быть интересен и полезен всем, кто работает [...]]]></description>
			<content:encoded><![CDATA[<p><strong>8-го октября (в Киеве)</strong> и <strong>15-го октября (в Харькове)</strong> пройдет мастер-класс Юры Артюха &laquo;<strong>Современные подходы в вёрстке 2</strong>&raquo;</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2011/10/yuriy-akella-artyukh.jpg" alt="" title="Юрий Артюх" width="285" height="200" class="aligncenter size-full wp-image-1975" /></p>
<p><strong>Юрий Артюх</strong> — специалист по верстке с многолетним стажем. Принимал участие в разработке нескольких сотен проектов среди которых такие как <a href="http://kremlin.ru" target="_blank">kremlin.ru</a>, <a href="http://groupon.ru" target="_blank">groupon.ru</a>, <a href="http://subscribe.ru" target="_blank">subscribe.ru</a>, <a href="http://sports.ru" target="_blank">sports.ru</a>, <a href="http://ukr.net" target="_blank">ukr.net</a>, <a href="http://zn.ua" target="_blank">zn.ua</a>, <a href="http://delo.ua" target="_blank">delo.ua</a>, <a href="http://pravda.com.ua" target="_blank">pravda.com.ua</a>.</p>
<p><span id="more-1972"></span><br />
Мастер-класс может быть интересен и полезен всем, кто работает с фронт-эндом.</p>
<p>Уже более 7 лет Юрий ведет популярный блог посвященный проблемам верстки <a href="http://cssing.org.ua" target="_blank">CSSing.org.ua</a>. Также является активным участником сообщества русского крыла веб-стандартистов, и организатором первой украинской конференции веб-разработчиков UA WEB.</p>
<p>В конце мастер-класса у нас будет возможность задать любые вопросы.</p>
<p>После занятий самые стойкие смогут продолжить общение в пабе.</p>
<p>Дополнительная информация и <a href="http://www.smartme.com.ua/master-klassy-o-verstke-v-xarkove-i-kieve/" target="_blank">подробный план мастер-класса можна посмотреть на сайте</p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/php/zend-framework-day/" title="Zend Framework Day">Zend Framework Day</a></li><li><a href="http://anton.shevchuk.name/internet/sphinx-master-class/" title="Мастер-класс по Sphinx">Мастер-класс по Sphinx</a></li><li><a href="http://anton.shevchuk.name/php/zfconf-2011-piter/" title="Конференция ZFConf 2011">Конференция ZFConf 2011</a></li><li><a href="http://anton.shevchuk.name/php/zfconf-ukraine/" title="ZFConf Ukraine">ZFConf Ukraine</a></li><li><a href="http://anton.shevchuk.name/javascript/javascript-master-class-feedback/" title="Анонс мастер-классов по JavaScript&#8217;у">Анонс мастер-классов по JavaScript&#8217;у</a></li><li><a href="http://anton.shevchuk.name/javascript/javascript-master-class/" title="Мастер-классы по JavaScript&#8217;у">Мастер-классы по JavaScript&#8217;у</a></li><li><a href="http://anton.shevchuk.name/internet/pdfeed-rss-to-pdf-generator/" title="PDFEED &#8211; или RSS2PDF в новом обличье">PDFEED &#8211; или RSS2PDF в новом обличье</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/html-and-css/master-klass-yuriy-akella-artyukh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Сжимаем JavaScript и CSS файлы</title>
		<link>http://anton.shevchuk.name/javascript/pack-javascript-and-css/</link>
		<comments>http://anton.shevchuk.name/javascript/pack-javascript-and-css/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 10:08:03 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/?p=1172</guid>
		<description><![CDATA[Один из этапов клиентской оптимизации &#8211; сжатие и объединение JavaScript и CSS файлов. Для этой цели лучше всего использовать YUI compressor, а чтобы этот процесс не занимал много времени я написал простенький bash скрипт: Запускаем скрипт и ждем окончания выполнения &#8211; вуаля &#8211; у нас один сжатый скрипт, использование которого облегчает жизнь серверу&#8230; Для CSS [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://anton.shevchuk.name/wp-content/uploads/2010/02/tips_and_tricks.png" alt="" title="Заметки на полях" width="200" height="200" class="aligncenter size-full wp-image-1164" /><br />
Один из этапов клиентской оптимизации &#8211; сжатие и объединение JavaScript и CSS файлов.<br />
<span id="more-1172"></span><br />
Для этой цели лучше всего использовать <a href="http://developer.yahoo.com/yui/compressor/">YUI compressor</a>, а чтобы этот процесс не занимал много времени я написал простенький bash скрипт:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
# Javascript source
SRC=&quot;./src/&quot;
RES=&quot;./project.min.js&quot;

# declare script array
ARRAY=( 'jquery' 'jquery-ui' 'jquery.tooltip' 'jquery.colorbox')
# get number of elements in the array
ELEMENTS=${#ARRAY[@]}

rm $RES

# echo each element in array
# for loop
for (( i=0;i&lt;$ELEMENTS;i++)); do
    echo &quot;Compress file '${ARRAY[${i}]}'&quot;
    echo &quot;/*${ARRAY[${i}]}*/&quot; &gt;&gt; $RES
    java -jar yuicompressor-2.4.2.jar --charset utf-8 $SRC${ARRAY[${i}]}.js &gt;&gt; $RES
done
</pre>
<p>Запускаем скрипт и ждем окончания выполнения &#8211; вуаля &#8211; у нас один сжатый скрипт, использование которого облегчает жизнь серверу&#8230;</p>
<p>Для CSS написан аналогичный скрипт, лишь разница в путях, можно и объединить скрипты в один, но меняя JS пережимать еще и CSS не хочется&#8230;</p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/javascript/ger-real-image-size-with-jquery/" title="Получение реального размера картинки при помощи jQuery">Получение реального размера картинки при помощи jQuery</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/javascript/pack-javascript-and-css/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>CSS для начинающих. CSS кнопки это просто</title>
		<link>http://anton.shevchuk.name/html-and-css/css-for-beginners-simple-css-buttons/</link>
		<comments>http://anton.shevchuk.name/html-and-css/css-for-beginners-simple-css-buttons/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 09:25:09 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/?p=1059</guid>
		<description><![CDATA[Решил я начать новую серию статей &#8211; &#8220;CSS для начинающих&#8221;, надеюсь, будет полезно многим. Первый урок будет посвящен кнопкам&#8230; Рисуем кнопку Для начала нам необходимо нарисовать кнопку, вроде этой: Для этого лучше всего нам подойдет инструмент &#8220;Rounded Rectangle Tool&#8221; в Photoshop, с него и начнем &#8211; нарисуем нечто вроде: Изменяя параметр Radius вы сможете задать [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://anton.shevchuk.name/html-and-css/css-for-beginners-simple-css-buttons/"><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/article.png" alt="CSS Buttons Article" title="CSS Buttons Article" width="440" height="168" class="aligncenter size-full wp-image-1074" /></a></p>
<p>Решил я начать новую серию статей &#8211; &#8220;CSS для начинающих&#8221;, надеюсь, будет полезно многим. Первый урок будет посвящен кнопкам&#8230;<br />
<span id="more-1059"></span></p>
<h3>Рисуем кнопку</h3>
<p>Для начала нам необходимо нарисовать кнопку, вроде этой:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-preresult.png" alt="CSS Button Preview" title="CSS Button Preview" width="320" height="52" class="aligncenter size-full wp-image-1062" /></p>
<p>Для этого лучше всего нам подойдет инструмент &#8220;Rounded Rectangle Tool&#8221; в Photoshop, с него и начнем &#8211; нарисуем нечто вроде:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-step-0.png" alt="Button in Photoshop - Step 0" title="Button in Photoshop - Step 0" width="320" height="52" class="aligncenter size-full wp-image-1064" /></p>
<p>Изменяя параметр Radius вы сможете задать желаемое загругление кнопок ( в примере для наглядности контент полностью прозрачный (&#8220;Fill Opacity&#8221; => 0%)):</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-step-1.png" alt="Button in Photoshop - Step 1" title="Button in Photoshop - Step 1" width="520" height="180" class="aligncenter size-full wp-image-1071" /></p>
<p>Ширина объекта в данном примере 320px &#8211; т.е. я предполагаю, что кнопок большего размера не будет.</p>
<p>Границу выводим с помощью &#8220;Stroke&#8221; (из &#8220;Blending Options&#8221;), тип &#8211; градиент &#8211; от #000000 до #676767:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-step-2.png" alt="Button in Photoshop - Step 2" title="Button in Photoshop - Step 2" width="600" height="441" class="aligncenter size-full wp-image-1066" /></p>
<p>Теперь не мешало бы и залить кнопочку градиентом (сверху указан параметр opacity, внизу цвет; инструмент &#8220;Gradient Overlay&#8221; из &#8220;Blending Options&#8221;):</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-step-4.png" alt="Button in Photoshop - Step 4" title="Button in Photoshop - Step 4" width="431" height="490" class="aligncenter size-full wp-image-1068" /></p>
<p>Результат:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-step-3.png" alt="Button in Photoshop - Step 3" title="Button in Photoshop - Step 3" width="320" height="52" class="aligncenter size-full wp-image-1067" /></p>
<p>Результат с залитой границей:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-result.png" alt="CSS Button Photoshop Result" title="CSS Button Photoshop Result" width="320" height="52" class="aligncenter size-full wp-image-1063" /></p>
<p>Если мы сделаем цветной фон:</p>
<div class="aligncenter" style="background:#f33;width:320px;">
<img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-result.png" alt="CSS Button Photoshop Result" title="CSS Button Photoshop Result" width="320" height="52" class="aligncenter size-full wp-image-1063" />
</div>
<div class="aligncenter" style="background:#3f3;width:320px;">
<img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-result.png" alt="CSS Button Photoshop Result" title="CSS Button Photoshop Result" width="320" height="52" class="aligncenter size-full wp-image-1063" />
</div>
<div class="aligncenter" style="background:#33f;width:320px;">
<img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-ps-result.png" alt="CSS Button Photoshop Result" title="CSS Button Photoshop Result" width="320" height="52" class="aligncenter size-full wp-image-1063" />
</div>
<p>Ну вот &#8211; кнопочка и готова, приступим к следующему шагу&#8230;</p>
<h3>Простая CSS кнопка</h3>
<p>Самый простой вариант &#8211; у нас все кнопки одного размера и одного/двух цветов, соответственно готовим небольшой &#8220;<a href="http://en.wikipedia.org/wiki/Sprite_(computer_graphics)">спрайт</a>&#8221; на все случаи жизни (простым копированием слоя с кнопкой):</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-sprite.png" alt="CSS Buttons Sprite" title="CSS Buttons Sprite" width="320" height="700" class="aligncenter size-full wp-image-1072" /></p>
<p>Теперь нам остается лишь слегка подправить CSS для таких кнопок:</p>
<pre class="brush: css; title: ; notranslate">
.button {
    cursor:pointer;
    display:block;
    height:70px;
    width:320px;
    line-height:70px;
    text-align:center;
    background-image:url('images/buttons.png');
    background-repeat:no-repeat;
}
.button.green { background-position:0 0 } /* зеленая кнопка */
.button.green:hover { background-position:0 -350px } /* активная зеленая кнопка */
/* и т.д. */
</pre>
<p>Сам HTML код элементарен:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a href=&quot;#&quot; title=&quot;Label&quot; class=&quot;button green&quot;&gt;Label&lt;/a&gt;
&lt;a href=&quot;#&quot; title=&quot;Label&quot; class=&quot;button white&quot;&gt;Label&lt;/a&gt;
&lt;a href=&quot;#&quot; title=&quot;Label&quot; class=&quot;button black&quot;&gt;Label&lt;/a&gt;
&lt;a href=&quot;#&quot; title=&quot;Label&quot; class=&quot;button orange&quot;&gt;Label&lt;/a&gt;
&lt;a href=&quot;#&quot; title=&quot;Label&quot; class=&quot;button red&quot;&gt;Label&lt;/a&gt;
</pre>
<p>Результат предсказуем:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-sprite-result.png" alt="CSS Button Sprite Result" title="CSS Button Sprite Result" width="317" height="358" class="aligncenter size-full wp-image-1070" /></p>
<h3>Резиновая CSS кнопка</h3>
<p>Теперь усложним задачу &#8211; мы не имеем представления какого цвета будут кнопки, и какого размера, мы лишь предполагаем, что кнопки не будут больше 320px в ширину.</p>
<h4>Строим DOM</h4>
<p>Каждая кнопка будет представлять из себя элемент &lt;a&gt;, обернутый в &lt;li&gt;. Элемент &lt;em&gt; нам так же понадобится для создания резиновых кнопок, чтобы внести ясность приведу следующий скрин:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-html.png" alt="HTML Button" title="HTML Button" width="466" height="177" class="aligncenter size-full wp-image-1061" /></p>
<p>Ну и сам HTML код:</p>
<pre class="brush: xml; title: ; notranslate">
    &lt;ul class=&quot;small&quot;&gt;
        &lt;li class=&quot;button&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Label&quot;&gt;Label&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li class=&quot;button green&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Label&quot;&gt;Label&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li class=&quot;button white&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Label&quot;&gt;Label&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li class=&quot;button black&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Label&quot;&gt;Label&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li class=&quot;button orange&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Label&quot;&gt;Label&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li class=&quot;button red&quot;&gt;&lt;a href=&quot;#&quot; title=&quot;Label&quot;&gt;Label&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
</pre>
<blockquote><p>Примечание: можно использовать практически любые другие HTML теги, это дело вкуса, так что таким же образом вы можете изменить и элементы формы. Для упрощения HTML&#8217;а можно воспользоваться JavaScript&#8217;ом. Приведу пример:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    $(document).ready(function(){
        $('form :button, form :submit').each(function(){
            var className = $(this).attr('class');

            $(this).wrap('&lt;div class=&quot;button '+className+'&quot;&gt;&lt;/div&gt;');
            $(this).after('&lt;em&gt;&lt;/em&gt;');
        });
    });
&lt;/script&gt;
&lt;form class=&quot;rubber&quot; onsubmit=&quot;return false;&quot;&gt;
    &lt;input type=&quot;button&quot; class=&quot;green&quot; title=&quot;Button&quot; value=&quot;Button&quot;/&gt;
    &lt;input type=&quot;submit&quot; class=&quot;red&quot; title=&quot;Submit&quot; value=&quot;Submit&quot;/&gt;
&lt;/form&gt;
</pre>
</blockquote>
<h4>Пишем CSS</h4>
<p>Читаем комментарии по коду:</p>
<pre class="brush: css; title: ; notranslate">
.button {
    /*
      у нас кнопка с закруглением - значит нам необходимо
      у DOM элемента так же скруглить углы
     */
    border-radius:10px;
    -moz-border-radius:10px;
    -khtml-border-radius:10px;
    -webkit-border-radius: 10px;

    /*
      внутренний элемент &lt;a&gt; должен быть смещен относительно &lt;li&gt;
      на 20px - освобождаем место для &lt;em&gt;
     */
    padding-right:20px;

    /*
       данные элемент будет relative - т.е.
       все элементы внутри него с абсолютным
       позиционированием будут плясать от него
    */
    position:relative;
}
.button a, .button em{
    /* ссылке и элементу em задаем одинаковое фоновое изображение */
    background-image:url('css/images/button.png');
    background-repeat:no-repeat;
}
.button a{
    /*
       ссылку делаем блочным элементом
       задаем высоту элемента, а так же свойство
       line-height - с его помощью мы выравниваем текст по вертикали
    */
    display:block;
    height:52px;
    line-height:52px;

    outline:none;
    color:#333;
    font-size:18px;
    text-indent:20px;
    text-decoration:none;
    text-align:center;
    text-shadow: #333 0px -1px 0px;
}
.button em{
    /*
       внутренний элемент так же будет блочным
       с размером 52х20, с абсолютной позиционированием
    */
    display:block;
    position:absolute;
    background-position:100% 0;
    width:20px;
    height:52px;
    top:0px;
    right:0px;
}
/* цвет шрифта для некоторых кнопок лучше поменять */
.button.green a,
.button.black a,
.button.red a
{
    color:#fff;
}
/* тут указываем цвет наших кнопок */
.button.green { background-color:#009e0f }
.button.green:hover{ background-color:#068612 }
.button.white{ background-color:#f0f0f0 }
.button.white:hover{ background-color:#c0c0c0 }
.button.black{ background-color:#000 }
.button.black:hover{ background-color:#333 }
.button.orange{ background-color:#ff7800 }
.button.orange:hover{ background-color:#c60 }
.button.red{ background-color:#f00 }
.button.red:hover{ background-color:#c00 }
</pre>
<h4>Наблюдаем результат</h4>
<p>Сравним результат наших трудов в разных браузерах:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2009/07/button-result.png" alt="CSS Button Compare Result" title="CSS Button Compare Result" width="426" height="314" class="aligncenter size-full wp-image-1069" /></p>
<p>Как вы можете заметить, есть несколько проблем с данной реализацией:</p>
<ul>
<li>полупрозрачность в IE6 не работает &#8211; можем докрутит хаки, но зачем &#8211; IE6 можно считать умершим</li>
<li>box-radius в IE и Opera не работает &#8211; либо отказываемся от данной фичи, либо зарисовываем свободное пространство фоновым цветом (для IE так же есть грязный хак, см.: <a href="http://www.htmlremix.com/css/curved-corner-border-radius-cross-browser">Curved corner (border-radius) cross browser</a>)</li>
</ul>
<p>Кнопочки можно пощупать на <a href="http://anton.shevchuk.name/wp-demo/css-buttons/">демо</a>, все сорцы доступны по следующей ссылке:</p>
<div class="aligncenter">
<a href="http://anton.shevchuk.name/wp-content/uploads/2009/07/css-button.zip" title="Simple CSS Buttons" class="download_button" onclick="javascript:pageTracker._trackPageview('/downloads/css-buttons/);"><span class="caption">Download </span><span class="version">lesson </span><span class="title">Simple CSS Buttons</span></a>
</div>
<p>Еще ссылки по теме:</p>
<ul>
<li><a href="http://monc.se/kitchen/59/scalable-css-buttons-using-png-and-background-colors">Scalable CSS Buttons Using PNG and Background</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/item/bold_css_buttons/">Bold CSS Buttons</a></li>
<li><a href="http://www.oscaralexander.com/tutorials/how-to-make-sexy-buttons-with-css.html">How to make sexy buttons with CSS</a></li>
<li><a href="http://www.jankoatwarpspeed.com/post/2008/04/30/make-fancy-buttons-using-css-sliding-doors-technique.aspx">Make fancy buttons using CSS sliding doors technique</a></li>
<li><a href="http://kailoon.com/css-sliding-door-using-only-1-image/">CSS Sliding Door using only 1 image</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/item/css_oval_buttons/">CSS Oval buttons</a></li>
</ul>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li>No Related Post</li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/html-and-css/css-for-beginners-simple-css-buttons/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Стандарты кодирования для (X)HTML, CSS и JavaScript&#8217;a</title>
		<link>http://anton.shevchuk.name/javascript/html-css-javascript-standarts/</link>
		<comments>http://anton.shevchuk.name/javascript/html-css-javascript-standarts/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 05:00:52 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[standarts]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/?p=581</guid>
		<description><![CDATA[Уже давненько я поднимал вопрос о стандартах кодирования в PHP, и вот решился описать правила хорошего тона для (X)HTML, CSS и JavaScript&#8217;a. Тут дела обстоят немного сложнее &#8211; ибо вменяемых стандартов я так и не обнаружил, следовательно мы пойдем своим путем. Для начала нам необходимо выделить несколько правил дабы улучшить читаемость кода &#8211; одно из [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/11/w3c-standarts.png" alt="" title="W3C Standarts" width="164" height="164" class="alignnone size-full wp-image-586" /></p>
<p>Уже давненько я поднимал вопрос о <a href="http://anton.shevchuk.name/php/php-coding-standards/">стандартах кодирования в PHP</a>, и вот решился описать правила хорошего тона для (X)HTML, CSS и JavaScript&#8217;a.<br />
<span id="more-581"></span></p>
<p>Тут дела обстоят немного сложнее &#8211; ибо вменяемых стандартов я так и не обнаружил, следовательно мы пойдем своим путем. Для начала нам необходимо выделить несколько правил дабы улучшить читаемость кода &#8211; одно из них &#8211; &#8220;разделяй и властвуй&#8221; &#8211; ибо есть что:</p>
<ul>
<li>(X)HTML &#8211; markup layer &#8211; верстка</li>
<li>CSS &#8211; presentation layer &#8211; представление</li>
<li>JavaScript &#8211; behavioural layer &#8211; поведение</li>
</ul>
<p>Но давайте по порядку&#8230;</p>
<h2>Strict DOCTYPE</h2>
<p>Не будем вступать в дискуссию, какой стандарт лучше HTML 4.0 иль XHTML 1.0 &#8211; оба они хороши и вполне подходят в качестве стандарта, но я придерживаюсь XHTML&#8217;a ;). А вот насчет DOCTYPE &#8211; то пора уже взрослеть и переходить на strict&#8230; <del datetime="2008-11-18T16:12:07+00:00">если конечно у Вас не табличная верстка, иначе прийдется остаться на transitional</del>&#8230;</p>
<pre class="brush: xml; title: ; notranslate">
&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;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
</pre>
<p>Ссылки:</p>
<ul>
<li><a href="http://www.w3.org/QA/2002/04/valid-dtd-list.html">W3C: Recommended DTDs to use in your Web document</a></li>
<li><a href="http://www.webmascon.com/topics/coding/25a.asp">Почему так важен DOCTYPE</a></li>
<li><a href="http://vitaly.harisov.name/xhtmlcoding.html">XHTML Coding Rules от Виталия Харисова</a></li>
</ul>
<h2>Кодировка и спец-символы</h2>
<p>Кодировка UTF-8 и точка. Не надо разводить холивар, принимаем сие как стандарт.</p>
<p>Далее нам надо бы сию кодировочку прописать в нашем HTML&#8217;е &#8211; для этого необходимо поместить соответствующий тег внутрь тэга &lt;head&gt;, но есть небольшой подводный камень &#8211; есть большой соблазн запихнуть &lt;title&gt; до объявления кодировки &#8211; не ведитесь &#8211; иначе браузер может заняться произволом и попытается определить кодировку самостоятельно по тексту в &lt;title&gt;, и обычно не очень удачно.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;head&gt;
    &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
    &lt;title&gt;Anton Shevchuk's Home&lt;/title&gt;
&lt;/head&gt;
</pre>
<p>Насчет символов аля <strong>&amp;</strong>, <strong>&lt;</strong>, <strong>&gt;</strong>  &#8211; если вы хотите соответствовать стандартам &#8211; то заменяем сие неподобство на соответствующую последовательность <strong>&amp;amp;</strong>, <strong>&amp;lt;</strong>, <strong>&amp;gt;</strong></p>
<h2>Валидация</h2>
<p>Зеленый текст W3C validator&#8217;а &#8211; это наша цель, так что не забывайте закрывать теги, да прописывать обязательные параметры&#8230;</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!-- найди ошибки - получи пирожок --&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Nunc urna metus, ultricies eu, congue vel, laoreet id, justo.
Aliquam fermentum adipiscing pede. Suspendisse dapibus ornare
quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;p&gt;
&lt;a href=&quot;/index.php?mod=default&amp;act=image&quot;&gt;&lt;img src=&quot;/img001.jpg&quot;&gt;&lt;/a&gt;
&lt;!-- подсказка - их тут пять (XHTML 1.0 Strict)--&gt;
</pre>
<p>Ссылки:</p>
<ul>
<li><a href="http://validator.w3.org/">The W3C Markup Validation Service</a></li>
<li><a href="http://xhtml-css.com/">XHTML-CSS Validator</a></li>
</ul>
<h2>Форматирование отступами</h2>
<p>Отступы &#8211; невидимые в браузере, но такие незаменимые для верстки (X)HTML&#8217;а &#8211; они в разы повышают читаемость кода.<br />
И их использование &#8211; просто песня &#8211; начинаешь новый вложенный тег &#8211; сделай отступ, закрываешь &#8211; убери.<br />
В качестве отступа принято использовать символ табуляции (tab) либо несколько пробелов (обычно 4).</p>
<p>Сравните код:</p>
<pre class="brush: xml; title: ; notranslate">
    &lt;ul class=&quot;bigBarNavigation&quot;&gt;&lt;li&gt;
&lt;a href=&quot;/&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
&lt;a href=&quot;/about.html&quot;&gt;About Us&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
&lt;a href=&quot;/contact.html&quot;&gt;Contact Us&lt;/a&gt;&lt;div class=&quot;subMenu&quot;&gt;&lt;!-- Example --&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
</pre>
<p>И код с отступами:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ul class=&quot;bigBarNavigation&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;/&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;/about.html&quot;&gt;About Us&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;
        &lt;a href=&quot;/contact.html&quot;&gt;Contact Us&lt;/a&gt;
        &lt;div class=&quot;subMenu&quot;&gt;&lt;!-- Example --&gt;&lt;/div&gt;
    &lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Точно так же можете применять отступы в вашем CSS файле:</p>
<pre class="brush: css; title: ; notranslate">
#header  { .. }
    #header h1 { .. }
    #header h2 { .. }

#content { .. }
    #content .title { .. }
    #content .post  { .. }
</pre>
<p>P.S. Когда займетесь блошиной оптимизацией вашего сайта, то решите, что 4 пробела &#8211; это в 4-ре раза больше трафика чем один символ табуляции :)</p>
<h2>Теги любят порядок</h2>
<p>Очень часто в шапке нашего сайта мы пишем тег &lt;h1&gt; с названием нашего сайта, да еще и оформляем его ссылкой на главную страницу сайта, и для этого обрамляем наш тег &lt;h1&gt; в &lt;a&gt;. Большинство браузеров адекватно отобразит нам сие творение, но с технической точки зрения это не верно, т.к. тег &lt;a&gt; отображается как inline, а &lt;h1&gt; как block, а block элементы не должны располагаться в inline элементах (это bad practices).</p>
<p><strong>Плохо</strong>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a href=&quot;/index.html&quot;&gt;&lt;h1&gt;Мой сайт&lt;/h1&gt;&lt;/a&gt;
</pre>
<p><strong>Хорошо</strong>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt;&lt;a href=&quot;/index.html&quot;&gt;Мой сайт&lt;/a&gt;&lt;/h1&gt;
</pre>
<p>Ссылки:</p>
<ul>
<li><a href="http://www.htmlbook.ru/css/display.html">Свойства CSS &#8211; display</a></li>
</ul>
<h2>&#8220;Дивная&#8221; верстка</h2>
<p>В английском языке есть термин &#8220;divits&#8221; &#8211; сим термином награждают HTML разметку с чрезмерным использованием div&#8217;ов без потребности, я же обзываю такие творения &#8220;дивными&#8221;. Обычно таким грешат новички, которые для применения стилей CSS оборачивают элементы в div&#8217;ы, что и приводит к их размножению без нужды.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;topNav&quot;&gt;
    &lt;ul class=&quot;bigBarNavigation&quot;&gt;
        &lt;li&gt;&lt;a href=&quot;/&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;/about.html&quot;&gt;About Us&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;
            &lt;a href=&quot;/contact.html&quot;&gt;Contact Us&lt;/a&gt;
            &lt;div class=&quot;subMenu&quot;&gt;&lt;!-- Example --&gt;&lt;/div&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
</pre>
<p>В данном примере, div (с классом &#8220;topNav&#8221;), оборачивает ul (с классом &#8220;bigBarNavigation&#8221;). Оба, div и ul, являются блочными элементами, так что нам нет необходимости заворачивать &lt;ul&gt; в &lt;div&gt;; все, что мы можем сделать с &lt;div&gt; мы можем проделать и с &lt;ul&gt;.</p>
<h2>Выбираем правильные имена</h2>
<p>Самое время обсудить правила именования id и class&#8217;ов. Возьмем пример из предыдущего абзаца &#8211; у нас использовался неупорядоченные список с идентификатором &#8220;bigBarNavigation.&#8221; &#8220;Navigation&#8221; &#8211; эта часть имени несет смысловую нагрузку о содержимом списка, но &#8220;big&#8221; и &#8220;Bar&#8221; относится лишь к внешнему представлению, актуальному на данный момент, но если мы изменим дизайн сайта (и, скажем, навигация у нас будет выпадающим меню), то данный ID будет неактуальным и добавит лишь путаницы.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt;Мой сайт о &lt;span class=&quot;blue italic&quot;&gt;ёжиках&lt;/span&gt;&lt;/h1&gt;
&lt;!-- Сегодня blue и italic, а завтра red и bold? --&gt;
</pre>
<p>Приведу примеры &#8220;правильных&#8221; id и class&#8217;ов: &#8220;mainNav&#8221;, &#8220;subNav&#8221;, &#8220;sidebar&#8221;, &#8220;footer&#8221;, &#8220;metaData&#8221;, а так же &#8220;неправильные&#8221; имена (которые описывают дизайн): &#8220;bigBoldHeader&#8221;, &#8220;leftSidebar&#8221;, &#8220;roundedBox&#8221;.</p>
<h2>CSS&#8217;у CSS&#8217;ное</h2>
<p>Очень часто, в меню сайтов, используют написание текста в верхнем регистре. Конечно это легко сделать используя клавишу Shift на клавиатуре, но мы то не просто так CSS изучали, так что сей функционал стоит перенести в CSS, для это цели стоит воспользоваться {text-transform: uppercase}. Теперь, если вы вдруг передумаете, Вы сможете с легкостью изменить вид вашего меню изменив лишь одну строчку в CSS.</p>
<p>HTML практически без изменений:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;/index.html&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;!-- ... --&gt;
&lt;/ul&gt;
</pre>
<p>И совсем чуть-чуть изменений в CSS:</p>
<pre class="brush: css; title: ; notranslate">
ul li a {text-transform: uppercase}
</pre>
<p>Ссылки:</p>
<ul>
<li><a href="http://www.htmlbook.ru/css/text-decoration.html">Свойства CSS &#8211; text-decoration</a></li>
<li><a href="http://www.htmlbook.ru/css/text-transform.html">Свойства CSS &#8211; text-transform</a></li>
</ul>
<h2>Class/id для &lt;body&gt;</h2>
<p>Зачем? Объясню на примере &#8211; представьте &#8211; у Вас есть страница сайта на которой расположение элементов иное нежели на всех остальных, дабы сие сотворить Вам необходимо внести изменения в существующий стиль для div&#8217;a с id=&#8221;mainContent&#8221;, для этого создаете новый id=&#8221;mainContent-500&#8243;, создаете  и вносите изменения, и так для каждого элемента в нашем шаблоне, а если у нас таких страниц несколько?, а потом сие еще внедрять разработчику сайта&#8230;</p>
<p>Если же у body был класс, то мы бы добавили к нему еще один (&lt;body class=&#8221;blogLayout width-500&#8243;&gt;) и уже в CSS прописывали измения для всех дочерних элементов (не зря ж это &#8221;&#8217;каскадная&#8221;&#8217; таблица стилей). Таким образом мы очень сильно упрощаем жизнь разработчикам, которые будут внедрять наш дизайн.</p>
<pre class="brush: css; title: ; notranslate">
body.width-500 #mainContent {
   width:500px;
}
</pre>
<h2>Логический порядок</h2>
<p>Если это вообще возможно, старайтесь придерживаться строго порядка при расположении элементов, приведу пример:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;body class=&quot;body&quot;&gt;
    &lt;div id=&quot;header&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;wrapper&quot;&gt;
        &lt;div id=&quot;content&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;sidebar&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;footer&quot;&gt;&lt;/div&gt;
&lt;/body&gt;
</pre>
<h2>CSS во внешних файлах</h2>
<p>Вы можете добавить описание стилей CSS в самом теле HTML, используя соответствующий тег &lt;style type=&#8221;text/css&#8221; media=&#8221;screen&#8221;&gt;&#8230;&lt;/style&gt;, но только за такое творчество хочется дать по рукам, ведь такой стиль будет применяться только для определенной страницы (хотя иногда в этом есть необходимость), гораздо удобней вынести сие во внешний файл CSS.</p>
<p>Вроде смотрится неплохо:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
    body { background:pink }
    /* etc */
&lt;/style&gt;
</pre>
<p>Но таки так лучше:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;link rel=&quot;stylesheet&quot; href=&quot;/css/style.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; charset=&quot;utf-8&quot; /&gt;
</pre>
<p>То же самое касается и JavaScript&#8217;a, но о нем чуть позже.</p>
<h2>Стандарты кодирования CSS</h2>
<p>К сожалению я не нашел стандартов для написания файлов стилей, лишь пожелания:</p>
<ul>
<li>Комментарии к элементам</li>
<li>Форматирование отступам &#8211; от этого не все в восторге</li>
<li>Правильные имена селекторов &#8211; уже обсуждалось выше</li>
</ul>
<p>Ссылки:</p>
<ul>
<li><a href="http://www.w3.org/TR/WCAG10-CSS-TECHS/">CSS Techniques for Web Content Accessibility Guidelines 1.0</a></li>
<li><a href="http://jigsaw.w3.org/css-validator/">CSS Validation Service</a></li>
<li><a href="http://vitaly.harisov.name/css-code-style.html">Стандарты описанные Виталием Харисовым</a></li>
</ul>
<h2>Отделяем Javascript от (X)HTML</h2>
<p>Нам следует отделить всю функциональность JavaScript&#8217;а от (X)HTML&#8217;а и запихнуть её в отдельный файл. Для этой цели лучше всего нам подойдет <a href="http://jquery.com">jQuery</a> фреймворк, ибо удобно, быстро, и красиво (да и взгляните на <a href="http://www.google.com/trends?q=jquery%2C+prototype%2C+dojo%2C+yui&#038;ctab=0&#038;geo=all&#038;date=2008&#038;sort=0">график</a>)</p>
<p>Никогда не используйте аттрибуты on** для установки обработчиков событий, приведу примеры.</p>
<p><strong>Плохо</strong>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a onclick=&quot;doSomething()&quot; href=&quot;#&quot;&gt;Click!&lt;/a&gt;
</pre>
<p><strong>Хорошо</strong>:<br />
Все обработчики событий помещаем во внешний файл, который подключим в начале страницы используя тег &lt;script&gt;. Соответственно немного переделаем предыдущий код:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a href=&quot;backuplink.html&quot; class=&quot;doSomething&quot;&gt;Click!&lt;/a&gt;
</pre>
<p>В JavaScript файле будет что-то типа:</p>
<pre class="brush: jscript; title: ; notranslate">
...
$('a.doSomething').click(function(){
    // Do something here!
    alert('You did something, woo hoo!');
});
...
</pre>
<h2>Семантическая верстка</h2>
<p>Возвращаясь к теме верстки стоит упомянуть &#8211; дабы писать красивый JavaScript код с использованием jQuery нам необходима максимально прозрачная структура документа.</p>
<p><strong>Очень Плохо</strong>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;table&gt;
    &lt;tr&gt;
        &lt;td onclick=&quot;doSomething();&quot;&gt;First Option&lt;/td&gt;
        &lt;td&gt;First option description&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td onclick=&quot;doSomething();&quot;&gt;Second Option&lt;/td&gt;
        &lt;td&gt;Second option description&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
</pre>
<p><strong>Плохо</strong>:<br />
Вроде получше, но надо бы избавиться от обработчиков событий:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;dl&gt;
    &lt;dt onclick=&quot;doSomething();&quot;&gt;First Option&lt;/dt&gt;
    &lt;dd&gt;First option description&lt;/dd&gt;
    &lt;dt onclick=&quot;doSomething();&quot;&gt;Second Option&lt;/dt&gt;
    &lt;dd&gt;Second option description&lt;/dd&gt;
&lt;/dl&gt;
</pre>
<p><strong>Хорошо</strong>:<br />
Мы убрали все лишние, и добавили id к элементу dl &#8211; дабы в JavaScript&#8217;е мы смогли добавить обработчики событий для элементов dt:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;dl id=&quot;OptionList&quot;&gt;
    &lt;dt&gt;First Option&lt;/dt&gt;
    &lt;dd&gt;First option description&lt;/dd&gt;
    &lt;dt&gt;Second Option&lt;/dt&gt;
    &lt;dd&gt;Second option description&lt;/dd&gt;
&lt;/dl&gt;
</pre>
<p>К примеру вот так будет выглядеть обработчик событий:</p>
<pre class="brush: jscript; title: ; notranslate">
$('#OptionList dt').click(function(){
    /* do something */
});
</pre>
<h2>Лечим JavaScript зависимость</h2>
<p>При разработке web-приложений стоит избегать JavaScript зависимости, т.е. наш сайт должен работать и при отключенном JavaScript&#8217;e, конечно, каких-то красивостей не будет, но сайт должен работать.</p>
<p><strong>Плохо</strong>:</p>
<p>Приведу простейший пример, в данном случае, в зависимости от времени в браузере появится надпись &#8220;Доброе утро!&#8221; либо &#8220;Добрый день!&#8221;, но стоит нам отключить JavaScript, и пользователь не увидит ни то, ни другое приветствие. </p>
<pre class="brush: jscript; title: ; notranslate">
var now = new Date();
if(now.getHours() &lt; 12)
    document.write('Доброе утро!');
else
    document.write('Добрый день!');
</pre>
<p><strong>Хорошо</strong>:</p>
<p>Приветствие размещается в теле странички:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p title=&quot;Good Day Message&quot;&gt;Доброе утро!&lt;/p&gt;
</pre>
<p>И заменяется другим приветствием в зависимости от времени суток:</p>
<pre class="brush: jscript; title: ; notranslate">
var now = new Date();
if(now.getHours() &gt;= 12)
{
    var goodDay = $('p[title=&quot;Good Day Message&quot;]');
    goodDay.text('Добрый день!');
}
</pre>
<p>Да при отключенном JavaScript&#8217;е пользователю будет показано неверное приветсвие, но это все же лучше чем ничего, да и пример этот взят с потолка &#8211; но ведь нам главное понять суть проблемы.</p>
<p>Теперь приведу более сложный пример, реализация которого невозможна без изменений серверной части нашего приложения. Давайте сделаем загрузка контента страницы посредством AJAX&#8217;а, но при этом оставим поддержку браузеров с отключенным JavaScripti&#8217;om, возьмем уже знакомый нам пример с меню сайта:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ul class=&quot;Navigation&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;/&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;/about.html&quot;&gt;About Us&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;/contact.html&quot;&gt;Contact Us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;MainContent&quot;&gt;&lt;!-- Content --&gt;&lt;/div&gt;
</pre>
<p>Данный пример работает у нас без JavaScript&#8217;a, все страницы в нашем меню используют один и тот же шаблон для вывода информации, и по факту у нас изменяется лишь содержимое div&#8217;a с id=&#8221;MainContent&#8221;. Естественно можно улучшить данный функционал используя для загрузки контента AJAX &#8211; для этого добавим следующий код:</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function()
{
    // вешаем обработчик на все ссылки в нашем меню Navigation
    $(&quot;ul.Navigation a&quot;).click(function(){
        var url = $(this).attr(&quot;href&quot;); // возьмем ссылку
            url =+ &quot;?ajax=true&quot;;        // добавим к ней параметр ajax=true
        $(&quot;#MainContent&quot;).load(url);    // загружаем обновленное содержимое
        return false;                   // возвращаем false - дабы не сработал переход по ссылке
    });
});
</pre>
<p>В данном примере мы предполагаем, что сервер видя параметр ajax=true вернет нам не полностью всю страницу, а лишь обновление для div&#8217;a с id=&#8221;MainContent&#8221; (конечно сервер может быть умнее и не требовать увного указания на использования AJAX&#8217;а, а вполне удовлетвориться словив header X_REQUESTED_WITH со значением XMLHttpRequest)</p>
<h2>Событие onload</h2>
<p>Обычно все Javascript события вешались на &#8220;onload&#8221; тега &lt;body&gt; &#8211; это позволяло нам выполнять их по завершению загрузки страницы. Забудьте это.<br />
jQuery предоставляет нам специальный метод, называемый &#8220;ready&#8221;, именно он, позволит нам выполнять код после полной загрузки DOM. Именно благодаря ему, мы можем внедрять ненавязчивые скрипты, при этом полностью отделив Javascript от разметки. Используя $(document).ready(), мы можем  поставить в очередь целый ряд событий и все они будут выполнены после загрузки страницы.</p>
<p><del>Слайды, слайды</del>&#8230;</p>
<p><strong>Плохо</strong><br />
Приведу пример кода для отображения alert-сообщения с текстом &#8220;Hello World&#8221;, без использывания jQuery и события onload:</p>
<pre class="brush: jscript; title: ; notranslate">
alert('Hello World');
</pre>
<p><strong>Хорошо</strong><br />
Old-school style &#8211; хорошо, коли у Вас нет необходимости во фремворках:</p>
<pre class="brush: jscript; title: ; notranslate">
  window.onload = (function(){
    alert('Hello World');
  });
</pre>
<p>А теперь с использованием jQuery напишем следующий скрипт:</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function()
{
    alert('Hello World');
});
</pre>
<p>Как видите &#8211; действительно просто.</p>
<h2>Стандарты кодирования JavaScript</h2>
<p>Хорошо, что мы определились с тем, что JavaScript у нас лежит у нас в отдельном файле, но надо бы его привести в божеский вид, т.е. нам нужны стандарты кодирования:</p>
<ul>
<li><a href="http://www.galasoft-lb.ch/myjavascript/Siemens_SBT_JavaScript_Coding_Guidelines.pdf">JavaScript-кодинг-гидлайн от компании Siemens BT</a></li>
<li><a href="https://developer.mozilla.org/En/JavaScript_style_guide">JavaScript style guide</a></li>
<li><a href="http://javascript.crockford.com/code.html">Code Conventions for the JavaScript Programming Language</a></li>
<li><a href="http://neil.rashbrook.org/JS.htm">JavaScript Style Guide</a></li>
</ul>
<p>Написание комментариев, так же является хорошим тоном, но если они еще и будут помогать в генерации документации &#8211; будет лучше:</p>
<ul>
<li><a href="http://www.aptana.com/docs/index.php/ScriptDoc_comprehensive_tag_reference">ScriptDoc comprehensive tag reference</a></li>
<li><a href="http://jsdoc.sourceforge.net/">JSDoc &#8211; JavaScript Documentation Tool</a></li>
</ul>
<p>Так же правилом хорошего тона является сжатия исходных кодов JavaScript&#8217;а для уменьшения времени загрузки (для live-сервера):</p>
<ul>
<li><a href="http://compressorrater.thruhere.net/">Сравнение средств компрессия для JavaScript&#8217;ов</a></li>
</ul>
<h2>P.S.</h2>
<p>Если с jQuery у Вас возникли трудности, то советую почитать следующие статьи:</p>
<ul>
<li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners/ ">jQuery для начинающих</a></li>
<li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-2/">jQuery для начинающих. Часть 2. JavaScript Меню</a></li>
<li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-ajax/">jQuery для начинающих. Часть 3. AJAX</a></li>
</ul>
<p>Данная статья подготовлена по материалам: </p>
<ul>
<li><a href="http://www.smashingmagazine.com/2008/09/16/jquery-examples-and-best-practices/ ">jQuery and JavaScript Coding: Examples and Best Practices </a></li>
<li><a href="http://www.smashingmagazine.com/2008/11/12/12-principles-for-keeping-your-code-clean/">12 Principles For Keeping Your Code Clean</a></li>
</ul>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/php/php-jquery-cookbook/" title="PHP jQuery Cookbook">PHP jQuery Cookbook</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-write-animation-plugins/" title="jQuery для начинающих. Часть 9. Пишем плагины анимации">jQuery для начинающих. Часть 9. Пишем плагины анимации</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-filter-extend/" title="jQuery для начинающих. Часть 8. Расширяем фильтры">jQuery для начинающих. Часть 8. Расширяем фильтры</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-write-plugins/" title="jQuery для начинающих. Часть 7. Пишем плагины">jQuery для начинающих. Часть 7. Пишем плагины</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-events/" title="jQuery для начинающих. Часть 6. События">jQuery для начинающих. Часть 6. События</a></li><li><a href="http://anton.shevchuk.name/javascript/a-sexy-images-jquery-plugin/" title="(a) Sexy Images jQuery плагин">(a) Sexy Images jQuery плагин</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-effects/" title="jQuery для начинающих. Часть 5. Эффекты">jQuery для начинающих. Часть 5. Эффекты</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-iphone-ui/" title="jQuery iPhone UI">jQuery iPhone UI</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/javascript/html-css-javascript-standarts/feed/</wfw:commentRss>
		<slash:comments>71</slash:comments>
		</item>
		<item>
		<title>Гламурная галерея картинок на CSS</title>
		<link>http://anton.shevchuk.name/html-and-css/css-image-gallery/</link>
		<comments>http://anton.shevchuk.name/html-and-css/css-image-gallery/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 10:41:16 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/?p=224</guid>
		<description><![CDATA[Есть подозрения, что Вы читали мой предыдущий перевод о том, как создать эффект градиента для текста, и вот продолжение, но в этот раз мы займемся фото-галереей&#8230; Всё очень просто &#8211; всё что нам понадобиться это дополнительный элемент с картинкой в качестве фона для создания эффекта наложения. И так &#8211; приступим&#8230; Основная концепция Добавляем тэг &#60;span&#62; [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/screen.jpg" alt="" title="CSS Gallery" width="480" height="224" class="alignnone size-full wp-image-225" /></p>
<p>Есть подозрения, что Вы читали мой <a href="http://anton.shevchuk.name/html-and-css/css-gradient/">предыдущий перевод</a> о том, как создать эффект градиента для текста, и вот продолжение, но в этот раз мы займемся фото-галереей&#8230;<br />
<span id="more-224"></span></p>
<p>Всё очень просто &#8211; всё что нам понадобиться это дополнительный элемент <span> с картинкой в качестве фона для создания эффекта наложения. И так &#8211; приступим&#8230;</p>
<h3>Основная концепция</h3>
<p>Добавляем тэг &lt;span&gt; внутрь &lt;div&gt;, и применяем к нему стиль с фоновым изображением &#8211; таким образом у нас получиться эффект наложения двух картинок (вы так же можете воспользоваться jQuery для добавления тэга на лету, пример далее).</p>
<p align="center">
<img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/basic-concept.gif" alt="" title="CSS Gallery" />
</p>
<p>В CSS необходимо обратить внимание на то, что тэг <b>div</b> у нас <b>position:relative</b>, а <b>span</b> &#8211; <b>position:absolute</b>. Это необходимо, чтобы свойства <b>top</b> и <b>left</b> у элемента span позиционировали его относительно div&#8217;a.</p>
<h3>IE PNG Hack</h3>
<p>Как обычно IE6 отличается умом и сообразительностью &#8211; он не отображает нормально полупрозрачные PNG, специально для него существует хак &#8211; <a href="http://www.twinhelix.com/css/iepngfix/">iepngfix.htc</a>. Скачайте файл iepngfix.htc и вставьте следующий код в тэг &lt;head&gt;:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!--[if lt IE 7]&gt;
&lt;style type=&quot;text/css&quot;&gt;
  .photo span { behavior: url(iepngfix.htc); }
&lt;/style&gt;
&lt;![endif]--&gt;
</pre>
<h3>Стили</h3>
<p>Изменяя свойства тэга &lt;span&gt; Вы можете с легкостью создать свой неповторимый стиль, вот пример 15-ти стилей:</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/decorative-gallery-index.html"><br />
<img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-screenshot.jpg" alt="" title="CSS DEMO Gallery" /><br />
</a></p>
<h3>Добавление элемента с помощью jQuery</h3>
<p>Как многие знают, добавление пустого элемента <span> не есть ТРУ, по этой причине будем добавлять его средствами JavaScript&#8217;a, а именно при помощи библиотеки jQuery. Для этой цели нам необходимо добавить следующий код в тэг <head>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){

  //prepend span tag
  $(&quot;.photo a&quot;).prepend(&quot;&lt;span&gt;&lt;/span&gt;&quot;);

});
&lt;/script&gt;
</pre>
<h4>#1. Простая галерея</h4>
<p>Используя предыдущую информацию Вы слегкостью можете создать следующую галерею:</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/1_simple-gallery.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo1.gif" alt="Demo 1" /></a></p>
<h4>#1b. Мини иконки</h4>
<p>В данном примере показана возможность того, что иконки можно спозиционировать по Вашему желанию (примечание: имя CSS класса обязателен для тэга span)</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/1b_mini-icons.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo1b.gif" alt="Demo 1b" /></a></p>
<h4>#2. Фото + текст</h4>
<p>Создадим галерею, с подписями к картинкам. (тэг em).</p>
<p  align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/2_photo-with-text.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-2a.gif" alt="photo with text" /></a></p>
<h4>#2b. Текст-посказка</h4>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/2b_popup-title.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-2b.gif" alt="popup text" /></a></p>
<h4>#3. Скрепка</h4>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/3_mini-paper-clip.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo3.gif" alt="Mini paper clip demo" /></a></p>
<h4>#4. Галеряя на &#8220;пробке&#8221;</h4>
<p>Версия для <a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/4_cork-board-ie6.html">IE6</a>.</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/4_cork-board.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-4.gif" alt="cork board gallery" /></a></p>
<p>sIFR версия (Flash Text Replacement)<br />
В данном примере используется <a href="http://novemberborn.net/sifr3">sIFR</a> библиотека &#8211; которая заменяет шрифты на рукописные:</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/4_cork-board-sifr.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-4-sifr.gif" alt="sIFR demo" /></a></p>
<h4>#4b. Пробковое дерево и липкая лента</h4>
<p>Версия для <a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/4b_cork-masking-tape-ie6.html">IE6</a>.</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/4b_cork-masking-tape.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-4b.gif" alt="Demo 2b" /></a></p>
<h4>#5. Художественная галерея &#8211; Черная рамка</h4>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/5_gallery-black-frame.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-5.gif" alt="black picture frame" /></a></p>
<h4>#5b. Художественная галерея &#8211; Золотая рамка</h4>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/5b_gallery-gold-frame.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-5b.gif" alt="gold art frame" /></a></p>
<h4>#6. Затертость</h4>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/6_watercolor.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-6.gif" alt="grungy watercolor" /></a></p>
<p>sIFR версия</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/6_watercolor-sifr.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-6-sifr.gif" alt="sIFR demo" /></a></p>
<h4>#7. Глянец</h4>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/7_glossy.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-7.gif" alt="glossy style" /></a></p>
<h4>#8. Дерево</h4>
<p>И как завершающий пример &#8211; демонстрация того, как с легкостью можно изменить фоновые изображения для любого элемента галереи: ul, li, и em.</p>
<p align="center"><a href="http://anton.shevchuk.name/wp-demo/decorative-gallery/8_wood-panel.html"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/05/demo-8.gif" alt="wood panel" /></a></p>
<h3>Вывод</h3>
<p>Как Вы можете видеть, данный CSS трюк легок в пониманию и кастомизации, теперь оформление галереи ложиться полностью на вашу фантазию&#8230;.</p>
<p>Данный пример доступен для скачивания:</p>
<p align="center">
<a href="http://anton.shevchuk.name/wp-content/uploads/2008/05/decorative-gallery-demo.zip" title="Download CSS Image Gallery Demo" class="download_button" ><span class="caption">Download</span><span class="title">CSS Photo Gallery</span></a>
</p>
<p>Вольный перевод: <a href="http://www.webdesignerwall.com/tutorials/css-decorative-gallery/">CSS Decorative Gallery</a></p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/php/php-jquery-cookbook/" title="PHP jQuery Cookbook">PHP jQuery Cookbook</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-write-animation-plugins/" title="jQuery для начинающих. Часть 9. Пишем плагины анимации">jQuery для начинающих. Часть 9. Пишем плагины анимации</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-filter-extend/" title="jQuery для начинающих. Часть 8. Расширяем фильтры">jQuery для начинающих. Часть 8. Расширяем фильтры</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-write-plugins/" title="jQuery для начинающих. Часть 7. Пишем плагины">jQuery для начинающих. Часть 7. Пишем плагины</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-events/" title="jQuery для начинающих. Часть 6. События">jQuery для начинающих. Часть 6. События</a></li><li><a href="http://anton.shevchuk.name/javascript/a-sexy-images-jquery-plugin/" title="(a) Sexy Images jQuery плагин">(a) Sexy Images jQuery плагин</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-for-beginners-effects/" title="jQuery для начинающих. Часть 5. Эффекты">jQuery для начинающих. Часть 5. Эффекты</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-iphone-ui/" title="jQuery iPhone UI">jQuery iPhone UI</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/html-and-css/css-image-gallery/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>CSS градиент</title>
		<link>http://anton.shevchuk.name/html-and-css/css-gradient/</link>
		<comments>http://anton.shevchuk.name/html-and-css/css-gradient/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 14:32:12 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/html-and-css/css-gradient/</guid>
		<description><![CDATA[Вы хотите добавить эффект градиента для заголовков на страницах вашего сайта, но не хотите заморачиваться с Photoshop&#8217;ом? Ну тогда данная статья для Вас. Это простенький CSS трюк, покажет Вам как можно добавить эффект градиента при помощи PNG картинки (никакого Flash&#8217;a и JavaScript&#8217;a, только CSS). Всё что Вам потребуется &#8211; это добавить пустой тэг &#60;span&#62; в [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img src='http://anton.shevchuk.name/wp-content/uploads/2008/02/gradient.png' alt='CSS Gradient' /></p>
<p>Вы хотите добавить эффект градиента для заголовков на страницах вашего сайта, но не хотите заморачиваться с Photoshop&#8217;ом? Ну тогда <a href="http://anton.shevchuk.name/html-and-css/css-gradient/">данная статья</a> для Вас.<br />
<span id="more-149"></span><br />
Это простенький CSS трюк, покажет Вам как можно добавить эффект градиента при помощи PNG картинки (никакого Flash&#8217;a и JavaScript&#8217;a, только CSS). Всё что Вам потребуется &#8211; это добавить пустой тэг &lt;span&gt; в ваши заголовки (имеется ввиду &lt;h1&gt;,&lt;h2&gt; и т.д.) и указать фоновое изображение. Этот способ работает практически во всех браузерах.</p>
<p align="center"><img src="http://anton.shevchuk.name/wp-content/uploads/2008/02/022708-1432-css1.gif" alt=""/></p>
<p>Начнем с HTML &#8211; добавляем пустой тэг &lt;span&gt; в заголовок:</p>
<pre class="brush: xml; title: ; notranslate">&lt;h1&gt;&lt;span&gt;&lt;/span&gt;CSS Gradient Text&lt;/h1&gt;</pre>
<p>Ну и естественно изменяем CSS:</p>
<pre class="brush: css; title: ; notranslate">
h1 {
    font: bold 330%/100% &quot;Lucida Grande&quot;;
    color: #464646;
    /* тут соль */
    position: relative;
}
h1 span {
    /* указываем изображение с градиентом */
    background: url(gradient.png) repeat-x;
    /*позиционируем абсолютно */
    position: absolute;
    /*отображаем блоком на всю ширину заголовка */
    display: block;
    width: 100%;
    height: 31px;
}</pre>
<p>И всё, множество примеров можете найти на <a href="http://anton.shevchuk.name/wp-demo/css-gradient/">это странице</a>. Сам пример можете скачать по данной <a href='http://anton.shevchuk.name/wp-content/uploads/2008/02/css-gradient.zip' title='CSS Gradient Example' onclick="javascript:pageTracker._trackPageview('/downloads/css-gradient.zip');">ссылке</a> (в архиве вы найдете все градиенты, готовые к применению).</p>
<p>Чуть не забыл, надо еще повоевать с IE6, для этого в HTML код вставляем следующее:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!--[if lt IE 7]&gt;
&lt;style&gt;
h1 span {
    background: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='gradient.png', sizingMethod='scale');
}
&lt;/style&gt;
&lt;![endif]--&gt;
</pre>
<p>Кстати, если Вы не хотите править горы HTML кода, за Вас это может сделать jQuery:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
    //prepend span tag to H1
    $(&quot;h1&quot;).prepend(&quot;&lt;span&gt;&lt;/span&gt;&quot;);
});
&lt;/script&gt;
</pre>
<p>Вольный перевод : <a href="http://www.webdesignerwall.com/tutorials/css-gradient-text-effect/">http://www.webdesignerwall.com/tutorials/css-gradient-text-effect/</a></p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/html-and-css/css-image-gallery/" title="Гламурная галерея картинок на CSS">Гламурная галерея картинок на CSS</a></li><li><a href="http://anton.shevchuk.name/internet/12-design-galleries/" title="12 сайтов, которые хотят увидеть ваш дизайн">12 сайтов, которые хотят увидеть ваш дизайн</a></li><li><a href="http://anton.shevchuk.name/php/essential-cheatsheets/" title="Шпаргалки по PHP, HTML, CSS, Javascript, MySQL и SVN">Шпаргалки по PHP, HTML, CSS, Javascript, MySQL и SVN</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/html-and-css/css-gradient/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CSS меню для начинающих</title>
		<link>http://anton.shevchuk.name/html-and-css/web20-css-menu/</link>
		<comments>http://anton.shevchuk.name/html-and-css/web20-css-menu/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 13:04:31 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/html-and-css/web20-css-menu/</guid>
		<description><![CDATA[Данное руководство поможет Вам создать CSS меню для вашего сайта, оно не будет обычным, оно будет привлекать внимание пользователей, не сомневайтесь. И так приступим… Фон для меню Для начала создадим background, я конечно не мастер PhotoShop&#8217;a, но вот что у меня получилось за пару минут: Графические кнопочки Создаем изображения которые у нас будут использовать как [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img src='http://anton.shevchuk.name/wp-content/uploads/2008/02/css-menu-web20.jpg' alt='Web2.0 CSS Menu' /></p>
<p>Данное руководство поможет Вам создать CSS меню для вашего сайта, оно не будет обычным, оно будет привлекать внимание пользователей, не сомневайтесь. И так приступим…<br />
<span id="more-143"></span></p>
<h2>Фон для меню</h2>
<p>Для начала создадим background, я конечно не мастер PhotoShop&#8217;a, но вот что у меня получилось за пару минут:</p>
<p><img src="http://anton.shevchuk.name/wp-content/uploads/2008/02/022208-1304-css1.jpg" alt=""/></p>
<h2>Графические кнопочки</h2>
<p>Создаем изображения которые у нас будут использовать как ссылки в меню. Для этого воспользуемся PhotoShop&#8217;ом:</p>
<ol>
<li>Создаем новый файл размером этак 144x58px. (размер ссылки для первого элемента в меню)</li>
<li>Наполняем графическим содержимым сей пункт меню (у меня это лишь надпись выполненная забавным шрифтом):<br />
<img src="http://anton.shevchuk.name/wp-content/uploads/2008/02/022208-1304-css2.png" alt=""/>
</li>
<li>Далее увеличим размер полотна (canvas size) в два раза:<br />
<img src="http://anton.shevchuk.name/wp-content/uploads/2008/02/022208-1304-css3.png" alt=""/>
</li>
<li>
И дорисуем внешний вид элемента меню для реализации события hover<br />
<img src="http://anton.shevchuk.name/wp-content/uploads/2008/02/022208-1304-css4.png" alt=""/>  <br />
Как сия конструкция будет работать? Да очень просто &#8211; ссылке мы явно указываем размер 144x58px, а но событие mouseover перемещаем фоновое изображение вверх:<br />
<img src="http://anton.shevchuk.name/wp-content/uploads/2008/02/022208-1304-css5.gif" alt=""/>
</li>
<li>Создадим новый файл с произвольным размером и текстом &#8211; это будет наша подсказка к ссылке</li>
<li>Повторим все предыдущие пункты для создания всех пунктов меню, в результате анаших манипуляций у нас должен получиться вот такой набор изображений:<br />
<img src="http://anton.shevchuk.name/wp-content/uploads/2008/02/022208-1304-css6.jpg" alt=""/>
</li>
</ol>
<h2>HTML код</h2>
<p>Закончили строить из себя дизайнеров, пора начинать кодить &#8211; создадим не нумерованный список &#8211; &lt;ul&gt;:</p>
<ul>
<li>элементу &lt;ul&gt; присвоеим id=&#8221;menu&#8221;</li>
<li>каждой ссылке &lt;a&gt; присвоим уникальное имя класса</li>
<li>Внутрь тэга &lt;a&gt; закинем пустой тэг &lt;span&gt; (понадобиться для реализации подсказок к ссылкам)</li>
</ul>
<pre class="brush: xml; title: ; notranslate">
&lt;ul id=&quot;menu&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#&quot; class=&quot;home&quot;&gt;Home &lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot; class=&quot;about&quot;&gt;About &lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot; class=&quot;rss&quot;&gt;RSS &lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p> </p>
<h2>CSS код</h2>
<p><strong>#menu</strong><br />
Для начала убираем padding и margin у меню, list-style выставляем в none, position указываем как  relative . Указываем высоту и ширину меню (см. размеры menu-bg.jpg). Добавляем фоновое изображение.</p>
<pre class="brush: css; title: ; notranslate">
#menu {
	list-style: none;
	padding: 0;
	margin: 0;
	width: 774px;
	height: 210px;
	background: url(images/menu-bg.jpg) no-repeat;
	position: relative;
}
</pre>
<p><strong>#menu span</strong><br />
Для элементов span параметр display выставляем в none (по умолчанию не будут отображаться). Так же выставляем position как absolute.</p>
<pre class="brush: css; title: ; notranslate">
#menu span {
	display: none;
	position: absolute;
}
</pre>
<p><strong>#menu a</strong><br />
Для ссылок нам необходимо спрятать текст,  для этого параметру text-indent присваиваем негативное значение (-900%), и текст будет скрыт.</p>
<pre class="brush: css; title: ; notranslate">
#menu a {
	display: block;
	text-indent: -900%;
	position: absolute;
	outline: none;
}
</pre>
<p><strong>#menu a:hover</strong><br />
Теперь мы хотим сдвинуть картинку на линке по событию mouseover, для этого добавим в CSS следующий код:</p>
<pre class="brush: css; title: ; notranslate">
#menu a:hover {
	background-position: left bottom;
}
</pre>
<p><strong>#menu a:hover span</strong><br />
Так же по событию mouseover необходимо отобразить подсказку</p>
<pre class="brush: css; title: ; notranslate">
#menu a:hover span {
	display: block;
}
</pre>
<p><strong>#menu .home</strong><br />
Теперь нам необходимо правильно расставить элементы меню. Для начала укажем размер элемента и фоновое изображение, а затем займемся позиционированием, будем изменять параметры left и top пока не почувствуем морального удовлетворения от внешнего вида меню:</p>
<pre class="brush: css; title: ; notranslate">
#menu .home {
	width: 144px;
	height: 58px;
	background: url(images/home.gif) no-repeat;
	left: 96px;
	top: 96px;
}
</pre>
<p><strong>#menu .home span</strong><br />
Теперь проведем подобную операцию для всплывающей подсказки</p>
<pre class="brush: css; title: ; notranslate">
#menu .home span {
	width: 86px;
	height: 14px;
	background: url(images/home-over.gif) no-repeat;
	left: 28px;
	top: -20px;
}
</pre>
<p><strong>#menu .about</strong></p>
<p>Копируем всё что мы сделали для элемента .home и переименовываем в .about. Подгоняем размер и расположение, так же заменяем фон.</p>
<pre class="brush: css; title: ; notranslate">
#menu .about {
	width: 131px;
	height: 51px;
	background: url(images/about.gif) no-repeat;
	left: 338px;
	top: 97px;
}
#menu .about span {
	width: 40px;
	height: 12px;
	background: url(images/about-over.gif) no-repeat;
	left: 44px;
	top: 54px;
}
</pre>
<p><strong>#menu .rss</strong></p>
<p>Повторим для .rss</p>
<pre class="brush: css; title: ; notranslate">
#menu .rss {
	width: 112px;
	height: 47px;
	background: url(images/rss.gif) no-repeat;
	left: 588px;
	top: 94px;
}
#menu .rss span {
	width: 92px;
	height: 20px;
	background: url(images/rss-over.gif) no-repeat;
	left: 26px;
	top: -20px;
}
</pre>
<p><strong>Всё в одном</strong></p>
<pre class="brush: css; title: ; notranslate">
#menu {
	list-style: none;
	padding: 0;
	margin: 0;
	width: 774px;
	height: 210px;
	background: url(images/menu-bg.jpg) no-repeat;
	position: relative;
}
#menu span {
	display: none;
	position: absolute;
}
#menu a {
	display: block;
	text-indent: -900%;
	position: absolute;
	outline: none;
}
#menu a:hover {
	background-position: left bottom;
}
#menu a:hover span {
	display: block;
}
#menu .home {
	width: 144px;
	height: 58px;
	background: url(images/home.gif) no-repeat;
	left: 96px;
	top: 73px;
}
#menu .home span {
	width: 86px;
	height: 14px;
	background: url(images/home-over.gif) no-repeat;
	left: 28px;
	top: -20px;
}
#menu .about {
	width: 131px;
	height: 51px;
	background: url(images/about.gif) no-repeat;
	left: 338px;
	top: 97px;
}
#menu .about span {
	width: 40px;
	height: 12px;
	background: url(images/about-over.gif) no-repeat;
	left: 44px;
	top: 54px;
}
#menu .rss {
	width: 112px;
	height: 47px;
	background: url(images/rss.gif) no-repeat;
	left: 588px;
	top: 94px;
}
#menu .rss span {
	width: 92px;
	height: 20px;
	background: url(images/rss-over.gif) no-repeat;
	left: 26px;
	top: -20px;
}
</pre>
<p>Это всё, протестировать меню можете <a href="http://anton.shevchuk.name/wp-demo/css-menu/">тут</a>, а скачать пример <a href='http://anton.shevchuk.name/wp-content/uploads/2008/02/css-menu.zip' title='CSS menu like web2.0' onclick="javascript:pageTracker._trackPageview('/downloads/css-menu.zip');">тут</a>.</p>
<p>Вольный перевод : <a href="http://www.webdesignerwall.com/tutorials/advanced-css-menu/">http://www.webdesignerwall.com/tutorials/advanced-css-menu/</a></p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li>No Related Post</li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/html-and-css/web20-css-menu/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
		<item>
		<title>12 сайтов, которые хотят увидеть ваш дизайн</title>
		<link>http://anton.shevchuk.name/internet/12-design-galleries/</link>
		<comments>http://anton.shevchuk.name/internet/12-design-galleries/#comments</comments>
		<pubDate>Wed, 26 Dec 2007 08:24:16 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/internet/12-design-galleries/</guid>
		<description><![CDATA[Вы сделали (ре-)дизайн сайта и хотите похвастаться своим достижением? Не надо спамить социалки &#8211; редкий юзер оценит Ваши труды. Для этих целей есть множество подходящих сайтов, и о них далее&#8230; Их достаточно, правда не все любят &#8220;нашего&#8221; брата &#8211; так, что описание лучше придумать позаковыристей и на английском, и так &#8211; поехали: BeInspired (RUS) Best [...]]]></description>
			<content:encoded><![CDATA[<p align='center'><img src='http://anton.shevchuk.name/wp-content/uploads/2007/12/redesign.thumbnail.png' alt='Redesign Brushes' /></p>
<p>Вы сделали (ре-)дизайн сайта и хотите похвастаться своим достижением? Не надо спамить социалки &#8211; редкий юзер оценит Ваши труды. Для этих целей есть множество подходящих сайтов, и о них далее&#8230;<br />
<span id="more-105"></span><br />
Их достаточно, правда не все любят &#8220;нашего&#8221; брата &#8211; так, что описание лучше придумать позаковыристей и на английском, и так &#8211; поехали:</p>
<ol>
<li><a href="http://www.beinspired.ru">BeInspired (RUS)</a></li>
<li><a href="http://bestwebgallery.com">Best Web Gallery &#8211; CSS &amp; Flash Design Inspiration</a></li>
<li><a href="http://www.cssbased.com/">CSS Based</a></li>
<li><a href="http://csscreme.com">CSS Creme</a></li>
<li><a href="http://www.cssbeauty.com/">CSS Beauty Gallery Entries</a></li>
<li><a href="http://www.cssblast.ru">CSS Blast (RUS)</a></li>
<li><a href="http://www.css-design-yorkshire.com/">CSS Design Yorkshire</a></li>
<li><a href="http://www.csselite.com">CSS Gallery &#8211; web design gallery</a></li>
<li><a href="http://www.cssheaven.com">CSS Gallery Web Design Gallery For Inspiration</a></li>
<li><a href="http://www.cssremix.com">CSS Remix</a></li>
<li><a href="http://cssbox.ru">css|box (RUS)</a></li>
<li><a href="http://cssvault.com">CSS Vault Gallery</a></li>
<li><a href="http://www.cssgaleri.com">CSSGaleri.Com</a></li>
<li><a href="http://www.designexpanse.com">Design Expanse &#8211; Best web design resource from Pakistan</a></li>
<li><a href="http://www.designshack.co.uk/tp/">Design Shack Blog</a></li>
<li><a href="http://www.stylegala.com">Stylegala | gallery</a></li>
<li><a href="http://www.unmatchedstyle.com">Unmatched Style | Gallery</a></li>
<li><a href="http://www.siti-web-design.com/gallery">Web Design Gallery</a></li>
</ol>
<p><strong>updated</strong>: Спасибо Хабру &#8211; добавил еще 6 сайтов, включая отечественного производителя.</p>
<p>Те кто предпочитает читать новости в RSS формате я собрал OPML файлик (19-ым в списке каналов идет мой собственный блог ;) ): <a href='http://anton.shevchuk.name/wp-content/uploads/2007/12/reader-subscriptions.xml' title='18-CSS-design-galleries'>18-CSS-design-galleries</a></p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/html-and-css/css-image-gallery/" title="Гламурная галерея картинок на CSS">Гламурная галерея картинок на CSS</a></li><li><a href="http://anton.shevchuk.name/design/seductive-rss/" title="Аппетитная RSS иконка">Аппетитная RSS иконка</a></li><li><a href="http://anton.shevchuk.name/wordpress/free-wordpress-theme/" title="Отдам тему для Wordpress в хорошие руки">Отдам тему для Wordpress в хорошие руки</a></li><li><a href="http://anton.shevchuk.name/underground/plagiat-design/" title="Плагиат добрался до дизайна">Плагиат добрался до дизайна</a></li><li><a href="http://anton.shevchuk.name/html-and-css/css-gradient/" title="CSS градиент">CSS градиент</a></li><li><a href="http://anton.shevchuk.name/html-and-css/new-design/" title="Свершилось&#8230;">Свершилось&#8230;</a></li><li><a href="http://anton.shevchuk.name/php/essential-cheatsheets/" title="Шпаргалки по PHP, HTML, CSS, Javascript, MySQL и SVN">Шпаргалки по PHP, HTML, CSS, Javascript, MySQL и SVN</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/internet/12-design-galleries/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Новый сервис &#8211; строим графики online</title>
		<link>http://anton.shevchuk.name/google/charts-online/</link>
		<comments>http://anton.shevchuk.name/google/charts-online/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 15:54:33 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/internet/google/charts-online/</guid>
		<description><![CDATA[Совсем недавно я писал о новом сервисе от Google &#8211; Charts API. А теперь пишу о старте нового проекта основанного на данном API: Hohli Charts. На данный момент проект находиться на стадии alpha разработки и в нем реализованы далеко не все возможности Charts API (что не удивительно &#8211; API на свет появилось только 6-го числа [...]]]></description>
			<content:encoded><![CDATA[<p align="center">
<a href='http://charts.hohli.com' title='Hohli Charts'><img src='http://anton.shevchuk.name/wp-content/uploads/2007/12/graph.png' alt='Hohli Charts' /></a>
</p>
<p>Совсем недавно <a href="http://anton.shevchuk.name/internet/google/google-chart-api/">я писал о новом сервисе от Google &#8211; Charts API</a>. А теперь пишу о старте нового проекта основанного на данном API: <a href="http://charts.hohli.com" title="Hohli Charts">Hohli Charts</a>.</p>
<p>На данный момент проект находиться на стадии alpha разработки и в нем реализованы далеко не все возможности Charts API (что не удивительно &#8211; API на свет появилось только 6-го числа ;)). В дальнейшем постараюсь реализовать весь функционал, а пока <a href="http://charts.hohli.com" title="Hohli Charts">милости прошу</a>&#8230;</p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/javascript/google-closure-for-beginners-with-examples/" title="Google Closure руководство для начинающих">Google Closure руководство для начинающих</a></li><li><a href="http://anton.shevchuk.name/javascript/update-charts-hohli-com/" title="Обновление сервиса Charts.HoHli.com">Обновление сервиса Charts.HoHli.com</a></li><li><a href="http://anton.shevchuk.name/google/the-official-google-blog/" title="The Official Google Blog">The Official Google Blog</a></li><li><a href="http://anton.shevchuk.name/javascript/jquery-and-google-search-api-or-yahoo-search-api-yahoo-search-api/" title="jQuery + AJAX + (Google Search API || Yahoo Search API)">jQuery + AJAX + (Google Search API || Yahoo Search API)</a></li><li><a href="http://anton.shevchuk.name/internet/analyser/" title="Analyser &#8211; специализированный поиск">Analyser &#8211; специализированный поиск</a></li><li><a href="http://anton.shevchuk.name/google/update-google-pr/" title="Обновление Google PR">Обновление Google PR</a></li><li><a href="http://anton.shevchuk.name/google/inside-adsense-now-in-russian/" title="Блог Inside AdSense теперь на русском языке">Блог Inside AdSense теперь на русском языке</a></li><li><a href="http://anton.shevchuk.name/google/google-chart-api/" title="Google Chart API">Google Chart API</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/google/charts-online/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Свершилось&#8230;</title>
		<link>http://anton.shevchuk.name/html-and-css/new-design/</link>
		<comments>http://anton.shevchuk.name/html-and-css/new-design/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 11:31:03 +0000</pubDate>
		<dc:creator>Anton Shevchuk</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://anton.shevchuk.name/uncategorized/%d1%81%d0%b2%d0%b5%d1%80%d1%88%d0%b8%d0%bb%d0%be%d1%81%d1%8c/</guid>
		<description><![CDATA[Дошли у меня руки до обновления своего блога, и решил я не только wordpress обновить до версии 2.3.1, но и дизайн сделать более дружелюбным. Так что прошу в гости &#8211; критика приветствуется, комментарии требуются :) &#8230; Немного попозже расскажу о истории создания данного дизайна&#8230; Другие посты на эту темуBest Ukrainian Blog Awards 2008Читателям блога баннер [...]]]></description>
			<content:encoded><![CDATA[<p align='center'><img src='http://anton.shevchuk.name/wp-content/uploads/2007/12/screenshot.jpg' alt='New Design Screenshot' /></p>
<p>Дошли у меня руки до обновления своего блога, и решил я не только wordpress обновить до версии 2.3.1, но и дизайн сделать более дружелюбным. Так что прошу в гости &#8211; критика приветствуется, комментарии требуются :) &#8230;</p>
<p><span id="more-86"></span></p>
<p>Немного попозже расскажу о истории создания данного дизайна&#8230;</p>
<h3  class="related_post_title">Другие посты на эту тему</h3><ul class="related_post"><li><a href="http://anton.shevchuk.name/internet/best-ukrainian-blog-awards-2008/" title="Best Ukrainian Blog Awards 2008">Best Ukrainian Blog Awards 2008</a></li><li><a href="http://anton.shevchuk.name/wordpress/bonus-for-readers/" title="Читателям блога баннер в подарок">Читателям блога баннер в подарок</a></li><li><a href="http://anton.shevchuk.name/design/seductive-rss/" title="Аппетитная RSS иконка">Аппетитная RSS иконка</a></li><li><a href="http://anton.shevchuk.name/internet/mir-trud-may-analyse-optimaze/" title="Мир, Труд, Май &#8211; Анализируй и продвигай">Мир, Труд, Май &#8211; Анализируй и продвигай</a></li><li><a href="http://anton.shevchuk.name/wordpress/free-wordpress-theme/" title="Отдам тему для Wordpress в хорошие руки">Отдам тему для Wordpress в хорошие руки</a></li><li><a href="http://anton.shevchuk.name/underground/plagiat-design/" title="Плагиат добрался до дизайна">Плагиат добрался до дизайна</a></li><li><a href="http://anton.shevchuk.name/internet/ms-office-onenote-new-blogger-weapon/" title="MS Office OneNote на службе блогера">MS Office OneNote на службе блогера</a></li><li><a href="http://anton.shevchuk.name/internet/12-design-galleries/" title="12 сайтов, которые хотят увидеть ваш дизайн">12 сайтов, которые хотят увидеть ваш дизайн</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://anton.shevchuk.name/html-and-css/new-design/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>

