<?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>SdelaySite.com &#187; Верстка</title>
	<atom:link href="http://www.sdelaysite.com/category/kniga/verstka-kniga/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sdelaysite.com</link>
	<description>Начинающему веб-мастеру посвящается</description>
	<lastBuildDate>Mon, 06 Sep 2010 01:12:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS-framework или как упростить процесс верстки</title>
		<link>http://www.sdelaysite.com/kniga/verstka-kniga/css-framework</link>
		<comments>http://www.sdelaysite.com/kniga/verstka-kniga/css-framework#comments</comments>
		<pubDate>Tue, 10 Nov 2009 09:33:01 +0000</pubDate>
		<dc:creator>Андрей Морковин</dc:creator>
				<category><![CDATA[Верстка]]></category>
		<category><![CDATA[Инструментарий разработчика]]></category>

		<guid isPermaLink="false">http://www.sdelaysite.com/?p=433</guid>
		<description><![CDATA[
Приветствую вас, уважаемый читатель. Сегодня я познакомлю вас с очень интересной и удобной штуковиной под названием CSS-framework.
В своей работе по созданию сайтов я использую ее в качестве отличного помощника и упростителя рутинной верстки админки.
Админка – это внутренняя часть сайта, предназначенная для служебных целей. Видит и пользуется ей только администратор сайта.
Давайте рассмотрим, какой функционал зачастую применяется [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; margin-left: auto; margin-right: auto;" title="CSS-framework" src="http://i701.photobucket.com/albums/ww11/amorkovin/CSS-framework-1.jpg" alt="CSS-framework" width="460" height="440" /></p>
<p>Приветствую вас, уважаемый читатель. Сегодня я познакомлю вас с очень интересной и удобной штуковиной под названием <strong>CSS-framework</strong>.</p>
<p>В своей работе по созданию сайтов я использую ее в качестве отличного помощника и упростителя рутинной верстки админки.</p>
<blockquote><p>Админка – это внутренняя часть сайта, предназначенная для служебных целей. Видит и пользуется ей только администратор сайта.</p></blockquote>
<p>Давайте рассмотрим, какой функционал зачастую применяется в админке:</p>
<ul>
<li><strong>Меню переключения разделов админки.</strong> Обычно, я формирую переключение разделов при помощи ссылок в горизонтальном меню сайта с используем выпадающих пунктов. В мощных сайтах может пригодится вертикальное меню, как дополнительный способ навигации в разделе.</li>
<li><strong>Вывод данных. </strong>Для формирования выводимых данных могут применяться таблицы, расположение в блоках абзаца, разделение блоков логическими заголовками.</li>
<li><strong>Редактирование данных. </strong>Для редактирования данных применяются различные поля ввода, селекторы, выпадающие списки.</li>
</ul>
<p>Весь этот функционал должен быть хорошо структурирован (т.е. должна быть выдержана иерархия размеров шрифта, отступов, чтобы было понятно, какой элемент к чему имеет отношение), а интерфейс – приятен глазу. Также функционал должен одинаково хорошо выполнять все свои функции в любом популярном браузере.</p>
<p>При этом, как вы понимаете, для админки не требуется разработка индивидуального дизайна, каких-то особых ухищрений юзабилити-структурирования (по крайней мере в подавляющем большинстве случае).</p>
<p>Сократить усилия по верстке админ-части сайта и сэкономить драгоценное время вам поможет тот самый <strong>CSS-framework</strong>, о котором и пойдет речь в данной статье.</p>
<p><span id="more-433"></span></p>
<p><strong>Итак, что же такое CSS-framework?</strong></p>
<p>Это уже готовый, сверстанный и одинаково хорошо отображающийся во всех браузерах, HTML и CSS-каркас с набором всех необходимых функций, для реализации админки довольно сложно сайта.</p>
<p>Вы можете с легкостью скопировать и отредактировать только те элементы, которые необходимо задействовать, не тратя время на верстку. Админка легко собирается из готовых кубиков.</p>
<p>Еще одним жирным плюсом в использовании CSS-framework является его бесплатность. Достаточно просто <a href="http://css-framework.ru/">зайти на сайт официальный сайт</a>, скачать свежую версию и…</p>
<p>А вот что с ней делать дальше, я наглядно расскажу в видеоуроке.</p>
<p><strong>Видео на сервисе RuTube:</strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="470" height="353" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /><param name="src" value="http://video.rutube.ru/449e705142e6330ecb8a18a08bf03c89" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="470" height="353" src="http://video.rutube.ru/449e705142e6330ecb8a18a08bf03c89" allowfullscreen="true" wmode="window"></embed></object></p>
<p><strong>Видео на сервисе YouTube (Часть 1):</strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/OUlYm7kHtic&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/OUlYm7kHtic&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Видео на сервисе YouTube (Часть 2):</strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/o-TXa81BBqM&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/o-TXa81BBqM&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Из-за алгоритмов сжатия видео сервисами YouTube и RuTube, мелкие детали становятся плохо различимы. Вы можете <a href="http://depositfiles.com/files/lt0izj489">скачать видео в лучшем качестве с Deposit Files</a> (19.52 Мбайт *.mp4).</p>
<p style="text-align: right;">С уважением, <a href="http://www.sdelaysite.com">Андрей Морковин</a>.</p>
<a class="tt" href="http://twitter.com/home/?status=CSS-framework+%D0%B8%D0%BB%D0%B8+%D0%BA%D0%B0%D0%BA+%D1%83%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%B8%D1%82%D1%8C+%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81+%D0%B2%D0%B5%D1%80%D1%81%D1%82%D0%BA%D0%B8+http://dykk8.th8.us" title="Post To Twitter"><img class="nothumb" src="http://www.sdelaysite.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro1.png" alt="Post to Twitter" /></a></p><hr />
<p><small>© Андрей Морковин для <a href="http://www.sdelaysite.com">SdelaySite.com</a>, 2009. |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/css-framework">Ссылка на пост</a> |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/css-framework#comments">Комментарии: 25</a>
<br/>
Теги поста: <a href="http://www.sdelaysite.com/tag/instrumentarij-razrabotchika" rel="tag">Инструментарий разработчика</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.sdelaysite.com/kniga/verstka-kniga/css-framework/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Вертикальное выравнивание в div. Бонус: условные комментарии</title>
		<link>http://www.sdelaysite.com/kniga/verstka-kniga/vertikalnoe-vyravnivanie</link>
		<comments>http://www.sdelaysite.com/kniga/verstka-kniga/vertikalnoe-vyravnivanie#comments</comments>
		<pubDate>Tue, 03 Nov 2009 18:58:39 +0000</pubDate>
		<dc:creator>Андрей Морковин</dc:creator>
				<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://www.sdelaysite.com/?p=382</guid>
		<description><![CDATA[
Сегодня, уважаемый читатель, мы с вами разберемся с проблемой вертикального выравнивания в блоке div.
Скорее всего вы уже знаете о существовании замечательного свойства CSS vertical-align. И сам Бог велел нам пользоваться для вертикального выравнивания именно этим свойством (не зря же оно носит такое, говорящее само за себя, название).
Постановка задачи: Необходимо выровнять содержимое блока переменной высоты по [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Вертикальное выравнивание в div" src="http://i701.photobucket.com/albums/ww11/amorkovin/textalign3.jpg" alt="Вертикальное выравнивание в div" /></p>
<p>Сегодня, уважаемый читатель, мы с вами разберемся с проблемой вертикального выравнивания в блоке <em>div</em>.</p>
<p>Скорее всего вы уже знаете о существовании замечательного свойства CSS <strong>vertical-align.</strong> И сам Бог велел нам пользоваться для вертикального выравнивания именно этим свойством (не зря же оно носит такое, говорящее само за себя, название).</p>
<p><strong>Постановка задачи:</strong> Необходимо выровнять содержимое блока переменной высоты по центру относительно вертикали.</p>
<p>Теперь приступим к решению поставленной задачи.</p>
<p><span id="more-382"></span></p>
<p>И так, у нас есть блок, высота его может меняться:</p>
<p><em>&lt;div&gt;Содержимое блока&lt;/div&gt;</em></p>
<p>Первое, что приходит в голову – это сделать следующий финт:</p>
<p><em>&lt;div style=&#8221;vertical-align: middle&#8221;&gt;Содержимое блока&lt;/div&gt;</em></p>
<p>Есть все основания предполагать, что фраза <em>Содержимое блока</em> выровняется по центру высоты div-контейнера.</p>
<p>Но не тут-то было! Никакого ожидаемого выравнивания по центру таким образом мы не добьемся. А почему? Казалось бы все указано правильно. Оказывается вот в чем загвоздка: свойство <em>vertical-align</em> можно применять только для выравнивания содержимого ячеек таблиц или для выравнивания строчных элементов друг относительно друга.</p>
<p>По поводу выравнивания внутри ячейки таблицы, я думаю, все понятно. А вот другой случай со строчными элементами я поясню.</p>
<h2 style="text-align: center;">Вертикальное выравнивание строчных элементов</h2>
<p>Предположим есть у вас строка текст, которая разбита строчными тегами <em>&lt;span&gt;</em> на части:</p>
<pre class="brush: xml;">
&lt;span id=&quot;perviy&quot;&gt;Вас&lt;/span&gt; &lt;span id=&quot;vtoroy&quot;&gt;приветствует&lt;/span&gt; &lt;span id=&quot;tretiy&quot;&gt;кусок&lt;/span&gt; текста!
</pre>
<blockquote><p>Под строчным тегом понимается контейнер, появление которого не приводит к переносу содержимого на новую строку.</p>
<p>Действие же блочного тега приводит к переносу содержимого контейнера на новую строку.</p>
<p><em>&lt;div&gt;</em> – это блочный тег. Если мы заключим куски текста в блоки <em>&lt;div&gt;,</em> то каждый из них окажется на новой строке. Используя тег <em>&lt;span&gt;</em>, который, в отличие от <em>&lt;div&gt;</em>, является строчным, переноса контейнеров на новую строку не будет, все контейнеры <em>&lt;span&gt;</em> останутся в одной строке.</p>
<p>Контейнер <em>&lt;span&gt;</em> удобно использовать при задании части текста особого форматирования (выделение цветом, другим шрифтом и т.д.)</p></blockquote>
<p>Для контейнеров <em>&lt;span&gt;</em> применим следующие свойства CSS:</p>
<pre class="brush: css;">
#perviy{
    vertical-align:sub;
}

#vtoroy{
    vertical-align:3px;
}

#tretiy{
    vertical-align:-3px;
}
</pre>
<p>В результате строка текста будет иметь вот такой вид:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Выравнивание строчных элементов" src="http://i701.photobucket.com/albums/ww11/amorkovin/textalign1.jpg" alt="Выравнивание строчных элементов" /></p>
<p>Это и есть ничто иное, как выравнивание строчных элементов по вертикали, и свойство CSS <strong>vertical-align </strong>с этой задачей прекрасно справляется.</p>
<p>Мы немного отвлеклись, теперь возвращаемся к нашей основной задаче.</p>
<h2 style="text-align: center;">Выравнивание по вертикали в div-контейнере</h2>
<p>Не смотря ни на что, для выравнивания внутри div-контейнера мы будем использовать свойство <strong>vertical-align</strong>. Как я уже говорил, данное свойство можно использовать в случае выравнивания строчных элементов (этот случай мы подробно рассмотрели выше и для выравнивания в div-контейнере он нам не подходит); остается лишь использовать тот факт, что <em>vertical-align</em> работает для ячеек таблицы.</p>
<p>Как же мы сможем это использовать? У нас же нет таблицы, мы работаем с div-контейнером.</p>
<p>Ха, оказывается очень просто.</p>
<p>CSS-свойство <strong>display</strong> позволяет превратить наш блок div в ячейку таблицы, сделать это можно легко и непринужденно:</p>
<p>Пусть у нас есть div класса <em>textalign:</em></p>
<p><em>&lt;div class=&#8221;textalign&#8221;&gt;Содержимое блока&lt;/div&gt;</em></p>
<p>Для данного блока указываем следующее CSS-свойство:</p>
<pre class="brush: css;">
.textalign{
    display: table-cell;
}
</pre>
<p>Эта CSS-инструкция чудесным образом превратит наш блок div в ячейку таблицы, визуально никак его не изменив. А для ячейки таблицы мы сможем применять свойство <em>vertical-align</em> в полной мере и будет работать желаемая центровка по вертикали.</p>
<p>Однако, все так просто закончится не может. У нас же есть замечательный браузер IE. Он не умеет работать со свойством <em>display: table-cell</em> (предлагаю вам ознакомится с табличкой, иллюстрирующей <a href="http://www.htmlbook.ru/css/display.html">работоспособность данного CSS-свойства в разных браузерах</a> на сайте htmlbook.ru). Поэтому нам придется идти на различные ухищрения.</p>
<p>Существует множество способов добиться выравнивания в div-контейнере для всех браузеров:</p>
<ul>
<li>Способ с применением <a href="http://habrahabr.ru/blogs/css/73113/">дополнительного вспомогательного div-котнейнера</a></li>
<li>Способ с <a href="http://cake-seller.habrahabr.ru/blog/23801/">использованием expression-а</a>. Связан он с хитрым вычислением высот блоков. Без знания JavaScript тут не обойтись.</li>
<li><a href="http://habrahabr.ru/blogs/css/71236/">Использование свойства line-height</a>. Данный способ подходит только для вертикального выравнивания в блоке известной высоты, а значит в общем случае не применим.</li>
<li>Использование абсолютного и относительного смещения содержимого в случае браузера IE. Мне этот способ кажется наиболее понятным и простым. Кроме того, он реализуем для div-контейнера переменной высоты. На нем мы остановимся подробнее.</li>
</ul>
<p>Как вы понимаете, нам остается решить проблему вертикального выравнивания в IE, связанную с его непониманием свойства <em>display: table-cell </em>(ни IE6, ни IE7, ни <strong>IE8 </strong>с этим свойством не знакомы). Поэтому воспользовавшись <strong>условным комментарием</strong> специально для браузеров семейства IE мы укажем другие свойства CSS.</p>
<h2 style="text-align: center;">Условный комментарий</h2>
<p>Конструкция вида:</p>
<pre class="brush: xml;">
&lt;!--[if IE]&gt;
...
Инструкции, действующие только в случае выполнения условия в квадратных скобках
...
&lt;![endif]--&gt;
</pre>
<p>называется условным комментарием (будьте внимательны, вид условного комментария должен полностью соответствовать приведенному примеру, с точностью до пробела).</p>
<p>Инструкции, содержащиеся в подобном условном комментарии будут выполнены только в случае, если браузер, интерпретирующий данный код, принадлежит к семейству IE.</p>
<p>Вы можете более подробно <a href="http://designformasters.info/posts/conditional-comments/">познакомится с условными комментариями</a>.</p>
<p>Таким образом, используя условный комментарий, мы сможем спрятать кусок кода от всех браузеров кроме IE.</p>
<p>Запомнили, пошли дальше.</p>
<h2 style="text-align: center;">Решение задачи</h2>
<p>Из-за всей этой петрушки нам нужно будет снабдить наш HTML-код двумя дополнительными контейнерами. Вот каким образом будет выглядеть наш блок с текстом:</p>
<pre class="brush: xml;">
&lt;div class=&quot;textalign&quot;&gt;
	&lt;div&gt;
		&lt;span&gt;Это какой-то проверочный текст. &lt;br /&gt;Он состоит из двух строк.&lt;/span&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Для div-контейнера класса <em>textalign</em> задаются CSS-свойства, которые выравнивают его содержимое по вертикали для всех нормальных браузеров (кроме IE, разумеется):</p>
<pre class="brush: css;">
display: table-cell;
vertical-align: middle;
</pre>
<p>И еще два свойства, которые задают ширину и высоту для блока:</p>
<pre class="brush: css;">
width:500px;
height: 500px;
</pre>
<p>Этого вполне достаточно для выравнивания содержимого контейнера по центру относительно вертикали, во всех браузерах <strong>кроме IE</strong>.</p>
<p>Теперь начинаем дописывать свойства, связанные с выравниванием <strong>для браузеров семейства IE</strong> (именно для них мы использовали дополнительные блоки <em>div</em> и <em>span</em>):</p>
<p>Обращаемся к тегу <em>div</em> внутри блока класса <em>textalign</em>. Для этого нужно указать сначала название класса, а потом, через пробел, тег, к которому мы обращаемся.</p>
<pre class="brush: css;">
.textalign div{
    position: absolute;
    top: 50%;
}
</pre>
<blockquote><p>Такая конструкция означает: для всех тегов div внутри блока с классом <em>textalign </em>применить перечисленные свойства.</p></blockquote>
<p>Если все оставить так как есть, то div-контейнер, который находится внутри блока <em>textalign</em>, будет позиционироваться относительно верхнего левого угла браузера. Нам же нужно, чтобы смещение на 50% по вертикали произошло относительно родительского блока. Для этого достаточно применить CSS-свойство <em>position: relative</em> блоку <em>textalign.</em> Об этих особенностях я подробно рассказываю в <a href="http://www.sdelaysite.com/kniga/verstka-kniga/rabota-s-div">видеоуроке по работе с блоками div</a>.</p>
<p>Соответственно, стили заданные для блока <em>textalign</em> видоизменяются:</p>
<pre class="brush: css;">
.textalign{
    display: table-cell;
    vertical-align: middle;
    width:500px;
    height: 500px;
    position: relative;
}
</pre>
<p>Теперь левая верхняя точка текстового блока смещена вниз на 50%.</p>
<p>Для пояснения происходящего я нарисовал иллюстрацию:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Вертикальное выравнивание иллюстрация" src="http://i701.photobucket.com/albums/ww11/amorkovin/textalign2.jpg" alt="Вертикальное выравнивание иллюстрация" /></p>
<p>Как видно из картинки, определенного прогресса мы добились. Но это еще не все! Верхняя левая точка желтого блока действительно сместилась на 50% вниз, относительно родительского (фиолетового) блока. Но нам-то нужно, чтобы на пятидесяти процентах высоты фиолетового блока находился <strong>центр желтого блока</strong>, а не его верхняя левая точка.</p>
<p>Теперь в ход пойдет тег <em>span</em> и его относительное позиционирование:</p>
<pre class="brush: css;">
.textalign span{
    position: relative;
    top: -50%;
}
</pre>
<p>Тем самым, мы сместили желтый блок вверх на 50% его высоты, относительно начального положения. Как вы понимаете, высота желтого блока равна высоте центрируемого контента. И последняя операция со span-контейнером расположила наш контент посередине фиолетового блока. Ура!</p>
<h2 style="text-align: center;">Немного подшаманим</h2>
<p>Перво-на-перво нам нужно спрятать петрушку от всех нормальных браузеров и открыть ее для IE. Сделать это можно, конечно же, при помощи условного комментария, не зря мы с ним знакомились:</p>
<pre class="brush: xml;">
&lt;!--[if IE]&gt;

   &lt;style type=&quot;text/css&quot;&gt;
      .textalign div{
          position: absolute;
          top: 50%;
      }

      .textalign span{
        position: relative;
        top: -50%;
      }
    &lt;/style&gt;

&lt;![endif]--&gt;
</pre>
<p><strong>Есть небольшая проблемка.</strong> Если центруемый контент слишком высокий, то это приводит к неприятным последствиям: появляется лишняя высота вертикальной прокрутки.</p>
<p><strong>Решение проблемы:</strong> нужно добавить свойство <em>overflow: hidden</em> блоку <em>textalign.</em></p>
<p>Детально познакомиться со свойством <em>overflow</em> можно в <a href="http://www.sdelaysite.com/kniga/verstka-kniga/rabota-s-div">видеоуроке по работе с блоками div</a>.</p>
<p>Окончательный вид CSS-инструкций для блока <em>textalign</em> имеет вид:</p>
<pre class="brush: css;">
.textalign{
    display: table-cell;
    vertical-align: middle;
    width:500px;
    height: 500px;
    position: relative;
    overflow: hidden;
    border: 1px solid black;
}
</pre>
<p>При желании, вы можете <a href="http://www.sdelaysite.com/sample/textalign.html">посмотреть HTML и CSS пример всего вышесказанного</a>.</p>
<p>Прошу пардону, забыл упомянуть один важный момент. Если вы будите пытаться <strong>задавать высоту блока класса <em>textalign</em> в процентном соотношении</strong>, то у вас <strong>ничего не выйдет</strong>.</p>
<h2 style="text-align: center;">Центровка в блоке переменной высоты</h2>
<p>Очень часто встречается необходимость задать высоту блока класса <em>textalign</em> не в пикселах, а в процентах от высоты родительского блока, и выровнять содержимое div-контейнера по середине.</p>
<p>Загвоздка в том, что для ячейки таблицы невозможно этого сделать (а ведь блок класса <em>textalign</em> превращается именно в ячейку таблицы, благодаря свойству <em>display:table-cell</em>).</p>
<p>В этом случае необходимо использовать внешний блок, для которого указано CSS-свойство <em>display:table</em> и уже для него задавать процентное значение высоты.  Тогда вложенный в него блок, с CSS-директивой <em>display:table-cell</em>, благополучно унаследует высоту родительского блока.</p>
<p>Для того, чтобы в нашем примере реализовать блок переменной высоты, мы немного подредактируем CSS:</p>
<p>Классу <em>textalign</em> мы изменим значение свойства <em>display</em> с <em>table-cell</em> на <em>table</em> и убирем директиву выравнивания <em>vertical-align: middle</em>. Теперь мы смело можем изменить значение высоты с 500 пикселов на, например, 100%.</p>
<p>Таким образом, CSS-свойства для блока класса <em>textalign </em>будут иметь следующий вид:</p>
<pre class="brush: css;">
.textalign{
    display: table;
    width:500px;
    height: 100%;
    position: relative;
    overflow: hidden;
    border: 1px solid black;
}
</pre>
<p>Остается реализовать центрирование содержимого. Для этого div-контейнеру, вложенному в блок класса <em>textalign</em> (это тот самый желтый блок на рисунке), необходимо задать CSS-свойство <em>display:table-cell</em>, тогда он унаследует высоту в 100% от родительского блока <em>textalign </em>(фиолетовый блок). И нам ничто не помешает выровнять содержимое вложенного div-контейнера по центру свойством <em>vertical-align: middle</em>.</p>
<p>Получаем еще один дополнительный список CSS-свойств для блока div, вложенного в контейнер <em>textalign</em>.</p>
<pre class="brush: css;">
.textalign div{
    display: table-cell;
    vertical-align: middle;
}
</pre>
<p>Вот и вся хитрость. При желании, вы можете <a href="http://sdelaysite.com//sample/textalign-rezina.html">посмотреть на сверстанный блок </a>переменной высоты с отцентрованным содержимым.</p>
<p>Дополнительную информацию по вертикальному выравниванию блока переменной высоты можно получить <a href="http://www.4art.com.ua/article/10">тут</a>.</p>
<p style="text-align: right;">С уважением, <a href="http://www.sdelaysite.com">Андрей Морковин</a>.</p>
<a class="tt" href="http://twitter.com/home/?status=%D0%92%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5+%D0%B2%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%B2+div.+%D0%91%D0%BE%D0%BD%D1%83%D1%81%3A+%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5+%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8+http://9w8xb.th8.us" title="Post To Twitter"><img class="nothumb" src="http://www.sdelaysite.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro1.png" alt="Post to Twitter" /></a></p><hr />
<p><small>© Андрей Морковин для <a href="http://www.sdelaysite.com">SdelaySite.com</a>, 2009. |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/vertikalnoe-vyravnivanie">Ссылка на пост</a> |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/vertikalnoe-vyravnivanie#comments">Комментарии: 32</a>
<br/>
Теги поста: <a href="http://www.sdelaysite.com/tag/verstka" rel="tag">Верстка</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.sdelaysite.com/kniga/verstka-kniga/vertikalnoe-vyravnivanie/feed</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Резиновый блок с закругленными углами на div</title>
		<link>http://www.sdelaysite.com/kniga/verstka-kniga/kruglie-ugly</link>
		<comments>http://www.sdelaysite.com/kniga/verstka-kniga/kruglie-ugly#comments</comments>
		<pubDate>Mon, 26 Oct 2009 19:59:50 +0000</pubDate>
		<dc:creator>Андрей Морковин</dc:creator>
				<category><![CDATA[Верстка]]></category>
		<category><![CDATA[Верстка видео допы]]></category>

		<guid isPermaLink="false">http://www.sdelaysite.com/?p=368</guid>
		<description><![CDATA[
В сегодняшнем видеоуроке по div верстке сайта я познакомлю вас, уважаемый читатель, с принципами верстки блока с закругленными углами. Причем не просто блока, а резинового блока, который может тянуться в ширину и высоту без ограничений.
На настоящий момент существует множество способов верстки блоков с закругленными углами (статья на HabraHabr с 38-ю способами). Многие из них даже [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://i701.photobucket.com/albums/ww11/amorkovin/rezin-block.jpg" alt="" /></p>
<p>В сегодняшнем видеоуроке по div верстке сайта я познакомлю вас, уважаемый читатель, с принципами верстки блока с закругленными углами. Причем не просто блока, а резинового блока, который может тянуться в ширину и высоту без ограничений.</p>
<p>На настоящий момент существует множество способов верстки блоков с закругленными углами (<a href="http://habrahabr.ru/blogs/webdev/30019/">статья на HabraHabr с 38-ю способами</a>). Многие из них даже очень оригинальны и изящны.</p>
<p>Только ко всему этому изящному многообразию у меня есть ряд претензий:</p>
<ul>
<li>Во-первых, сложность CSS-конструкций, в которой разобраться новичку будет очень сложно.</li>
<li>Во-вторых, зачем городить огород и искать себе проблемы, когда поставленную задачу можно решить, быть может, не так изящно, но все же, решить достойно и в соответствии со стандартами.</li>
<li>В-третьих, большое количество способов базируются на методе раздвижных дверей, а для этого метода необходимо загружать большое изображение. Размеры этого изображения бывает сложно предугадать. Кстати, если вы не знакомы с методом раздвижных дверей, то я рассказываю про него в статье <a href="http://www.sdelaysite.com/kniga/verstka-kniga/css-knopka">Верстка динамической кнопки на CSS</a>.</li>
</ul>
<p>Мы решим поставленную задачу дубовым методом, но не лишенным некоего изящества.</p>
<p>И, конечно же, верстать мы будем при помощи тегов div, без применения таблиц. В процессе просмотра видеоурока вы оцените простату данного метода, по сравнению даже с табличной реализацией.</p>
<p>За одно с версткой вы, как и всегда, получите порцию знаний по работе с программой Photoshop.</p>
<p>Переходите к просмотру видеоурока.</p>
<p><span id="more-368"></span></p>
<p><strong>Видеоурок на сервисе RuTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="470" height="353" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /><param name="src" value="http://video.rutube.ru/376ea9f2dd0bcdd2fb22133de88b4ff0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="470" height="353" src="http://video.rutube.ru/376ea9f2dd0bcdd2fb22133de88b4ff0" allowfullscreen="true" wmode="window"></embed></object></p>
<p><strong>Первая часть видеоурока на сервисе YouTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/E-LERIgC_wU&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/E-LERIgC_wU&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Вторая часть видеоурока на сервисе YouTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/FMYmoPZTDec&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/FMYmoPZTDec&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong> </strong></p>
<p><strong>Третья часть видеоурока на сервисе YouTube:</strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/G_-udHbY00E&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/G_-udHbY00E&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>При желании вы можете <a href="http://depositfiles.com/files/97hx3shv1">скачать исходники верстки</a> для тренировки.</p>
<p>Я думаю, что вы уже наслышаны от меня об алгоритмах сжатия видео сервисами YouTube и RuTube, из-за которых серьезно падает качество. Так вот, как обычно вы можете <a href="http://depositfiles.com/files/pmo3u3s6n">скачать видео в лучшем качестве с Deposit Files</a> (21.8 МБайт *.mp4). На нем видны все мелкие детали.</p>
<p>Для воспроизведения видео в формате *.mp4 у вас должен быть установлен соответствующий кодек. Если воспроизведения не происходит, то скачайте, например, K-Lite_Codec_Pack_520_Full. Я его уже скачал и загрузил себе на Deposit Files. Так что желающие могут <a href="http://depositfiles.com/files/sx6vectyv">дернуть его с Депозита</a> (11.8 МБайт).</p>
<a class="tt" href="http://twitter.com/home/?status=%D0%A0%D0%B5%D0%B7%D0%B8%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9+%D0%B1%D0%BB%D0%BE%D0%BA+%D1%81+%D0%B7%D0%B0%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8+%D1%83%D0%B3%D0%BB%D0%B0%D0%BC%D0%B8+%D0%BD%D0%B0+div+http://hf4nd.th8.us" title="Post To Twitter"><img class="nothumb" src="http://www.sdelaysite.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro1.png" alt="Post to Twitter" /></a></p><hr />
<p><small>© Андрей Морковин для <a href="http://www.sdelaysite.com">SdelaySite.com</a>, 2009. |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/kruglie-ugly">Ссылка на пост</a> |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/kruglie-ugly#comments">Комментарии: 24</a>
<br/>
Теги поста: <a href="http://www.sdelaysite.com/tag/verstka-video-dopy" rel="tag">Верстка видео допы</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.sdelaysite.com/kniga/verstka-kniga/kruglie-ugly/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>&lt;div&gt; &#8211; основной инструмент блочной верстки. Работа с тегом.</title>
		<link>http://www.sdelaysite.com/kniga/verstka-kniga/rabota-s-div</link>
		<comments>http://www.sdelaysite.com/kniga/verstka-kniga/rabota-s-div#comments</comments>
		<pubDate>Fri, 23 Oct 2009 13:43:06 +0000</pubDate>
		<dc:creator>Андрей Морковин</dc:creator>
				<category><![CDATA[Верстка]]></category>
		<category><![CDATA[Верстка видео допы]]></category>

		<guid isPermaLink="false">http://www.sdelaysite.com/?p=364</guid>
		<description><![CDATA[
Предлагаю вам, уважаемый читатель, познакомится с тегом &#60;div&#62;. Да так познакомится, чтобы никаких вопросов больше не возникало, о том, каким образом можно позиционировать, выравнивать, смещать, растягивать и сжимать этот блок.
Ведь тег &#60;div&#62; – это основной инструмент для позиционирования элементов сайта на странице и все его свойства и особенности нужно знать максимально подробно.
Информацию о теге я [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://i701.photobucket.com/albums/ww11/amorkovin/div-title.jpg" alt="" /></p>
<p>Предлагаю вам, уважаемый читатель, познакомится с тегом <em>&lt;div&gt;.</em> Да так познакомится, чтобы никаких вопросов больше не возникало, о том, каким образом можно позиционировать, выравнивать, смещать, растягивать и сжимать этот блок.</p>
<p>Ведь тег <em>&lt;div&gt;</em> – это основной инструмент для позиционирования элементов сайта на странице и все его свойства и особенности нужно знать максимально подробно.</p>
<p>Информацию о теге я записал в формате видеоурока.</p>
<p><strong>Тематика видеоурока:</strong></p>
<ul>
<li>Размеры блока div и контента, их соотношение.</li>
<li>Рассматриваю особенности позиционирования (<em>position:absolute, position:fixed, position:relative</em>).</li>
<li>Объясняю принципы построения плавающей модели.</li>
<li>Иллюстрирую необходимость использования свойства CSS <em>clear:both.</em></li>
</ul>
<p>Переходите к просмотру видео.</p>
<p><span id="more-364"></span></p>
<p><strong>Первая часть видео на сервисе RuTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="470" height="353" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /><param name="src" value="http://video.rutube.ru/0318e01122c0629d210e9b1ddf5c2fe1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="470" height="353" src="http://video.rutube.ru/0318e01122c0629d210e9b1ddf5c2fe1" allowfullscreen="true" wmode="window"></embed></object></p>
<p><strong>Вторая часть видео на сервисе RuTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="470" height="353" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /><param name="src" value="http://video.rutube.ru/28b13211439b9597f9d767c4dbdf3620" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="470" height="353" src="http://video.rutube.ru/28b13211439b9597f9d767c4dbdf3620" allowfullscreen="true" wmode="window"></embed></object></p>
<p><strong>Третья часть видео на сервисе RuTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="470" height="353" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /><param name="src" value="http://video.rutube.ru/bf04c3509dddd11b74e86d30c2e4218e" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="470" height="353" src="http://video.rutube.ru/bf04c3509dddd11b74e86d30c2e4218e" allowfullscreen="true" wmode="window"></embed></object></p>
<p><strong>Часть #1-1 на сервисе YouTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/e0nyvR5AqUY&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/e0nyvR5AqUY&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Часть #1-2 на сервисе YouTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/1eEagLOm3Is&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/1eEagLOm3Is&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Часть #2-1 на сервисе YouTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/1EnO_4nqChw&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/1EnO_4nqChw&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Часть #2-2 на сервисе YouTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/CenIlIAhXlM&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/CenIlIAhXlM&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Часть #3 на сервисе YouTube:</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/5hS_2-9CZrA&amp;hl=ru&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/5hS_2-9CZrA&amp;hl=ru&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Из-за алгоритмов сжатия сервисов RuTube и YouTube серьезно падает качество записи. Если какие-то мелкие детали сложно рассмотреть, то, для этого случая, я залил видео в лучшем качестве на Deposit Files:</p>
<ul>
<li><a href="http://depositfiles.com/files/55okvsfmo">Скачать первую часть (16.34 МБайт *.mp4)</a></li>
<li><a href="http://depositfiles.com/files/php9eir18">Скачать вторую часть (Не поверите, но опять 16.3 МБайт *.mp4)</a></li>
<li><a href="http://depositfiles.com/files/dk0mscprm">Скачать третью часть (7.2 МБайт *.mp4)</a></li>
</ul>
<p>Как вы видите, я перешел на новый формат видеофайлов. Теперь вместо *.wmv я использую *.mp4, который весит заметно меньше.</p>
<p>Для воспроизведения данного формата у вас должен быть установлен соответствующий кодек. Если воспроизведения не происходит, то скачайте, например, K-Lite_Codec_Pack_520_Full. Я его уже скачал и загрузил себе на Deposit Files. Так что желающие могут <a href="http://depositfiles.com/files/sx6vectyv">дернуть его с Депозита</a> (11.8 МБайт).</p>
<p>С уважением, <a href="http://www.sdelaysite.com">Андрей Морковин</a>.</p>
<a class="tt" href="http://twitter.com/home/?status=%3Cdiv%3E+%E2%80%93+%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9+%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82+%D0%B1%D0%BB%D0%BE%D1%87%D0%BD%D0%BE%D0%B9+%D0%B2%D0%B5%D1%80%D1%81%D1%82%D0%BA%D0%B8.+%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+%D1%82%D0%B5%D0%B3%D0%BE%D0%BC.+http://kmkfe.th8.us" title="Post To Twitter"><img class="nothumb" src="http://www.sdelaysite.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro1.png" alt="Post to Twitter" /></a></p><hr />
<p><small>© Андрей Морковин для <a href="http://www.sdelaysite.com">SdelaySite.com</a>, 2009. |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/rabota-s-div">Ссылка на пост</a> |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/rabota-s-div#comments">Комментарии: 20</a>
<br/>
Теги поста: <a href="http://www.sdelaysite.com/tag/verstka-video-dopy" rel="tag">Верстка видео допы</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.sdelaysite.com/kniga/verstka-kniga/rabota-s-div/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Верстка простой кнопки</title>
		<link>http://www.sdelaysite.com/kniga/verstka-kniga/verstka-prostoj-knopki</link>
		<comments>http://www.sdelaysite.com/kniga/verstka-kniga/verstka-prostoj-knopki#comments</comments>
		<pubDate>Tue, 20 Oct 2009 19:06:36 +0000</pubDate>
		<dc:creator>Андрей Морковин</dc:creator>
				<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://www.sdelaysite.com/?p=325</guid>
		<description><![CDATA[
Проблема, которую мы будем решать, заключается в том, что обычные кнопки, сформированные тегом &#60;input type=”submit”&#62; выглядят в разных браузерах по разному. Кроме того, при изменении стандартного размера кнопки, некоторые браузеры отображают ее просто ужасно.


Оказывается можно приложить немного усилий и из обычной кнопки по умолчанию сделать стильную и модную, да еще и во всех популярных браузерах [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Как сверстать простую кнопку" src="http://i701.photobucket.com/albums/ww11/amorkovin/title.jpg" alt="" width="400" height="137" /></p>
<p>Проблема, которую мы будем решать, заключается в том, что обычные кнопки, сформированные тегом <em>&lt;input type=”submit”&gt;</em> выглядят в разных браузерах по разному. Кроме того, при изменении стандартного размера кнопки, некоторые браузеры отображают ее просто ужасно.</p>
<p align="center">
<input type="submit" value="Вот она, кнопка по умолчанию" /></p>
<p>Оказывается можно приложить немного усилий и из обычной кнопки по умолчанию сделать стильную и модную, да еще и во всех популярных браузерах кнопка будет выглядеть одинаково хорошо (ну или почти во всех, почти хорошо). Теперь поговорим об этом подробно.<span id="more-325"></span></p>
<h2 style="text-align: center;">Каждый браузер имеет свое мнение</h2>
<blockquote><p>Препарировать будем для троицы популярных браузеров:</p>
<ul>
<li>Mozilla Firefox 3.5</li>
<li>Opera 9.63</li>
<li>IE6 (с оглядкой на IE7, чтоб ему!)</li>
</ul>
</blockquote>
<p>Вот как интерпретируют простой код <em>&lt;input type=”submit”&gt;</em> наши подопытные: <img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Отображение кнопки популярными браузерами" src="http://i701.photobucket.com/albums/ww11/amorkovin/button1.jpg" alt="Отображение кнопки популярными браузерами" /> В принципе, ничего криминального. Вот только пунктирная обводка кнопки в браузере FF, при попадании на нее фокуса ввода, смотрится не красиво. Ее можно убрать. Для этого укажем следующее свойство CSS для кнопки класса <em>button:</em></p>
<pre class="brush: css;">.button::-moz-focus-inner { border: 0; }</pre>
<p>Теперь давайте сделаем большую модную кнопку и ужаснемся ее внешнему виду по умолчанию.</p>
<h2 style="text-align: center;">Верстаем большую модную кнопку</h2>
<p>Как не странно, но кнопка подчиняется заданным через CSS размерам. Поэтому смело добавляем кнопке класса <em>button</em> директивы ширины и высоты:</p>
<pre class="brush: css;"> .button{ width:175px; height:55px; } </pre>
<p>Теперь посмотрим, каким образом выглядит наша большая кнопка в трех подопытных браузерах: <img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Внешний вид большой кнопки в браузерах" src="http://i701.photobucket.com/albums/ww11/amorkovin/button2.jpg" alt="Внешний вид большой кнопки в браузерах" /> Своим уродством поражает кнопка в IE6. Кстати,  в IE7 она выглядит ни чуть не лучше. Поэтому кнопка по умолчанию нам не подходит и мы будем верстать свою собственную кнопку.</p>
<h2 style="text-align: center;">Верстка кнопки</h2>
<p>Итак, ширину и высоту для кнопки мы уже задали, тем самым сформировали кнопку такого размера, как нам надо.</p>
<p>Остается превратить уродину в красавицу.</p>
<p>Для начала нарисуем кнопку в обычном состоянии,в состоянии при наведении мыши и при клике. Эти изображения сохраним в одном файле. Т.е. применим технологию спрайтов.</p>
<blockquote><p>В одном из предыдущих видеоуроков я наглядно продемонстрировал принципы создания графического файла, содержащего оба состояния кнопки и ее <a href="http://www.sdelaysite.com/kniga/verstka-kniga/css-knopka">верстку по технологии раздвижных дверей с применением технологии спрайтов</a>.</p></blockquote>
<p>Данный графический файл мы будем применять в качестве фона для нашей кнопки (свойство CSS <em>background-image).</em></p>
<p><strong>Фоновое изображение будет перемещаться</strong> при наведении на кнопку указателя мыши и при клике по ней. В результате будет создавать ощущение того, что кнопка нажимается.</p>
<p>Вот как выглядит фоновое изображение для кнопки:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Фоновое изображение для кнопки. Технология спрайтов." src="http://i701.photobucket.com/albums/ww11/amorkovin/bg_button-1.jpg" alt="Фоновое изображение для кнопки. Технология спрайтов." /></p>
<ul>
<li>В случае по умолчанию <em>background-position:0 </em>(можно не указывать).</li>
<li>При наведении мыши нужно переместить фоновое изображение вверх на высоту одной секции <em>background-position:0 –56px </em>(горизонтальное смещение не происходит, изменяется только вертикальная координата).</li>
<li>При клике необходимо сместить фон еще на одну секцию вверх <em>background-position:0 100%</em>.</li>
</ul>
<p>Вместе со смещением фона неплохо было бы <strong>смещать и текст на кнопке</strong>, это добавит реалистичности в ощущение нажатия.</p>
<p>При наведении на кнопку указателя мыши я смещаю текст вниз на высоту тени под кнопкой. Получается весьма реалистично.</p>
<div class="wp-caption aligncenter" style="width: 200px"><img style="display: block; margin-left: auto; margin-right: auto;" src="http://i701.photobucket.com/albums/ww11/amorkovin/miror.jpg" alt="" width="190" height="166" /><p class="wp-caption-text">Размер смещения для надписи (при наведении мыши)</p></div>
<p>Надпись внутри кнопки смещается путем задания свойства <em>padding</em>.</p>
<ul>
<li>При наведении указателя мыши <em>padding-top: 4px</em></li>
</ul>
<p>Дополнительной наглядности можно добиться путем смены указателя мыши при наведении на кнопку, со стрелки на лапку. Сделать это очень просто, всего-на-всего указать свойство <em>cursor:pointer</em>.</p>
<h2 style="text-align: center;">Изменение стиля кнопки при наведении мыши и клике</h2>
<p>Здесь есть два пути: с <strong>использованием JavaScript-ов</strong> и <strong>без них</strong>. Понятно, что самый простой и приятный способ, без использования скриптов, не работает в IE, но мы все равно с ним познакомимся.</p>
<p><strong>Способ без использования JavaScript</strong></p>
<p>Для смены стилей при наведении указателя мыши и при клике можно использовать псевдоклассы <em>:hover </em>и <em>:active. </em></p>
<p>Для кнопки класса <em>button</em> <strong>при наведении</strong>, благодаря <strong>псевдоклассу <em>:hover</em></strong>, будет применен следующий стиль:</p>
<pre class="brush: css;">
.button:hover{
    background-position:0 -56px;
    padding-top:4px;
}
</pre>
<p>Свойство <em>background-position</em> сместит фоновое изображение во второе положение, а отступ <em>padding-top</em> сместит надпись внутри кнопки.</p>
<p>Применить нужные свойства <strong>при клике</strong> можно используя <strong>псевдокласс <em>:active</em></strong></p>
<pre class="brush: css;"> .button:active{ background-position:0 100%;} </pre>
<p>Свойство <em>background-position</em> смещает фоновое изображение в третье положение при клике мыши.</p>
<p>Вышеописанный способ не подходит для IE6, т.к. в нем псевдоклассы <em>:hover </em>и <em>:active</em> работают только для тега ссылки <em>a.</em> Не смотря на то, что IE7 нормально работает с этими псевдоклассами, из-за своей глючности он ужасно интерпретирует данный код (добавляет несуществующие бордеры, смещает кнопку при клике).</p>
<p>В результате этот способ применять можно, т.к. IE6 отживает свое, пользуются им только из-за того, что он предустановлен в Windows XP; IE7 – глючный недобраузер, на смену которому пришел IE8.</p>
<p>Но все же, если вы хотите сделать динамическую кнопку и для IE, то следующий способ вполне пригодится.</p>
<p><strong>Способ с использованием JavaScript</strong></p>
<p>К тегу, формирующему кнопку применяем инструкции:</p>
<ul>
<li>Функция <em>OnMouseOver</em> – срабатывает при попадании указателя мыши в границы объекта и применяет инструкции, расположенные в ее содержимом.</li>
<li>Функция <em>OnMouseOut</em> – содержимое применяется при выходе указателя мыши за границы объекта.</li>
<li>Функция OnMouseDown – срабатывает при нажатии клавиши мыши.</li>
<li>Функция OnMouseUP – срабатывает при отпускании клавиши мыши.</li>
</ul>
<p>Посредством этих четырех функций можно реализовать весьма сносное отображение кнопки во всех популярных браузерах.</p>
<p>Желающие могут <a href="http://www.sdelaysite.com/sample/easy-button.html">познакомится с CSS и HTML-кодом</a>, иллюстрирующим все вышенаписанное (обязательно посмотрите исходный код страницы, там спрятаны подробные комментарии).</p>
<h2 style="text-align: center;">Отправка данных формы ссылкой</h2>
<p>Можно и вообще не заморачиваться с кнопками, а сделать отправку данных формы при помощи ссылки. А уж <a href="http://www.sdelaysite.com/kniga/verstka-kniga/css-knopka">как из ссылки сделать кнопку</a> мы с вами, уважаемый читатель, весьма подробно обсуждали.</p>
<p><strong>Теперь рассмотрим, как формируется такой скрипт.</strong></p>
<p>Вот форма отправки:</p>
<pre class="brush: xml;">
&lt;form name=&quot;myform&quot; action=&quot;handle-data.php&quot;&gt;
    Поиск: &lt;input type=&quot;text&quot; name=&quot;query&quot;&gt;
    &lt;a href=&quot;javascript: submitform()&quot;&gt;Найти&lt;/a&gt;
&lt;/form&gt;
</pre>
<p>Данный кусок HTML, как вы наверное догадались, формирует строку ввода поискового запроса, подтверждением для начала поиска является клик по ссылке “Найти”.</p>
<p>Кликнув по ссылке “Найти” посетитель запустит JavaScript, который и отправит данные из формы обработчику:</p>
<pre class="brush: jscript;">
&lt;SCRIPT language=&quot;JavaScript&quot;&gt;
    function submitform(){
        document.myform.submit();
    }
&lt;/SCRIPT&gt;
</pre>
<p>Данный скрипт осуществит отправку (метод <em>submit()</em> ) содержимого полей формы обработчику.</p>
<p>Будьте внимательны! Не допускайте попадания в форму <em>myform</em> элементов с <em>name=”submit” </em>, иначе скрипт отправки будет обращаться к этому элементу, а не производить передачу данных.</p>
<p>Желающим более подробно разобраться с JavaScript предлагаю <a href="http://www.sdelaysite.com/javascript/javascript-video-1">ознакомится с моими видеоуроками</a>, посвященными программированию на данном языке. Непосредственно в <a href="http://www.sdelaysite.com/javascript/javascript-video-5">пятом видеоуроке по JavaScript</a> я рассказываю об особенностях обращения к форме по атрибуту <em>name</em>.</p>
<p style="text-align: right;">С уважением, <a href="http://www.sdelaysite.com">Андрей Морковин</a>.</p>
<a class="tt" href="http://twitter.com/home/?status=%D0%92%D0%B5%D1%80%D1%81%D1%82%D0%BA%D0%B0+%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9+%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B8+http://mte3c.th8.us" title="Post To Twitter"><img class="nothumb" src="http://www.sdelaysite.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro1.png" alt="Post to Twitter" /></a></p><hr />
<p><small>© Андрей Морковин для <a href="http://www.sdelaysite.com">SdelaySite.com</a>, 2009. |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/verstka-prostoj-knopki">Ссылка на пост</a> |
<a href="http://www.sdelaysite.com/kniga/verstka-kniga/verstka-prostoj-knopki#comments">Комментарии: 15</a>
<br/>
Теги поста: <a href="http://www.sdelaysite.com/tag/verstka" rel="tag">Верстка</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.sdelaysite.com/kniga/verstka-kniga/verstka-prostoj-knopki/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
