<?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; Web-разработка</title>
	<atom:link href="http://buzochok.org.ua/category/web-razrabotka/feed/" rel="self" type="application/rss+xml" />
	<link>http://buzochok.org.ua</link>
	<description>Для интересных людей</description>
	<lastBuildDate>Wed, 21 Apr 2010 16:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Web-Develop. Ubuntu Edition</title>
		<link>http://buzochok.org.ua/web-develop-ubuntu-edition/</link>
		<comments>http://buzochok.org.ua/web-develop-ubuntu-edition/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 05:32:06 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[пропаганда]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=1132</guid>
		<description><![CDATA[Что меня всегда держало в Windows &#8211; так это Photoshop :) Я так привязался к этому монстрику, что переезд на GIMP оказался сущим мучением. С вектором как-то проще, не так уж и часто я что-то рисую, я ни разу не художник и не иллюстратор. Inkscape с успехом заменил CorelDraw. Сложность, как ни странно, не в [...]]]></description>
			<content:encoded><![CDATA[<p>Что меня всегда держало в Windows &#8211; так это Photoshop :) Я так привязался к этому монстрику, что переезд на GIMP оказался сущим мучением. С вектором как-то проще, не так уж и часто я что-то рисую, я ни разу не художник и не иллюстратор. Inkscape с успехом заменил CorelDraw. Сложность, как ни странно, не в привычке и не в кошмарном интерфейсе. Фотошоп реально удобен. Японамать, чтобы в Гимпе нарисовать круг, нужно создать выделение, поместить его на отдельный слой, сделать его плавающим и создать заливку или обводку по контуру. В итоге получаем неизменяемый растр. Фааааа, у меня таких примеров накопились десятки (гнев-гнев-гнев).</p>
<p>Около года я постепенно заставлял себя пользоваться исключительно Линуксом для работы, со всеми вытекающими последствиями. Привык к уёбищному dc-клиенту, невероятным тормозам флеша в Фаерфоксе, тормозам прорисовки интерфейса Гнома&#8230; Что ж&#8230; Я легко меняю привычки. Бриться топором иногда неудобно, но если приловчиться, то очень даже ничего! Но последний круг ада пришёлся на веб-разработку. По ощущениям можно сравнить с переходом от Дримвивера на блокнот с подсветкой. Чувствуешь себя нереально крутым извращенцем :) В общем перепробовав всё, на что хватило времени и желания, я остановился на волшебном наборе инструментов для разработки сайтов в Линуксе. Поэтому если ваш род деятельности пересекается с вебом, вероятно вам будет интересно. <span id="more-1132"></span></p>
<p>Мой фаворит &#8211; мультиплатформенная среда разработки <a href="http://www.eclipse.org/">Eclipse</a> и плагин <a href="http://www.aptana.org/">Aptana Studio</a> под него. Eclipse вообще перевернул мой подход к веб-разработке. Рефакторинг, уместные подсказки и автодополнение кода, очень удобное рабочее пространство и много вкусных плюшек для программиста любой категории. Тысячи плагинов могут превратить Eclipse хоть в тостер, хоть в межконтинентальную ракету. Однозначно рекомендую для работы. Есть, конечно, и недостатки, один из которых &laquo;Eclipse написан на Java, поэтому, сука, медленный&raquo;. Но это не страшно. При разработке качественного проекта спешить некуда :)</p>
<p>К <a href="http://www.gimp.org/">Гимпу</a> всё-таки можно привыкнуть. Им даже можно пользоваться. В нём даже можно вполне успешно делать рекламные листовки и рисовать графику для сайтов. После Фотошопа придётся учиться компьютерной графике практически заново. Зато Гимп мало весит, быстро запускается и ещё быстрее обрабатывает тяжёлую графику. Читает PSD-файлы(!) Нет худа без добра.</p>
<p><a href="http://www.inkscape.org/">Inkscape</a> похож на CorelDraw. Как-то сразу с ним подружился, хотя регулярно матерю за хреновую реализацию градиентов. Я даже смог недавно нарисовать в нём логотип. Основной формат &mdash; SVG, что здорово, терпимо к гомосексуализму и очень международно.</p>
<p>В качестве CMS я давно выбрал <a href="http://wordpress.org/">WordPress</a> (беру у <a href="http://lecactus.ru/">Лекактуса</a>). Можно такие холивары разводить на тему использование блогодвижка в роли CMS&#8230; ммм, пальчики оближешь. Честно, я всеми силами хотел дружить с <a href="http://drupal.org/">Drupal</a>&#8216;ом, но какая же у него конченая темизация! И какая <a href="http://www.joomla.org/">Joomla</a> школотная, и какая у неё ужасная админка. И какой WordPress после знакомства с этими и другими движками няшный и податливый. После внимательного чтения его <a href="http://codex.wordpress.org/Main_Page">Кодекса</a>, можно просто творить чудеса сайтостроения.</p>
<p>Итого: <a href="http://www.ubuntu.com/">Ubuntu</a> + <a href="http://www.eclipse.org/">Eclipse</a> (feat. <a href="http://www.aptana.org/">Aptana Studio</a>) + <a href="http://www.gimp.org/">GIMP</a> + <a href="http://www.inkscape.org/">Inkscape</a> + <a href="http://wordpress.org/">Wordpress</a> позволяют мне решать весь спектр задач. С помощью этих инструментов я создаю рекламу, верстаю сайты, программирую, развлекаюсь, повышаю свой уровень и многое другое. Я это сделал! Я целиком и полностью работаю в Линуксе, не изменяя ему с НЕЙ (какой поворот). Но зачем всё это? Зачем такие жертвы? Думаю, что это путь истинного гурмана-нонконформиста-садомазохиста. Это как минимум интересно. Но ещё интересней быть веб-разработчиком/веб-дизайнером и жить в Линуксе. Таких единицы и это чувство избранности мне нравится :) И самое важное &#8211; ЭТО ВОЗМОЖНО. И как бонус &mdash; можно нахуй посылать все проверки от налоговой. Свободное и бесплатное ПО гарантирует это право.</p>
<p>P.S. Пользуясь случаем, хочу поблагодарить разработчиков плагина <a href="http://getfirebug.com/">Firebug</a> для любимого Firefox&#8217;а. Без него жизнь тысяч веб-разработчиков была бы ещё более печальной.</p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/web-develop-ubuntu-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Спрайты в CSS</title>
		<link>http://buzochok.org.ua/sprajty-v-css/</link>
		<comments>http://buzochok.org.ua/sprajty-v-css/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 09:33:10 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[рецепты]]></category>
		<category><![CDATA[спрайты]]></category>

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

		<guid isPermaLink="false">http://buzochok.org.ua/?p=952</guid>
		<description><![CDATA[Задача
Добиться, чтобы поля ввода находились друг под другом, и при этом их положение определялось максимальной длиной заголовка поля слева. Решение не должно использовать таблиц и Javascript.


Решение
Шаг первый
Создадим HTML-разметку.
&#60;div class=&#34;field&#34;&#62;
   &#60;label for=&#34;n&#34;&#62;Имя&#60;/label&#62;
   &#60;input type=&#34;text&#34; id=&#34;n&#34; /&#62;
&#60;/div&#62;
&#60;div class=&#34;field&#34;&#62;
   &#60;label for=&#34;ln&#34;&#62;Фамилия&#60;/label&#62;
   &#60;input type=&#34;text&#34; id=&#34;ln&#34; /&#62;
&#60;/div&#62;
&#60;div class=&#34;field&#34;&#62;
   &#60;label for=&#34;a&#34;&#62;Место [...]]]></description>
			<content:encoded><![CDATA[<h3>Задача</h3>
<p>Добиться, чтобы поля ввода находились друг под другом, и при этом их положение определялось максимальной длиной заголовка поля слева. Решение не должно использовать таблиц и Javascript.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/forms_1.jpg" alt="forms_1" title="forms_1" width="600" height="233" class="alignnone size-full wp-image-953" /></p>
<p><span id="more-952"></span></p>
<h3>Решение</h3>
<p><strong>Шаг первый</strong></p>
<p>Создадим HTML-разметку.</p>
<pre class="brush: xml;">&lt;div class=&quot;field&quot;&gt;
   &lt;label for=&quot;n&quot;&gt;Имя&lt;/label&gt;
   &lt;input type=&quot;text&quot; id=&quot;n&quot; /&gt;
&lt;/div&gt;
&lt;div class=&quot;field&quot;&gt;
   &lt;label for=&quot;ln&quot;&gt;Фамилия&lt;/label&gt;
   &lt;input type=&quot;text&quot; id=&quot;ln&quot; /&gt;
&lt;/div&gt;
&lt;div class=&quot;field&quot;&gt;
   &lt;label for=&quot;a&quot;&gt;Место жительства&lt;/label&gt;
   &lt;input type=&quot;text&quot; id=&quot;a&quot; /&gt;
&lt;/div&gt;</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/forms_2.jpg" alt="forms_2" title="forms_2" width="600" height="233" class="alignnone size-full wp-image-954" /></p>
<p><strong>Шаг второй</strong></p>
<p>Выровняем содержимое каждого дива по правому краю и назначим ему обновление потока.</p>
<pre class="brush: css;">.field {clear:both; text-align:right;}</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/forms_6.jpg" alt="forms_6" title="forms_6" width="600" height="233" class="alignnone size-full wp-image-957" /></p>
<p><strong>Шаг третий</strong></p>
<p>Заставим каждый элемент label «утечь» влево.</p>
<pre class="brush: css;">.field {clear:both; text-align:right;}
label {float:left;}</pre>
<p>Теперь каждый заголовок встал напротив соответствующего поля, но ширина формы стала 100% от ширины родительского элемента.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/forms_4.jpg" alt="forms_4" title="forms_4" width="600" height="233" class="alignnone size-full wp-image-955" /></p>
<p><strong>Шаг четвертый</strong></p>
<p>Для того, чтобы прижать поля к заголовкам, обернём всю конструкцию блоком:</p>
<pre class="brush: xml;">&lt;div class=&quot;main&quot;&gt;
   &lt;div class=&quot;field&quot;&gt;
      &lt;label for=&quot;n&quot;&gt;Имя&lt;/label&gt;
      &lt;input type=&quot;text&quot; id=&quot;n&quot; /&gt;
   &lt;/div&gt;
   &lt;div class=&quot;field&quot;&gt;
      &lt;label for=&quot;ln&quot;&gt;Фамилия&lt;/label&gt;
      &lt;input type=&quot;text&quot; id=&quot;ln&quot; /&gt;
   &lt;/div&gt;
   &lt;div class=&quot;field&quot;&gt;
      &lt;label for=&quot;a&quot;&gt;Место жительства&lt;/label&gt;
      &lt;input type=&quot;text&quot; id=&quot;a&quot; /&gt;
   &lt;/div&gt;
&lt;/div&gt;</pre>
<p>Добавим в CSS обтекание для этого блока:</p>
<pre class="brush: css;">.field {clear:both; text-align:right;}
label {float:left;}
.main {float:left}</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/forms_5.jpg" alt="forms_5" title="forms_5" width="600" height="233" class="alignnone size-full wp-image-956" /></p>
<p><strong>Шаг пятый</strong></p>
<p>Теперь видно, что из-за float элементы перестали находится на одной линии. Vertical-align, к сожалению, работать не будет, но можно воспользоваться line-height.</p>
<p>Также зададим отступ между заголовком и полем:</p>
<pre class="brush: css;">.field {clear:both; text-align:right; line-height:25px;}
label {float:left; padding-right:10px;}
.main {float:left}</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/11/forms_1.jpg" alt="forms_1" title="forms_1" width="600" height="233" class="alignnone size-full wp-image-953" /></p>
<p>Крутняк, да?</p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/vyravnivanie-polej-formy-s-pomoshhyu-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Осваиваем CSS. Часть 2</title>
		<link>http://buzochok.org.ua/osvaivaem-css-chast-2/</link>
		<comments>http://buzochok.org.ua/osvaivaem-css-chast-2/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 12:30:04 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[верстка]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=921</guid>
		<description><![CDATA[На прошлом занятии мы разобрали три прикольные пипки CSS &#8212; padding/margin, float и выравнивание. Сегодня разберём ещё 4. Кстати, это не последняя статья из цикла &#171;Осваиваем CSS&#187;. Надо ещё разобраться с бэкграундами, спрайтами, тонкостями позиционирования и т.д. и т.п. Так что следите за обновлениями. 
На самом деле, я читаю комментарии, так что можете задавать вопросы [...]]]></description>
			<content:encoded><![CDATA[<p>На <a href="http://buzochok.org.ua/osvaivaem-css-chast-1/">прошлом занятии</a> мы разобрали три прикольные пипки CSS &mdash; padding/margin, float и выравнивание. Сегодня разберём ещё 4. Кстати, это не последняя статья из цикла &laquo;Осваиваем CSS&raquo;. Надо ещё разобраться с бэкграундами, спрайтами, тонкостями позиционирования и т.д. и т.п. Так что следите за обновлениями. </p>
<p>На самом деле, я читаю комментарии, так что можете задавать вопросы по этом материалу и корректировать приоритетность написания статей. Если кому-то нужно подробно объяснить, скажем, работу с фоновыми изображениями или если есть вопросы по синтаксису CSS и в целом по вёрстке &mdash;спрашивайте, я обязательно отвечу.</p>
<p><span id="more-921"></span></p>
<h3>1. Списки</h3>
<p>Нумерованный список &lsaquo;ol&rsaquo; это список, значения которого помечаются цифрами. Что логично, да?</p>
<p>Ненумерованный список &lsaquo;ul&rsaquo; это список, значения которого помечаются маркерами. По умолчанию, оба вида списков простые и не гламурные. Но с помощью CSS мы можем без особых усилий изменить их внешний вид.</p>
<p>Для сохранения семантики кода, списки должны использоваться только для контента, который попадает под понятие списка. Но это понятие можно также расширить колонками и навигацией. Сейчас всё увидите.</p>
<h4>Кастомизация ненумерованного списка</h4>
<p>Стандартные маркеры слишком унылые и не привлекают к себе никакого внимания. Но это исправимо с помощью простой техники, которая называется &laquo;прячем стандартные маркеры и замещаем их фоновыми картинками&raquo;.</p>
<p>Вот CSS:</p>
<pre class="brush: css;">ul.product_checklist {
list-style: none; /*-- Убираем стандартные маркеры --*/
margin: 0;
padding: 0;
}

ul.product_checklist li {
padding: 5px 5px 5px 25px; /*-- Добавляем паддинг вокруг каждого маркера --*/
margin: 0;
background: url(icon_checklist.gif) no-repeat left center; /*-- Ну и ставим какую-нибудь фоновую картинку в роли маркера --*/
}</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/4_a.png" alt="4_a" title="4_a" width="500" height="386" class="alignnone size-full wp-image-922" /></p>
<h4>Ненумерованный список в роли навигационного меню</h4>
<p>Сейчас многие CSS-меню построены на списках. Наверное потому-что это удобно. Сейчас мы научимся из обычного списка делать горизонтальное навигационное меню.</p>
<p>HTML: начнём с простого ненумерованного списка с ссылками:</p>
<pre class="brush: xml;">&lt;ul id=&quot;topnav&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Главная&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Услуги&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Портфолио&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;О нас&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Контакты&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>CSS: убираем обычные маркеры (как мы делали выше) параметром <strong>list-style: none</strong>. Потом делаем список горизонтальным политически правильным float&#8217;ом :) В итоге значения списка будет размещаться горизонтально, слева направо:</p>
<pre class="brush: css;">ul#topnav {
list-style: none;
float: left;
width: 960px;
margin: 0; padding: 0;
background: #f0f0f0;
border: 1px solid #ddd;
}

ul#topnav li {
float: left;
margin: 0; padding: 0;
border-right: 1px solid #ddd;
}

ul#topnav li a {
float: left;
display: block;
padding: 10px;
color: #333;
text-decoration: none;
}

ul#topnav li a:hover {
background: #fff;
}</pre>
<h3>2. Стилизированные заголовки</h3>
<p>Теги заголовков очень важны в SEO. Но стандартные заголовки выглядят слишком уныло. CSS спешит на помощь! Можно описать стили как для заголовков, так и для inline-элементов. Сделаем всё красивенько.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/5_a.png" alt="5_a" title="5_a" width="500" height="352" class="alignnone size-full wp-image-924" /></p>
<p>HTML:</p>
<pre class="brush: xml;">&lt;h1&gt;Осваиваем &lt;span&gt;CSS&lt;/span&gt; &lt;small&gt;Прикольчики, фишечки и заманушечки&lt;/small&gt;&lt;/h1&gt;</pre>
<p>Ну и CSS:</p>
<pre class="brush: css;">h1 {
font: normal 5.2em Georgia, &quot;Times New Roman&quot;, Times, serif;
margin: 0 0 20px;
padding: 10px 0;
font-weight: normal;
text-align: center;
text-shadow: 1px 1px 1px #ccc; /*-- Не поддерживается IE --*/
}

h1 span {
color: #cc0000;
font-weight: bold;

}
h1 small {
font-size: 0.35em;
text-transform: uppercase;
color: #999;
font-family: Arial, Helvetica, sans-serif;
text-shadow: none;
display: block; /*-- Выдаёт тегу отдельную строку--*/
}</pre>
<h3>3. Overflow (переполнение)</h3>
<p>Свойства <strong>overflow</strong> используются очень часто. Что это? W3Schools.com говорит, что &laquo;свойство overflow определяет что случится с контентом, если он выйдет за пределы своего блока&raquo;. Вот парочка примеров того, как это происходит:</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/6_a.png" alt="6_a" title="6_a" width="500" height="419" class="alignnone size-full wp-image-925" /></p>
<p>Внешне, <strong>overflow: auto</strong> очень похож на iframe, но на самом деле он гораздо полезнее и дружественней к SEO. Он автоматически добавляет полосы прокрутки (и вертикальные, и горизонтальные) когда контент выходит за пределы дозволенного.</p>
<p>Свойство <strong>overflow: scroll</strong> работает практически так же, только полосы прокрутки отображает в любом случае, независимо от количества содержимого.</p>
<p>А свойство <strong>overflow: hidden</strong> прячет всё, что не поместилось в блок.</p>
<p><strong>Полезная подсказочка:</strong> у вас несчастные случаи на стройке были? Ну то есть когда родительский элемент не полностью обволакивает дочерний? Ну то есть как на картинке? Можно это быстренько пофиксить, сделав родительский контейнер плавающим элементом и установив для него свойство overflow: hidden! В общем меньше слов и смотрим на картинку:</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/6_b.png" alt="6_b" title="6_b" width="500" height="254" class="alignnone size-full wp-image-926" /></p>
<h3>4. Позиционирование</h3>
<p>Позиционирование (relative-относительное, absolute-абсолютное и fixed-фиксированное) одно из самых мощных свойств CSS. Оно позволяет располагать элементы, используя для этого систему координат, что даёт нам возможность расположить что угодно и как нам угодно.</p>
<p>Для этого нужно сделать три вещи:<br />
<strong>1. Установить координаты;</strong><br />
<strong>2. Правильно выбрать тип позиционирования</strong>: relative, absolute, fixed или static;<br />
<strong>3. Установить значение свойства z-index</strong> (не обязательно).</p>
<p>Используя <strong>position: relative</strong>, элемент находится в зависимом положении. Если этот элемент находится внутри другого блока и если его подвинуть на 10 пикселей вниз и на 10 пикселей вправо, то положение элемента изменится относительно положения верхнего левого угла блока, в котором он находится.</p>
<p>Относительное позиционирование также часто используется для установки новой точки начала координат вложенных элементов, спозиционированных абсолютно. Надо как-то проще выразить&#8230; По-умолчанию, начальная точка расположения каждого элемента &mdash; верхний левый угол окна браузера. Когда вы даёте элементу положение relative, точка отсчёта всех вложенных элементов с положением absolute будет привязана к своему родителю. То есть положение будет 0,0 относительно родительского контейнера, а не окна браузера. Найс?</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/7_a.png" alt="7_a" title="7_a" width="500" height="385" class="alignnone size-full wp-image-928" /></p>
<p>Элемент со значением <strong>position: absolute</strong> может располагаться где угодно, используя координаты <strong>x</strong> (горизонталь, слева направо) и <strong>y</strong> (вертикаль, сверху вниз). По умолчанию, исходное положение 0,0 &mdash; верхний левый угол окна браузера. Игнорирует, кстати, все правила обтекания и не зависит от окружающих элементов.</p>
<p>Исходное положение элемента с <strong>position: fixed</strong> тоже верхний левый угол окна браузера. Разница в том, что фиксированный элемент остаётся на своём месте всегда и в любом случае, даже когда вы прокручиваете страницу.</p>
<p>Свойство <strong>z-index</strong> указывает на порядок отображения слоёв. Кто работал с Фотошопом &mdash; знает как они работают. Чем выше значение, тем выше положение элемента. Можно сравнить с изображениями на прозрачной плёнке. Когда таких плёнок несколько, важно правильно расположить их друг над другом, чтобы получить необходимое итоговое изображение.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/7_b.png" alt="7_b" title="7_b" width="500" height="267" class="alignnone size-full wp-image-930" /></p>
<p>Хух. Пока всё. Домашнее задание &mdash; разобраться с этим всем самостоятельно. А в следующий раз мы поговорим о фоновых изображениях и спрайтах. Так что самое интересное впереди.</p>
<p>Если есть неточности или неясности &mdash; пишите в комментариях.</p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/osvaivaem-css-chast-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Тривиальные задачи по вёрстке</title>
		<link>http://buzochok.org.ua/trivialnye-zadachi-po-vyorstke/</link>
		<comments>http://buzochok.org.ua/trivialnye-zadachi-po-vyorstke/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 15:46:07 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Находки]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[верстка]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=907</guid>
		<description><![CDATA[В процессе подготовки второй статьи по азам CSS, мне захотелось поделиться с вами часто используемыми приёмами в HTML/CSS-вёрстке.
Когда-то меня вводила в ступор необходимость прилепить футер к нижней границе браузера, или разместить какой-нибудь блок строго по центру экрана. И я думаю, что не один такой :)

Макет с одной колонкой по центру
Стандартная задача — разместить контент в [...]]]></description>
			<content:encoded><![CDATA[<p>В процессе подготовки второй <a href="http://buzochok.org.ua/osvaivaem-css-chast-1/">статьи по азам CSS</a>, мне захотелось поделиться с вами часто используемыми приёмами в HTML/CSS-вёрстке.</p>
<p>Когда-то меня вводила в ступор необходимость прилепить футер к нижней границе браузера, или разместить какой-нибудь блок строго по центру экрана. И я думаю, что не один такой :)</p>
<p><span id="more-907"></span></p>
<h4>Макет с одной колонкой по центру</h4>
<p>Стандартная задача — разместить контент в середине экрана. Контентная часть может быть фиксированной или резиновой, а еще надо вытянуть центральный блок в высоту на весь экран…</p>
<pre class="brush: xml;">&lt;div class=&quot;wrap&quot;&gt;
&lt;div class=&quot;contentdiv&quot;&gt;
Этот блок фиксированного или относительного размера всегда будет горизонтально отцентрирован. &lt;br /&gt;&lt;br /&gt;
А еще он растянут на всю высоту экрана.
&lt;/div&gt;
&lt;/div&gt;</pre>
<pre class="brush: css;">html, body {height: 100%;}
.wrap {
/*центрируем*/
position: relative;
width: 50%; /*могут быть и пиксели*/
margin: 0px auto ;

/*вытягиваем в высоту*/
height: auto !important;
height: 100%;
min-height: 100%;

/*украшательства*/
border-left: 1px solid #69b401;
border-right: 1px solid #69b401;
}

.contentdiv {padding: 10px;}</pre>
<p>Тут два вложенных блока, наружный — обёртка, который позиционирует контентную часть, внутренний — сам контент. Выдвигаем его на середину, указываем ему отступ margin: 0px auto; и ширину width: 50%; размеры могут быть как в px, так и в %. Растягиваем по высоте: для IE и для всего остального, как обычно, разные способы, поэтому высоту указываем 4 раза — 3 раза в блоке и 1 раз в html, body.</p>
<p><strong>Почему именно так?</strong><br />
Чтобы контент не проваливался в нормальных браузерах, пишем height: auto !important, а ниже — height: 100%. Нормальные браузеры понимают !important как более высокий приоритет и используют его, а IE6, в следствие своей безумности, переписывает «нижним значением» «важное значение»…</p>
<p>Для обёртки нельзя использовать вертикальные отступы, это даст ненужный скролл, поэтому все необходимые отступы используем во внутреннем блоке.</p>
<p><a href="http://buzochok.org.ua/wp-content/uploads/files/one-col.html">Наглядный пример</a>.</p>
<h4>Футер</h4>
<p>Футер, который находится всегда внизу, тоже одна из тривиальных задач, которая у многих вызывает ступор. Способ растягивания контента на всю страницу, описанный выше, прекрасно дополняется правильным футером.</p>
<p>Внутри блока-обёртки &mdash; wrap:</p>
<pre class="brush: xml;">&lt;div class=&quot;empty_inner&quot; style=&quot;&quot;&gt; &lt;/div&gt;</pre>
<p>И сам footer после этого блока:</p>
<pre class="brush: xml;">&lt;div id=&quot;footer&quot;&gt;
Копирайты всякие
&lt;/div&gt;</pre>
<p>Поскольку контентная часть у нас растянута на всю страницу в высоту, то футер будет сразу же после неё. Тогда появляется ненужный скролл и мы сразу же от него избавляемся, отодвигая блок наверх, на высоту футера.</p>
<pre class="brush: css;">#footer {
position: relative;
height: 20px;
margin-top: -21px;
line-height: 20px;
vertical-align: middle;
border-top: 1px solid #e8e9e8;
width: 100%;
text-align: right;
}</pre>
<p>Указываем высоту блока и поднимаем блок на эту высоту вверх с помощью верхнего отрицательного margin. В данном случае высота на единицу больше из-за бордера, также если использовать для футера еще и паддинги, то они сплюсуются с высотой, и в margin, соответственно, надо будет указывать общее значение.</p>
<p>Также его можно поднять с помощью отрицательного нижнего margin для блока обёртки .wrap:</p>
<pre class="brush: css;">margin:0 auto -21px;</pre>
<p>Смысл блока, который находится в контентной части &mdash; не дать содержанию сайта залезть на футер когда страница растянется, просто указываем высоту нашего блока:</p>
<pre class="brush: css;">.empty_inner {
height:20px;
}</pre>
<p><a href="http://buzochok.org.ua/wp-content/uploads/files/footer.html">Пример</a>.</p>
<h4>Попап</h4>
<p>Довольно часто встречающийся вопрос, как разместить небольшой блок фиксированного размера по центру экрана:</p>
<pre class="brush: xml;">&lt;div class=&quot;popup&quot;&gt;Какой-то контент&lt;/div&gt;</pre>
<p>Вот такой css для блока:</p>
<pre class="brush: css;">.popup {
position: absolute;
top: 50%;
left: 50%;
width: 360px;
height: 180px;
margin-left: -180px;
margin-top: -90px;
border: 1px solid #69b401;
padding: 5px;
}</pre>
<p>Что мы тут видим? Позиционируем абсолютно и отправляем в центральную точку экрана &mdash; 50% 50%. Получается, что блок висит левым углом чётко по центру экрана. Естественно это нас не устроит. Поскольку размеры блока нам известны, то мы просто отодвигаем его влево и вверх на нужное нам число пикселей. Для этого лучше всего подойдет margin, он может принимать отрицательные значения, которые нам и нужны.</p>
<p><a href="http://buzochok.org.ua/wp-content/uploads/files/popup.html">Пример</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/trivialnye-zadachi-po-vyorstke/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Осваиваем CSS. Часть 1</title>
		<link>http://buzochok.org.ua/osvaivaem-css-chast-1/</link>
		<comments>http://buzochok.org.ua/osvaivaem-css-chast-1/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 11:30:12 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[верстка]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=849</guid>
		<description><![CDATA[Ни для кого не секрет, что таблицами верстают только застрявшие в технологиях 90-х фрики, которые не хотят приложить немного усилий для ознакомления с CSS. Связка XHTML/CSS позволяет творить чудеса, а если добавить ещё и JavaScript &#8212; полёт фантазии не ограничен вообще ничем. 
Когда я только начинал знакомиться с каскадными таблицами (то бишь с CSS), доводилось [...]]]></description>
			<content:encoded><![CDATA[<p>Ни для кого не секрет, что таблицами верстают только застрявшие в технологиях 90-х фрики, которые не хотят приложить немного усилий для ознакомления с CSS. Связка XHTML/CSS позволяет творить чудеса, а если добавить ещё и JavaScript &mdash; полёт фантазии не ограничен вообще ничем. </p>
<p>Когда я только начинал знакомиться с каскадными таблицами (то бишь с CSS), доводилось самостоятельно, по крупицам собирать необходимые базовые сведения. Специализированные блоги, в основном, рассчитывают на подготовленного верстальщика. Но, что характерно, остаются вопросы, которые уже давно стыдно задавать, но ответы на которые хочется получить. Для таких людей, ну и для того, чтобы систематизировать собственную базу знаний, я подготовил эту статью. <span id="more-849"></span></p>
<p>Что же такое CSS? Это мост между программированием и дизайном, и каждый профессиональный веб-разработчик должен быть с ним знаком. Поэтому рекомендую открыть свой любимый текстовый редактор, желательно с подсветкой синтаксиса, и на практике повторять все приведённые примеры в этой статье. Начнём с фундаментальных понятий. Хотя, я рассчитываю на то, что вы в общих чертах уже знаете CSS, чтобы не объяснять с полного нуля, на уровне скобочек и подключения css-файла в html-файл. Также я не буду переводить терминологию, так как она стандартна и нигде никак не переводится. Сегодня мы разберём 3 базовых понятия CSS:</p>
<p><strong>1. Padding и margin<br />
2. Float<br />
3. Выравнивание</strong></p>
<h3>1. Padding и margin</h3>
<p>Большинство начинающих верстальщиков путают между собой понятия padding и margin, и используют их некорректно. Например, использование padding или margin для установки высоты объекта, при непонимании их природных свойств, часто приводит к ошибкам и несоответствиям между желаемым и действительным. Правильное понимание padding и margin очень важно в использовании CSS. Да? Да!</p>
<p><strong>Padding</strong> &mdash; это <strong>внутреннее</strong> пространство элемента, а <strong>margin</strong> &mdash; <strong>внешнее</strong>.</p>
<p>Чтобы увидеть разницу, установите какой-нибудь цвет фона и границ какому-нибудь элементу. В отличие от padding&#8217;а, на margin это никак не повлияет, потому-что он устанавливает как бы объём воздуха вокруг нашего элемента. Чтобы это было проще понять, посмотрите на картинку:</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/1_a.png" alt="1_a" title="1_a" width="500" height="384" class="alignnone size-full wp-image-855" /></p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/1_c.png" alt="1_c" title="1_c" width="500" height="265" class="alignnone size-full wp-image-857" /></p>
<p><em>Значения margin и padding указываются по часовой стрелке, начиная с верхней границы.</em></p>
<p><strong>Практический пример</strong>: Вот заголовок &lsaquo;h2&rsaquo; между двумя параграфами. Как видите, margin создаёт пустое пространство между ними, а padding как бы распирает сам элемент.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/1_b.png" alt="1_b" title="1_b" width="500" height="255" class="alignnone size-full wp-image-858" /></p>
<p>В приведённом выше примере, свойства margin и padding будут такими:</p>
<pre class="brush: css;">margin: 15px 0 15px 0;
padding: 15px 15px 15px 15px;</pre>
<p>Чтобы оптимизировать вышеприведённые строки кода, можно использовать сокращения записей. Это будет выглядеть так:</p>
<pre class="brush: css;">margin: 15px 0; /*-- top и bottom = 15px | right и left = 0 --*/
padding: 15px; /*-- top, right, bottom и left = 15px --*/</pre>
<p>Вот полный CSS-код нашего заголовка:</p>
<pre class="brush: css;">h2 {
background: #f0f0f0;
border: 1px solid #ddd;
margin: 15px 0;
padding: 15px;
}</pre>
<p><strong>Полезная подсказочка:</strong><br />
Имейте ввиду, что padding увеличивает общую ширину элемента. Например, если вы рассчитали, что ваш элемент должен занимать 100 пикселей в ширину, и если вы добавили padding слева и справа по 10 пикселей, то итоговая ширина элемента будет 120 пикселей, а не сто. Это надо учитывать в расчётах.</p>
<p><strong>100px (содержимое) + 10px (левый padding) + 10px (правый padding) = 120px (итоговая ширина элемента)</strong></p>
<p>Margin, однако, расширяет поле вокруг объекта, но не влияет непосредственно на сам объект. Надеюсь всё ясно и мы переходим дальше.</p>
<h3>2. Float</h3>
<p>Float &mdash; это ещё один чертовски важный элемент для построения веб-сайтов на CSS и может использоваться для выравнивания изображений, блоков разметки <em>(здесь и дальше я так обзываю понятие layouts)</em>, колонок и т.д. Если вы помните как выравнивать элементы по левой и правой стороне в HTML, то сразу же разберётесь как работают float&#8217;ы.</p>
<p>Свойство float указывает где будет &laquo;плавать&raquo; область с фиксированной шириной &mdash; слева, или справа, соответственно как именно будет обтекать контент вокруг него (а это официальное определение, я с него мало что понял).</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/2_a.png" alt="2_a" title="2_a" width="500" height="182" class="alignnone size-full wp-image-862" /></p>
<p>Значение <strong>float:left</strong> выравнивает элементы по левому краю, используется также для создания контейнера, в котором можно располагать блоки разметки и колонки. Лучше показать это картинкой:</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/2_b.png" alt="2_b" title="2_b" width="500" height="402" class="alignnone size-full wp-image-863" /></p>
<p>Значение <strong>float:right</strong> выравнивает элемент по правому краю с обтеканием вокруг него слева. </p>
<p><strong>Полезная подсказочка:</strong> Так как блок обычно занимает 100% ширины своего родительского контейнера, выравнивание элемента по правому краю сбрасывает его на следующую строку. Это также относится и к обычному тексту, который расположен рядом с ним. Как всегда, это проще показать, чем доступно описать.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/2_c.png" alt="2_c" title="2_c" width="500" height="335" class="alignnone size-full wp-image-864" /></p>
<p>Можно исправить этот баг/фичу двумя способами:<br />
1. Поменять порядок элементов в HTML-разметке так, чтобы плавающий элемент оказался строкой выше соседнего:</p>
<pre class="brush: xml;">&lt;img src=&quot;float-right.gif&quot; style=&quot;float: right;&quot; /&gt;
&lt;p&gt;&lt;!-- Текст какой-нибудь --&gt;&lt;/p&gt;</pre>
<p>2. Явно указать ширину соседнего элемента таким образом, чтобы суммарная ширина оказалась меньше или равнялась ширине родительского контейнера.</p>
<pre class="brush: xml;">&lt;div style=&quot;float: left; width: 300px;&quot;&gt;&lt;p&gt;&lt;!-- Текст какой-нибудь --&gt;&lt;/p&gt;&lt;/div&gt;
&lt;img src=&quot;float-right.gif&quot; style=&quot;float: right;&quot; /&gt;</pre>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/2_c2.png" alt="2_c2" title="2_c2" width="500" height="255" class="alignnone size-full wp-image-865" /></p>
<p>Как всегда, Internet Explorer 6 пытается усложнить нашу жизнь. На этот раз он удваивает margin плавающего элемента. Так что если вы указали margin в 5 пикселей, то в IE6 он будет все 10.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/upd_2_d.gif" alt="upd_2_d" title="upd_2_d" width="500" height="155" class="alignnone size-full wp-image-867" /></p>
<p>Конечно, со времён официального прекращения поддержки этого недобраузера Майкрософтом, можно забить на все его причуды. Но многие офисы настолько консервативны, что Explorer всё ещё используется в работе и будет на плаву ещё несколько лет точно. А поэтому существует простой трюк, который тычет IE6 мордой в стандарты:</p>
<pre class="brush: css;">.floated_element {
float: left;
width: 200px;
margin: 5px;
display: inline; /*--Для IE6--*/
}</pre>
<h3>3. Выравнивание</h3>
<p>Дни использования HTML-тега &lsaquo;center&rsaquo; давно канули в лету. Давайте разберём различные варианты центрирования элемента.</p>
<h4>Горизонтальное выравнивание</h4>
<p>Вы можете выравнивать элементы по горизонтали, используя свойство <strong>text-align</strong>. Это очень просто, но имейте ввиду, что выравнивание <a href="http://htmlhelp.com/reference/html40/inline.html">inline-элементов</a>, в отличие от обычного текста, требует дополнительный параметр <strong>display:block</strong>. Это позволяет браузеру определить границы, по которым вычисляется выравнивание.</p>
<pre class="brush: css;">.center {
text-align: center;
display: block; /*-- Только для inline-элементов--*/
}</pre>
<p>Для горизонтального выравнивания нетекстовых элементов, используйте свойство margin.</p>
<p><a href="http://www.w3.org/TR/CSS21/visudet.html#blockwidth">W3C утверждает</a>, что &laquo;если margin-left и margin-right указаны как auto, то их значения одинаковы. Это свойство позволяет выравнивать элемент по горизонтали, относительно краёв контейнера&raquo;.</p>
<p>Это идеальный способ горизонтального выравнивания нетекстовых элементов, таких как блоки разметки или картинки. Но вы должны явно указывать ширину элемента, чтобы этот метод сработал.</p>
<p>Для центрирования блока разметки:</p>
<pre class="brush: css;">.layout_container {
margin: 0 auto;
width: 960px;
}</pre>
<p>Для центрирования картинки:</p>
<pre class="brush: css;">img.center {
margin: 0 auto;
display: block; /*-- img это inline-элемент --*/
}</pre>
<h4>Вертикальное выравнивание</h4>
<p>Можно выровнять по вертикали текстовые элементы, используя свойство <strong>line-height</strong> (высота линии), которое определяет пространство между строками текста. Это отличный способ для вертикального выравнивания заголовков и других текстовых элементов. Просто сделайте так, чтобы свойства элемента line-height и height совпадали.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/3_a.png" alt="3_a" title="3_a" width="500" height="193" class="alignnone size-full wp-image-872" /></p>
<pre class="brush: css;">h1 {
font-size: 3em;
height: 100px;
line-height: 100px;
}</pre>
<p>Для выравнивания нетекстовых элементов используется, так называемое, абсолютное позиционирование (в другом уроке разберём детально что это и как это).</p>
<p>Нюанс заключается в том, что вы обязательно должны указать фактическую ширину и высоту центрируемого элемента.</p>
<p>Элемент со свойством <strong>position:absolute</strong> позиционируется относительно своего базового положения (0,0: верхний левый угол). На картинке внизу, красная точка &mdash; это точка отсчёта положения элемента до применения отрицательного корректирующего margin&#8217;а.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/10/upd3_b.png" alt="upd3_b" title="upd3_b" width="500" height="441" class="alignnone size-full wp-image-873" /></p>
<pre class="brush: css;">
.vertical {
width: 600px; /*-- Ширина блока --*/
height: 300px; /*-- Высота блока --*/
position: absolute; /*-- Абсолютное позиционирование, обязательно --*/
top: 50%; /*-- Координаты сверху ставим на 50% --*/
left: 50%; /*-- Координаты слева тоже на 50% --*/
margin: -150px 0 0 -300px; /*-- Устанавливаем корректирующий отрицательный margin --*/
}
</pre>
<p>Вот пока и всё. В следующем уроке мы разберём что такое списки, overflow, позиционирование&#8230; и может ещё что-нибудь :) Замечания и дополнения жду, как всегда, в комментариях.</p>
<p>UPD: <a href="http://buzochok.org.ua/osvaivaem-css-chast-2/">Осваиваем CSS. Часть 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/osvaivaem-css-chast-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ссылка на редактирование записи в теме WordPress</title>
		<link>http://buzochok.org.ua/ssylka-na-redaktirovanie-zapisi-v-teme-wordpress/</link>
		<comments>http://buzochok.org.ua/ssylka-na-redaktirovanie-zapisi-v-teme-wordpress/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 07:40:40 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=747</guid>
		<description><![CDATA[Иногда вы перечитываете публикации в своём блоге (правда ведь?) и замечаете какую-нибудь досадную ошибку. Или хотите добавить некое примечание. Мало ли что ещё&#8230; Но зачем для этого заходить в админку WordPress, искать там заголовок с вашим постом и только потом, собственно, редактировать то, что нужно? Есть более удобный способ, а именно &#8212; добавить ссылку на [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда вы перечитываете публикации в своём блоге (правда ведь?) и замечаете какую-нибудь досадную ошибку. Или хотите добавить некое примечание. Мало ли что ещё&#8230; Но зачем для этого заходить в админку WordPress, искать там заголовок с вашим постом и только потом, собственно, редактировать то, что нужно? Есть более удобный способ, а именно &mdash; добавить ссылку на редактирование публикации рядом с самой публикацией.</p>
<p>Для этого нам нужно воспользоваться малоизвестной функцией Вордпресса <strong>current_user_can()</strong>. Она проверяет переданный ей параметр, уровень доступа пользователя. Мы не хотим, чтобы читатели могли редактировать публикацию. Поэтому с помощью передачи уточняющего параметра <em>current_user_can(&#8217;<strong>level_10</strong>&#8216;)</em> мы даём возможность редактирования только администратору блога. После чего используем стандартные функции <strong>bloginfo()</strong> и <strong>the_ID()</strong> для генерирования прямой ссылки на редактирование в панели управления.</p>
<pre class="brush: php;">&lt;?php
if (current_user_can('level_10')){ ?&gt;
    &lt;a href=&quot;&lt;?php bloginfo('wpurl');?&gt;/wp-admin/edit.php?p=&lt;?php the_ID(); ?&gt;&quot;&gt;Редактировать&lt;/a&gt;
&lt;?php } ?&gt;</pre>
<p>Вставьте эту функцию в тему блога под заголовком поста, или внизу всего поста&#8230; или сверху :) Очень удобно.</p>
<p><em>P.S. Кстати, как лучше обзывать слово &laquo;post&raquo;? Статья, публикация, запись, новость, пост или ещё как-то?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/ssylka-na-redaktirovanie-zapisi-v-teme-wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Критическая уязвимость в WordPress</title>
		<link>http://buzochok.org.ua/kriticheskaya-uyazvimost-v-wordpress/</link>
		<comments>http://buzochok.org.ua/kriticheskaya-uyazvimost-v-wordpress/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 15:57:54 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=665</guid>
		<description><![CDATA[Сегодня обнаружили серьёзную дыру в безопасности WordPress. Это касается всех версий 2.8.X.
Серьёзность в том, что любой человек, зная необходимый для этого html-запрос, может сбросить пароль администратора в вашем блоге. Если точнее, то ваш пароль могут изменить &#171;с помощью&#187; механизма восстановления паролей, а вы даже уведомление об этом не получите. Чертовски неприятно будет, сами понимаете. Благо [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня обнаружили серьёзную дыру в безопасности WordPress. Это касается всех версий 2.8.X.</p>
<p>Серьёзность в том, что любой человек, зная необходимый для этого html-запрос, может сбросить пароль администратора в вашем блоге. Если точнее, то ваш пароль могут изменить &laquo;с помощью&raquo; механизма восстановления паролей, а вы даже уведомление об этом не получите. Чертовски неприятно будет, сами понимаете. Благо решение есть и оно простое.</p>
<p>Найдите файл wp-login.php и перейдите на строку 190:</p>
<pre class="brush: php;">if (empty($key))</pre>
<p>Замените её на такую строку:</p>
<pre class="brush: php;">if(empty($key) || is_array($key))</pre>
<p>Это всё, ваш блог теперь в безопасности (пока ещё какую-то дыру не найдут).</p>
<p>Кстати говоря, некоторые пишут, что замены только одной строки недостаточно. Необходимы более основательные изменения в процессе аутентификации. Поэтому команда WordPress выпустила несколько часов назад версию 2.8.4, которая содержит в себе критическое обновление. Думаю, что лучше обновиться, раз такая жара пошла. Но если лень &mdash; хотя бы строку поменяйте :)</p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/kriticheskaya-uyazvimost-v-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Fields и картинки</title>
		<link>http://buzochok.org.ua/custom-fields-i-kartinki/</link>
		<comments>http://buzochok.org.ua/custom-fields-i-kartinki/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 17:33:18 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[custom fields]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=518</guid>
		<description><![CDATA[Недавно у нас было первое практическое занятие по применению произвольных полей (custom fields) в WordPress. Как я и обещал, в этом уроке я расскажу вам как с помощью произвольных полей вставлять картинки.
Разумеется, в текст записи картинки можно вставлять и с помощью менеджера медиафайлов. Это наглядно и действительно удобно. Но что делать, если мы хотим разместить [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно у нас было <a href="http://buzochok.org.ua/menyaem-ssylku-podrobnee/">первое практическое занятие по применению произвольных полей (custom fields)</a> в WordPress. Как я и обещал, в этом уроке я расскажу вам как с помощью произвольных полей вставлять картинки.</p>
<p>Разумеется, в текст записи картинки можно вставлять и с помощью менеджера медиафайлов. Это наглядно и действительно удобно. Но что делать, если мы хотим разместить картинку ВНЕ текста записи? Например &mdash; над заголовком новости. Или слева всей области поста, в отдельную колонку с индивидуальным фоном. Для таких случаев существуют Custom Fields.</p>
<p>В интернете куча разнообразного кода, который считывает значение произвольного поля, в нашем случае &mdash; путь к изображению, и который, собственно, вставляет изображение в нужном месте. Но весь найденный мною код слишком громоздкий. Поэтому я написал свой. <span id="more-518"></span></p>
<p>Выглядит так:</p>
<pre class="brush: css;">&lt;div class=&quot;post-area&quot;&gt;
&lt;?php $thumbnail = get_post_meta($post-&gt;ID, 'thumbnail', true);
if ($thumbnail != '') {?&gt;&lt;div class=&quot;thumb&quot;&gt;&lt;a href=&quot;&lt;?php the_permalink(); ?&gt;&quot;&gt;&lt;img src=&quot;&lt;?php echo $thumbnail ?&gt;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;?php } ?&gt;
&lt;?php $custommore = get_post_meta($post-&gt;ID, 'custom_more', true);if (!$custommore) { $custommore = 'Подробнее &amp;raquo;'; } the_content($custommore); ?&gt;
&lt;/div&gt;</pre>
<p>А вот и сами поля &mdash; для вывода картинки (thumbnail) и для изменения текста ссылки на полную новость (custom_more):</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/08/fields.png" alt="fields" title="fields" width="640" height="288" class="alignnone size-full wp-image-520" /></p>
<h4>Несколько комментариев по коду:</h4>
<p>Переменная <em>$thumbnail</em> принимает значение из произвольного поля thumbnail. Далее происходит проверка &mdash; если поле вообще указано, то вставляется картинка, путь к которой &mdash; значение из поля thumbnail. Картинка, в свою очередь является ещё и ссылкой на полную новость. А если поле не указано &mdash; то вообще ничего не происходит, блок картинки не генерируется. Всё просто. Если что-то не просто &mdash; спрашивайте в комментариях.</p>
<p>Вот пара примеров живого использования. Обратите внимание на расположение картинок в новостях.</p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/08/nettuts.png" alt="nettuts" title="nettuts" width="640" height="545" class="alignnone size-full wp-image-525" /></p>
<p align="center"><img src="http://buzochok.org.ua/wp-content/uploads/2009/08/catswhocode.png" alt="catswhocode" title="catswhocode" width="640" height="596" class="alignnone size-full wp-image-526" /></p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/custom-fields-i-kartinki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Колонки одинаковой высоты</title>
		<link>http://buzochok.org.ua/kolonki-odinakovoj-vysoty/</link>
		<comments>http://buzochok.org.ua/kolonki-odinakovoj-vysoty/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 15:46:55 +0000</pubDate>
		<dc:creator>Veles</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[верстка]]></category>
		<category><![CDATA[рецепты]]></category>

		<guid isPermaLink="false">http://buzochok.org.ua/?p=508</guid>
		<description><![CDATA[Существует очень много решений, от километров css до использования jQuery. Но есть один очень интересный, эффективный и лаконичный метод. Неизвестно кто его придумал, так что авторство указать не могу. Ну и ладно :)
ХТМЛ-ная часть:
&#60;div class=&#34;cols&#34;&#62;
  &#60;div class=&#34;col1&#34;&#62;Текст 1&#60;/div&#62;
  &#60;div class=&#34;col2&#34;&#62;Текст 2&#60;/div&#62;
  &#60;div class=&#34;col3&#34;&#62;Текст 3&#60;/div&#62;
&#60;/div&#62;
CSS:
.cols {
     overflow: hidden;
  [...]]]></description>
			<content:encoded><![CDATA[<p>Существует очень много решений, от километров css до использования jQuery. Но есть один очень интересный, эффективный и лаконичный метод. Неизвестно кто его придумал, так что авторство указать не могу. Ну и ладно :)</p>
<p>ХТМЛ-ная часть:</p>
<pre class="brush: xml;">&lt;div class=&quot;cols&quot;&gt;
  &lt;div class=&quot;col1&quot;&gt;Текст 1&lt;/div&gt;
  &lt;div class=&quot;col2&quot;&gt;Текст 2&lt;/div&gt;
  &lt;div class=&quot;col3&quot;&gt;Текст 3&lt;/div&gt;
&lt;/div&gt;</pre>
<p>CSS:</p>
<pre class="brush: css;">.cols {
     overflow: hidden;
     width: 100%;
}
.cols .col1, .cols .col2, .cols .col3 {
     padding-bottom: 10000px;
     margin-bottom: -10000px;
}</pre>
<p>Вот и всё! Гениально, как по мне.</p>
]]></content:encoded>
			<wfw:commentRss>http://buzochok.org.ua/kolonki-odinakovoj-vysoty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
