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

<channel>
	<title>Очередной блог фрилансера &#187; верстка</title>
	<atom:link href="http://dreamhelg.ru/category/layout/feed/" rel="self" type="application/rss+xml" />
	<link>http://dreamhelg.ru</link>
	<description>о моей работе в сети и не только</description>
	<lastBuildDate>Fri, 23 Dec 2011 07:10:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Обзор CSS-свойства vertical-align</title>
		<link>http://dreamhelg.ru/2011/12/css-vertical-align/</link>
		<comments>http://dreamhelg.ru/2011/12/css-vertical-align/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 06:27:55 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[vertical-align]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2284</guid>
		<description><![CDATA[<p><img width="184" height="184" src="http://dreamhelg.ru/wp-content/uploads/2011/12/css-vertical-align.jpg" class="attachment-200x200 wp-post-image" alt="css-vertical-align" title="css-vertical-align" /></p>Довольно часто от веб-разработчиков можно услышать возмущенный возглас: “vertical-align не работает!”.  Несмотря на то, что назначение этого свойства следует из его названия, на практике, начинающие разработчики, равно как и многие ветераны CSS, часто испытывают трудности с его применением.

В сегодняшней статье, я постараюсь раскрыть все непонятные моменты этого CSS-свойства.
<h2>Чего не делает vertical-align</h2>
Наиболее распространенное заблуждение относительно свойства <strong>vertical-align</strong> состоит в том, что оно влияет на вертикальное выравнивание всех дочерних элементов контейнера, к которому применяется. Например, если мы применим к контейнеру свойство <strong>vertical-align: top</strong>, предполагается, что все содержимое контейнера будет выровнено по верхнему краю контейнера.

Это напоминает мне старые, добрые времена табличной верстки:

[css]
    &lt;td valign=&quot;top&quot;&gt;  
      Содержимое ячейки..
    &lt;/td&gt;  
[/css]

В этом примере табличной ячейки, свойство <strong>valign</strong> (<a href="http://www.w3.org/TR/html5/obsolete.html#non-conforming-features">сейчас уже запрещенное в HTML5</a>), действительно прижмет все содержимое ячейки к верхнему краю. Возможно исходя из этого, CSS-разработчики ожидают похожего эффекта, от применения свойства <strong>vertical-align</strong>.

Но свойство <strong>vertical-align</strong> так не работает.
<h2>Как на самом деле работает vertical-align</h2>
Свойство <strong>vertical-align</strong> можно разделить на три простых правила:
<ol>
	<li>Оно применяется только к элементам со свойствами display: inline; и display: inline-block;</li>
	<li>Оно влияет на положение самого элемента, а не его содержимого (за исключением табличных ячеек)</li>
	<li>Когда оно применяется к табличной ячейке, то влияет на содержимое ячейки, а не на саму ячейку.</li>
</ol>
Другими словами, следующий код не будет иметь никакого эффекта:

[css]
    div {  
        vertical-align: middle; /* эта строка не будет работать */  
    }  
[/css]

Почему? Потому что &lt;div&gt;  - это блочный элемент. Конечно, если вы измените у дива свойство display, на inline, или inline-block, <strong>vertical-align</strong> сразу заработает.

Правильное использование свойства vertical-align, поможет выровнять строчный элемент относительно других строчных элементов на странице. Насколько высоко или низко расположится элемент по вертикали, будет зависеть от размера соседних строчных элементов, или от свойства line-height, заданного  для этой строки.

На картинке ниже, представлен пример того, как ведут себя строчные элементы, когда вы применяете свойство <strong>vertical-align</strong>:
<p style="text-align: center;"><a href="http://dreamhelg.ru/wp-content/uploads/2011/12/vertical-align-sheme.png"><img class="aligncenter size-medium wp-image-2290" title="vertical-align-sheme" src="http://dreamhelg.ru/wp-content/uploads/2011/12/vertical-align-sheme-300x210.png" alt="" width="300" height="210" /></a></p>

<h2>Значения свойства – ключевые слова</h2>
Свойство <strong>vertical-align</strong> может принимать следующие значения:
<ul>
	<li>baseline (значение по умолчанию)</li>
	<li>bottom</li>
	<li>middle</li>
	<li>sub</li>
	<li>super</li>
	<li>text-bottom</li>
	<li>text-top</li>
	<li>top</li>
</ul>
Большинство из них вам скорее всего не понадобятся, но всегда хорошо знать из чего можно выбрать. Например, на <a href="http://jsbin.com/isuvob/edit#html,live/">демо-странице</a>, текстовому полю назначено свойство <strong>vertical-align: top</strong>, благодаря чему, оно выровнено относительно самого высокого элемента в строке (большой картинки).

А если вы не хотите располагать элемент относительно изображений или других строчных элементов, можно использовать значения <strong>text-top</strong> или <strong>text-bottom</strong>, чтобы ваш элемент позиционировался относительно текста, расположенного в строке.
<h2>О значении “middle”</h2>
К сожалению, <strong>vertical-align: middle;</strong> не расположит строчный элемент по центру самого большого элемента в строке, как этого можно было бы ожидать. Вместо этого, значение <strong>middle</strong> расположит элемент относительно гипотетической строчной “x” (также называемой “x-высотой”). По-хорошему, это значение следовало бы назвать “text-middle”, для правильной идентификации его механизма.

На <a href="http://jsbin.com/apiqog/3/edit">этой демо-странице</a>, размер текста специально увеличен, чтобы вы могли посмотреть, как именно выравниваются элементы, при значении <strong>middle</strong>. По всему выходит, что это значение, вам будет нужно гораздо реже, чем остальные.
<h2>Цифровые значения свойства</h2>
Возможно вы не знали, но <strong>vertical-align</strong> в качестве значения может принимать абсолютные и процентные значения, все приведенные ниже примеры будут правильными:

[css]
    input {  
        vertical-align: 100px;  
    }  
      
    span {  
        vertical-align: 50%;  
    }  
      
    img {  
        vertical-align: -300px;  
    }  
[/css]

В чем разница между абсолютными значениями и ключевыми словами, можно почитать в <a href="http://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align">CSS-спецификации</a>, или (что на мой взгляд гораздо полезнее) самостоятельно попробовать различные варианты.

Перевод статьи “<a href="http://www.impressivewebs.com/css-vertical-align/">Understanding CSS’s vertical-align Property</a>”, автор <strong>Louis Lazaris</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2011/12/css-vertical-align/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS-Transitions без использования :hover</title>
		<link>http://dreamhelg.ru/2011/11/css-transitions-whithout-using-hover/</link>
		<comments>http://dreamhelg.ru/2011/11/css-transitions-whithout-using-hover/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 13:08:23 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css-transitions]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/2011/11/css-transitions-%d0%b1%d0%b5%d0%b7-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-hover/</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2011/11/css3-transitions-non-hover.jpg" class="attachment-200x200 wp-post-image" alt="css3-transitions-non-hover" title="css3-transitions-non-hover" /></p>До недавнего времени, наиболее распространенным вариантом использования <strong>CSS-transitions</strong> – было сочетание его с хорошо известным псевдо-классом CSS <strong>:hover</strong>.<span id="more-2192"></span>

Далее представлен наиболее простой пример изменения цвета ссылки, при наведении мыши, выполненный на чистом CSS:

[css]
a, a:link, a:visited {  
    color: lightblue;  
    -webkit-transition: color .4s linear;  
    -moz-transition: color .4s linear;  
    -o-transition: color .4s linear;  
    -ms-transition: color .4s linear;  
    transition: color .4s linear;  
}  
  
a:hover {  
    color: white;  
}  
[/css]

Этот код запустит анимацию свойства <strong>color</strong>, когда вы подведете мышь к ссылке. Наверняка этот простой пример не раз попадался вам на разных сайтах, но это не значит, что transitions ограничивается использованием псевдо-класса <strong>:hover</strong>.

С помощью <strong>transitions</strong>, вы можете анимировать различные CSS-свойства, используя определенные CSS-приемы. Некоторые из этих приемов, (включая демо-версию каждого) приведены в сегодняшней статье.
<h3>Transitions с использованием :active</h3>
Псевдо-класс <strong>:active</strong> <a href="http://reference.sitepoint.com/css/pseudoclass-active">применяется к любому элементу, находящемуся в процессе активации</a>. Основным способом “активации” элемента, является щелчок мышью или нажатие кнопки мыши.

Далее представлен CSS-пример, демонстрирующий использование <strong>:active</strong> совместно с CSS3-transitons, для имитации события <strong>mousedown</strong>:

[css]
.box {  
    width: 300px;  
    height: 300px;  
    background: #222;  
    -webkit-transition: width 2s ease, height 2s ease;  
    -moz-transition: width 2s ease, height 2s ease;  
    -o-transition: width 2s ease, height 2s ease;  
    -ms-transition: width 2s ease, height 2s ease;  
    transition: width 2s ease, height 2s ease;  
}  
  
.box:active {  
    width: 500px;  
    height: 500px;  
}  
[/css]

Подведите курсор мыши к блоку и нажмите кнопку, вы увидите как высота и ширина блока анимируются, становясь больше, пока вы держите кнопку нажатой. Стоит вам отпустить кнопку, и размеры блока плавно вернутся к исходному значению.

<a href="http://dreamhelg.ru/demo/transitions/">Пример</a>.
<h3>Transitions с использованием :focus</h3>
Вы можете использовать псевдо-класс <strong>:focus</strong>, для получения эффекта, описанного в предыдущем примере. В этот раз мы используем форму, и анимируем ширину любого элемента формы, получившего фокус:

[css]
input, textarea {  
    width: 280px;  
    -webkit-transition: width 1s ease;  
    -moz-transition: width 1s ease;  
    -o-transition: width 1s ease;  
    -ms-transition: width 1s ease;  
    transition: width 1s ease;  
}  
  
input:focus, textarea:focus {  
    width: 340px;  
}  
[/css]

<a href="http://dreamhelg.ru/demo/transitions/focus.html">Пример</a>.

<h3>Transitions с использованием :checked</h3>
Вы можете анимировать чекбоксы и радиобаттоны, когда они становятся отмеченными – хотя, тут есть некоторые ограничения, поскольку вы не можете изменить их родную стилизацию.

Поэтому, мы сделаем простое изменение ширины, которое будет появляться в качестве подтверждения отметки текущего элемента:

[css]
input {  
    height: 20px;  
    -webkit-transition: width 1s ease;  
    -moz-transition: width 1s ease;  
    -o-transition: width 1s ease;  
    -ms-transition: width 1s ease;  
    transition: width 1s ease;  
}  
  
input:checked {  
    width: 30px;  
}  
[/css]

<a href="http://dreamhelg.ru/demo/transitions/checked.html">Пример</a>.
<h3>Transitions с использованием :disabled</h3>
Продолжая тему стилизации веб-форм, в этот раз мы комбинируем css3-transitions с jQuery, для запуска анимации фонового цвета элементов формы, при их отключении через атрибут <strong>disabled</strong>:

[css]
input[type=&quot;text&quot;], textarea {  
    background: #e2e2e2;  
    -webkit-transition: background 1s ease;  
    -moz-transition: background 1s ease;  
    -o-transition: background 1s ease;  
    -ms-transition: background 1s ease;  
    transition: background 1s ease;  
}  
  
input:disabled, textarea:disabled {  
    background: #666666;  
}  
[/css]

И немного jQuery, чтобы удалять/добавлять атрибут <strong>disabled:</strong>

[javascript]
$(function() {  
    $('input[type=&quot;radio&quot;]').click(function() {  
        if ($(':checked').val() === &quot;other&quot;) {  
            $('input[type=&quot;text&quot;]').removeAttr(&quot;disabled&quot;);  
        } else {  
            $('input[type=&quot;text&quot;]').attr(&quot;disabled&quot;, &quot;disabled&quot;);  
        }  
    });  
});  
[/javascript]

Итак, если отмечен последний из радиобаттонов (тот, что со значением “Другое”), у текстового поля удаляется атрибут <strong>disabled</strong>, при отметке остальных радиобаттонов, атрибут <strong>disabled,</strong> заново применяется к текстовому полю.

Псевдо-класс <strong>:disabled </strong>применяется к элементу, имеющему одноименный атрибут, поэтому анимация будет срабатывать всякий раз при удалении или добавлении этого атрибута.

<a href="http://dreamhelg.ru/demo/transitions/disabled.html">Пример</a>.


<h3>Transitions с использованием Медиа-запросов</h3>
Последний пример, возможно, наименее полезный из всех, поскольку, давайте смотреть правде в глаза, единственные люди, изменяющие размер окна браузера, чтобы посмотреть что получится – это веб-разработчики.

Тем не менее, это еще один способ использования CSS3-transitions. Такой прием используется на сайте <a href="http://www.modernizr.com/">modernizr.com</a>.

[css]
.box {  
    width: 440px;  
    height: 440px;  
    background: #222;  
    margin: 0 auto;  
    -webkit-transition: width 2s ease, height 2s ease;  
    -moz-transition: width 2s ease, height 2s ease;  
    -o-transition: width 2s ease, height 2s ease;  
    -ms-transition: width 2s ease, height 2s ease;  
    transition: width 2s ease, height 2s ease;  
}  
  
@media only screen and (max-width : 960px) {  
    .box {  
        width: 300px;  
        height: 300px;  
    }  
} 
[/css]

Этот пример одновременно анимирует два свойства, разделенных запятой. Медиа-запрос велит блоку уменьшиться, если размер экрана становится меньше 961 пикселя.

Измените размер окна демонстрационной страницы, чтобы увидеть как это работает.

<a href="http://dreamhelg.ru/demo/transitions/media.html">Пример</a>.
<h3>Несколько замечаний относительно примеров кода</h3>
В каждом фрагменте кода, стандартное название css3-свойства включено последним, несмотря на то, что пока не один из известных мне браузеров не поддерживает его в этом виде.

Кроме того, добавлен префикс –ms, и хотя IE8 и IE9 не поддерживают transitions, но эта поддержка очевидно <a href="http://blogs.msdn.com/b/ie/archive/2011/04/12/native-html5-first-ie10-platform-preview-available-for-download.aspx">будет добавлена</a> в версии IE10.

А еще, примеры кода, которые вы видели в статье намеренно упрощены, в сравнении с теми, что используются на демо-страницах, для того чтобы сфокусироваться только на тех частях, которые мы обсуждали в статье.

Перевод статьи “<a href="http://www.impressivewebs.com/css3-transitions-without-hover/">CSS3 Transitions Without Using :hover</a>”, автор <strong>Louis Lazaris</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2011/11/css-transitions-whithout-using-hover/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Кое-что интересное о CSS-свойстве border</title>
		<link>http://dreamhelg.ru/2011/04/something-interest-about-css-border/</link>
		<comments>http://dreamhelg.ru/2011/04/something-interest-about-css-border/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 07:57:11 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[border]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2146</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2011/04/borderproperty.jpg" class="attachment-200x200 wp-post-image" alt="borderproperty" title="borderproperty" /></p>Несмотря на годы веб-разработки и чтения тематических блогов и книг по CSS, я по-прежнему сталкиваюсь с неизвестными возможностями давно знакомых CSS-свойств.<span id="more-2146"></span>

Возможно это моя вина, я человек привычки, и никогда не рассматирваю подробно вещи, которые мне давно знакомы.

Так, во время чтения книги <a href="https://shop.smashingmagazine.com/smashing-book-2-intl.html">Smashing Book 2</a>, в главе Кристиана Хейлмана был приведен пример следующего CSS-кода:

[css]
#pagetitle {  
    border-color: black white white black;  
}  
[/css]

Первое, о чем я подумал: «Это какая-то ошибка. С каких пор свойство border-color позволяет в сокращенной форме указывать цвет для каждой границы блока?». А затем, я вспомнил, что за 10 лет разработки, я использовал это свойство один или два раза, следовательно, что я могу о нем знать? Плюс, я думаю что Кристиан, как опытный разработчик, знает о чем говорит.

Фактически, каждый раз, когда мне нужно было указать цвет границы, я использовал сокращенную версию свойства <strong>border</strong>, вот так:

[css]
#pagetitle {  
    border: solid 1px black;  
}  
[/css]

Редко когда мне действительно приходится использовать свойства типа: <strong>border-color</strong>, <strong>border-style</strong>, <strong>border-left-style</strong> или любые другие версии этих длинных свойств. В 99% случаев, свойство <strong>border</strong> реализует все, что мне требуется.

В CSS-справочнике на sitepoint.com <a href="http://reference.sitepoint.com/css/border-color">сказано</a>:
<blockquote>Сокращенная запись свойства border-color, устанавливает цвет границы для всех четырех сторон элемента, используя от одного до четырех, указанных значений. Каждая граница может иметь собственное значение.</blockquote>
Следовательно, точно так же как для свойств <strong>margin</strong> и <strong>padding</strong>, цвет для каждой границы задается в следующем порядке: верхняя граница, правая граница, нижняя граница, левая граница (по часовой стрелке, начиная сверху).
<h3>Стиль и ширина границы</h3>
Это правило работает также для свойств <strong>border-style</strong> и <strong>border-width</strong>, так что вы можете указать разную толщину и стиль границы для каждой из сторон элемента.

Ну и конечно, вы можете сокращать свойства, при необходимости:

[css]
#pagetitle {  
    border-width: 2px 1px;  
    border-style: solid dashed;  
}  
[/css]


Снова, также как у <strong>margin</strong> и <strong>padding</strong>, мы указываем только первые два значения, а остальные просто наследуются от первых.
<h3>Запомните</h3>
Нельзя использовать эту технику мульти-объявления для сокращенного CSS-свойства <strong>border</strong> (несмотря на то, что это кажется вполне логичным). Оно применяется только к трем, указанным выше, свойствам, так что следующий код будет неправильным:

[css]
#pagetitle {  
    /* THIS IS INVALID! */  
    border: solid dashed 1px 2px black white white black;  
}  
[/css]

Еще, такой метод не получится применить к свойствам <strong>outline-width</strong>, <strong>outline-style</strong> и <strong>outline-color</strong>.

Перевод статьи «<a href="http://www.impressivewebs.com/interesting-css-border/">Here’s Something Interesting About CSS Borders</a>», автор<strong> Louis Lazaris</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2011/04/something-interest-about-css-border/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Изучаем CSS-позиционирование за 10 шагов</title>
		<link>http://dreamhelg.ru/2011/02/css-position-in-10-steps/</link>
		<comments>http://dreamhelg.ru/2011/02/css-position-in-10-steps/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 13:56:56 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[позиционирование]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2114</guid>
		<description><![CDATA[Позиционирование &#8212; одно из ключевых понятий в блочной верстке. Разобравшись с ним, вам многое станет понятно, а верстка из шаманства превратится в осмысленный процесс. Итак, речь в статье пойдет о [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2011/02/css-position-in-10-steps/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>23 полезных CSS-приема для разработчика</title>
		<link>http://dreamhelg.ru/2010/08/25-useful-css-snippets-for-developer/</link>
		<comments>http://dreamhelg.ru/2010/08/25-useful-css-snippets-for-developer/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 04:00:52 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2089</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/08/home.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>CSS, без сомнения, является одним из самых важных языков разметки, которые мы используем. И хотя HTML описывает структуру документа, ее поведение может быть непредсказуемым, в зависимости от версии браузера. CSS – это тот инструмент, который позволит нам исправить все несоответствия в отображении страницы, а также оформить ее внешний вид.<span id="more-2089"></span>

Далее приведен список из двадцати трех различных CSS-приемов, которые будут полезны как начинающим, так и опытным разработчикам.

<h3>Прячем текст с помощью абзаца</h3>
Такой прием будет весьма полезен для логотипа компании. Чаще всего, в качестве логотипа используется картинка, однако для SEO, было бы неплохо отобразить название компании в тегах <strong>h1</strong>. Данный пример – самый лучший способ это реализовать. Фактически, мы просто скрываем текст за пределами экрана, и вместо этого назначаем фоновую картинку.

[css]
h1 {
	text-indent:-9999px;
	margin:0 auto;
	width:400px;
	height:100px;
	background:transparent url(&quot;images/logo.jpg&quot;) no-repeat scroll;
}
[/css]

<h3>Стилизация ссылок в зависимости от формата файла</h3>
Этот пример направлен на улучшение пользовательского интерфейса. Зачастую в интернете, мы переходим по ссылкам, абсолютно не зная куда они ведут. Следующий фрагмент кода используется для отображения небольших иконок рядом со ссылками. Такие картинки будут подсказывать пользователю, что это внешняя ссылка, электронный адрес, pdf-файл, картинка и т.д.

[css]
/* внешняя ссылка */
a[href^=&quot;http://&quot;]{
	padding-right: 20px;
	background: url(external.gif) no-repeat center right;
}

/* электронная почта */
a[href^=&quot;mailto:&quot;]{
	padding-right: 20px;
	background: url(email.png) no-repeat center right;
}

/* pdfs */
a[href$=&quot;.pdf&quot;]{
	padding-right: 20px;
	background: url(pdf.png) no-repeat center right;
}
[/css]


<h3>Удаляем полосы прокрутки многострочного поля в IE</h3>
Internet Explorer имеет раздражающую привычку добавлять полосы прокрутки в многострочное поле, даже когда его содержимое не превышает заданный размер. Этот недостаток легко исправляется следующей строчкой кода:

[css]
textarea{
	overflow:auto;
}
[/css]

<h3>Буквица</h3>
На сегодняшний день очень распространенное явление в блогах и новостных сайтах. Вы удивитесь, насколько просто она реализовывается, а также прекрасно деградирует в старых браузерах.

[css]
p:first-letter{
	display:block;
	margin:5px 0 0 5px;
	float:left;
	color:#FF3366;
	font-size:60px;
	font-family:Georgia;
}
[/css]


<h3>CSS-прозрачность</h3>
Прозрачность – это свойство, которое разным браузерам, назначается по-разному. С помощью следующего фрагмента кода, вы сможете назначить прозрачность всем браузерам сразу.

[css]
.transparent {
	filter:alpha(opacity=50);
	-moz-opacity:0.5;
	-khtml-opacity: 0.5;
	opacity: 0.5;
}
[/css]

<h3>CSS Reset от Эрика Мейера</h3>
Фактически, <strong>css-reset</strong>, предложенный Эриком Мейером, уже стал повсеместным стандартом использования. Поскольку он был адаптирован многими известными разработчиками, вы можете не сомневаться в его качестве.

[css]
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
}

body {
	line-height: 1;
}

ol, ul {
	list-style: none;
}

blockquote, q {
	quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}

/* remember to define focus styles! */
:focus {
	outline: 0;
}

/* remember to highlight inserts somehow! */
ins {
	text-decoration: none;
}

del {
	text-decoration: line-through;
}

/* tables still need 'cellspacing=&quot;0&quot;' in the markup */
table {
	border-collapse: collapse;
	border-spacing: 0;
}
[/css]

<h3>Предзагрузчик картинок</h3>
Иногда бывает полезно предварительно загрузить ваши картинки, с тем чтобы исключить задержку и мерцание при доступе к нужному элементу.

[css]
div.loader{
	background:url(images/hover.gif) no-repeat;
	background:url(images/hover2.gif) no-repeat;
	background:url(images/hover3.gif) no-repeat;
	margin-left:-10000px;
}
[/css]

<h3>Простой css-спрайт для кнопки</h3>
Наличие кнопки или ссылки с фоновым изображением – обычное дело, кроме того, к таким элементам часто применяются дополнительные эффекты, улучшающие пользовательский интерфейс. Один из таких эффектов – индикатор наведения курсора мыши на кнопку. С помощью спрайта, мы можем реализовать такой эффект путем изменения свойства <strong>background-positon</strong>, на заданное значение, с тем, чтобы отобразить фоновую картинку при наведении мыши на кнопку. Простое, но эффективное решение.

[css]
a {
display: block;
background: url(sprite.png) no-repeat;
height: 30px;
width: 250px;
}

a:hover {
	background-position: 0 -30px;
}
[/css]


<h3>Google Font API</h3>
Не так давно, Google реализовал замечательный ресурс для веб-разработчиков, позволяющий загружать и использовать на странице новые, нестандартные шрифты. К загрузке доступны даже различные варианты шрифтов, жирный, курсив и т.д. Несмотря на то, что коллекция Google пока ограничена, в наличии достаточно большое количество шрифтов. Сначала подключите динамически составленный CSS-файл с названием шрифтов и необходимых вам вариантов, а затем просто используйте названия шрифтов в CSS, в обычном режиме. Дополнительную информацию по Google Font API можно прочитать <a href="http://code.google.com/apis/webfonts/">здесь</a>.

[css]
&lt;head&gt;
	Inconsolata:italic|Droid+Sans&quot;&gt;
&lt;/head&gt;
[/css]

[css]
body {
	font-family: 'Tangerine', 'Inconsolata', 'Droid Sans', serif; font-size: 48px;
}
[/css]

<h3>Хаки для различных браузеров</h3>
Иногда бывает полезно исправить баг у конкретного браузера, и условные комментарии не всегда являются лучшим решением для этого. Этот список браузерных хаков от Криса Койера, поможет вам назначить нужные свойства для определенных браузеров, посредством простого css.

[css]
/* IE 6 */
* html .yourclass { }

/* IE 7 */
*+html .yourclass{ }

/* IE 7 and modern browsers */
html&gt;body .yourclass { }

/* Modern browsers (not IE 7) */
html&gt;/**/body .yourclass { }

/* Opera 9.27 and below */
html:first-child .yourclass { }

/* Safari */
html[xmlns*=&quot;&quot;] body:last-child .yourclass { }

/* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */
body:nth-of-type(1) .yourclass { }

/* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */
body:first-of-type .yourclass {  }

/* Safari 3+, Chrome 1+ */
@media screen and (-webkit-min-device-pixel-ratio:0) {
 .yourclass  {  }
}
[/css]

<h3>Фиксированный подвал</h3>
Возможно, вы подумаете, что создать подвал, всегда приклеенный к низу экрана, это сложная задача. Однако, это совсем не сложно, если вам нужен простой подвал. Здесь нам придется использовать небольшой хак для IE6, но в остальном, это очень легко.

[css]
#footer {
	position:fixed;
	left:0px;
	bottom:0px;
	height:30px;
	width:100%;
	background:#999;
}

/* IE 6 */
* html #footer {
	position:absolute;
	top:expression((0-(footer.offsetHeight)+(document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight)+(ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop))+'px');
}
[/css]

<h3>Поворот изображения</h3>
Вращение картинки может оказаться весьма полезным, особенно если его можно использовать вместо загрузки новой, предварительно развернутой картинки. Предположим, вы хотите использовать только одну картинку для стрелки, но у вас на странице их несколько, причем развернутых в разные направления. Вот решение вашей проблемы:

[css]
img.flip {
	-moz-transform: scaleX(-1);
	-o-transform: scaleX(-1);
	-webkit-transform: scaleX(-1);
	transform: scaleX(-1);
	filter: FlipH;
	-ms-filter: &quot;FlipH&quot;;
}
[/css]

<h3>Clearfix</h3>
Не так давно, кто-то решил, что пришло время очищать поток от флоатов, не добавляя дополнительной разметки к документу. В результате этого решения, был создан класс, который можно применять к контейнеру, содержащему плавающие элементы, для их очистки. Это очень удобный, и широко распространенный способ на сегодняшний день.

[css]
.clearfix:after {
	visibility: hidden;
	display: block;
	font-size: 0;
	content: &quot; &quot;;
	clear: both;
	height: 0;
}

.clearfix { display: inline-block; }

/* start commented backslash hack */
* html .clearfix { height: 1%; }
.clearfix { display: block; }
/* close commented backslash hack */
[/css]

<h3>Закругленные углы</h3>
С постепенным внедрением CSS3 в современных браузерах, создавать закругленные углы стало очень просто. К сожалению, пока нет поддержки CSS3 в IE, включая восьмую версию, но она будет добавлена в IE9.

[css]
.round{
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	border-radius: 10px; /* future proofing */
	-khtml-border-radius: 10px; /* for old Konqueror browsers */
}
[/css]

<h3>Переопределение стилей</h3>
Меня продолжают удивлять люди, незнающие об <strong>!important</strong> в CSS, поскольку это очень мощный и удобный в использовании инструмент. Очень просто, любое правило с <strong>!important</strong> на конце, будет переопределять такое же правило, примененное к этому элементу, в любом месте CSS-файла или в линейных стилях.

[css]
p{
	font-size:20px !important;
}
[/css]

<h3>Font face</h3>
Font-face не использовался широко до прошлого года, хотя он известен еще с тех времен, когда IE6 считался современным браузером. Сейчас это свойство неплохо поддерживается современными браузерами и предлагает отличный способ использования небезопасных шрифтов в своих проектах. Чтобы сэкономить время, можно воспользоваться специальным генератором <a href="http://www.fontsquirrel.com/fontface/generator">Font Squirrel Font Face</a>.

[css]
@font-face {
	font-family: 'Graublau Web';
	src: url('GraublauWeb.eot');
	src: local('☺'),
		url('GraublauWeb.woff') format('woff'), url('GraublauWeb.ttf') format('truetype');
}
[/css]

<h3>Центрирование сайта</h3>
Распространенный дизайнерский прием – горизонтальное центрирование сайта. Это реализуется очень просто.

[css]
.wrapper {
	width:960px;
	margin:0 auto;
}
[/css]

<h3>Min-height в IE</h3>
Этот пример исправляет простой, но досадный баг в IE, при установке минимальной высоты. Вообще, IE интерпретирует высоту в качестве минимальной высоты, так что, если в IE значение высоты не установлено в auto, следующий прием исправит этот баг.

[css]
.box {
	min-height:500px;
	height:auto !important;
	height:500px;
}
[/css]

<h3>Загрузка картинки</h3>
Этот эффект загрузки изображения, имитирует ajax-загрузку, отображая прелоудер, пока весь контент не будет загружен. Такое решение отлично подойдет для больших, медленно загружающихся картинок.

[css]
img {
	background: url(loader.gif) no−repeat 50% 50%;
}
[/css]

<h3>Вертикальное центрирование</h3>
Это небольшой фрагмент кода, позволит вам вертикально центрировать содержимое контейнера, без использования дополнительной разметки. Вам понадобится просто отобразить контейнер в качестве ячейки таблицы, а затем задать значение атрибуту <strong>vertical-align</strong>.

[css]
.container {
	min-height: 10em;
	display: table-cell;
	vertical-align: middle;
}
[/css]

<h3>Создаем врезы</h3>
Для начала, давайте разберемся, что же такое врез? Врезы обычно встречаются на новостных ресурсах и сайтах-журналах, в виде небольшого блока текста, расположенного внутри статьи, иногда в них размещаются мнения людей или цитаты. Вы будете рады узнать, что их очень легко сделать, и при правильном использовании, врезы могут значительно улучшить восприятие статьи пользователем.

[css]
.pullquote {
	width: 300px;
	float: right;
	margin: 5px;
	font-family: Georgia, &quot;Times New Roman&quot;, Times, serif;
	font: italic bold #ff0000 ;
}
[/css]

<h3>Выделение текста</h3>
Не все знают о том, что существует возможность изменить цвет выделенного в браузере текста. Для этого потребуется всего два селектора.

[css]
::selection {
color: #000000;
background-color: #FF0000;
}
::-moz-selection {
color: #000000;
background: #FF0000;
}
[/css]

<h3>Добавляем разрыв страницы</h3>
Этот пример, снова направлен на улучшения пользовательского интерфейса, при выводе на печать. Например, при печати статьи, возможно будет полезно отделить комментарии от текста статьи, и перенести их на отдельную страницу. Если добавить класс .page-break к блоку комментариев, то все комментарии, при печати, будут выведены на отдельной странице. И вообще, этот класс можно использовать в любом месте вашего сайта.

[css]
.page-break{
	page-break-before:always;
}
[/css]

Перевод статьи “<a href="http://www.1stwebdesigner.com/development/useful-css-snippets/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+1stwebdesigner+%281stwebdesigner%29">25 Incredibly Useful CSS Snippets for Developers</a>”, автор <strong>Matthew Corner</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/08/25-useful-css-snippets-for-developer/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Обзор CSS-свойства white-space</title>
		<link>http://dreamhelg.ru/2010/06/css-white-space/</link>
		<comments>http://dreamhelg.ru/2010/06/css-white-space/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 10:00:31 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2067</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/06/home1.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>Немногие, начинающие CSS-кодеры знакомы с таким полезным свойством как <strong>white-space</strong>. Вы вполне можете обходиться без этого свойства долгое время, но однажды, узнав о нем, вы найдете его очень удобным, и будете возвращаться к нему снова и снова.В сегодняшней статье, мы рассмотрим возможные значения свойства <strong>white-space</strong>, а также способы их применения.<span id="more-2067"></span>
<br/>
<h3>Небольшое HTML-введение</h3>
При вставке текста в (X)HTML, независимо от того, сколько пробелов вы поставите между словами, при выводе страницы в окне браузера, все эти пробелы, по умолчанию, будут сокращены до одного. Это довольно удобно, поскольку мы легко можем форматировать текст в коде, с тем чтобы улучшить его читаемость, при этом, не создавая дополнительных пробелов и ненужных разрывов строк.

Однако, если же вы хотите отобразить все пробелы и переносы строк – вам поможет тэг <strong>&lt;pre&gt;</strong>. Весь текст внутри тэгов <strong>&lt;pre&gt;</strong> (если он не заключен в дополнительные тэги), будет выведен точно также, как он отформатирован в коде. При этом, даже если в разметке нет ни одного разрыва строки, тэг <strong>&lt;pre&gt;</strong> все равно добавит одну строчку, для создания дополнительно отступа. Следовательно, вы можете использовать вышеуказанный тэг для переопределения дефолтного подведения HTML.

Кроме того, в (X)HTML есть возможность использовать неразрывный пробел (<strong>&amp;nbsp;</strong>), который используется для создания множественных пробелов. Ранее, для этих целей использовался, устаревший на сегодняшний день, тэг <strong>&lt;nobr&gt;</strong>.

Свойство <strong>white-space</strong> – это CSS-аналог всех вышеперечисленных (X)HTML-методов управления пробелами.
<h3>Описание и возможные значения</h3>
С помощью набора возможных значений, свойство white-space, позволяет нам управлять поведением браузера, при обработке множественных пробелов.

Далее представлен список различных значений свойства white-space, вместе с визуальной демонстрацией их действия.
<h4>Значение: normal</h4>
Это дефолтное значение, при котором текст отображается обычным способом. Значение <strong>normal</strong> следует использовать только в одном, единственном случае – если вы уже назначили тексту другой способ обработки, и теперь хотите переопределить его для какого-то фрагмента.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-normal.jpg"><img class="aligncenter size-full wp-image-2070" title="ws-normal" src="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-normal.jpg" alt="" width="550" height="349" /></a>

<strong>Значение: nowrap</strong>

Это наиболее распространенное значение свойства <strong>white-space</strong>, поскольку оно полностью идентично значению <strong>normal</strong>, за исключением одной особенности. Значение <strong>nowrap</strong> полностью игнорирует переносы строк, независимо от того, были ли они проставлены в коде, или же появились при обработке текста, за счет ограниченного контейнера.

Элемент, которому назначено свойство white-space: nowrap, вместо того, чтобы переносить текст или другие строчные элементы на новую строку, расширит границы родительского блока, до тех пор, пока содержимое не уместится в одну строку. В дополнение, множественные пробелы будут сокращены до одного, также как при значение <strong>normal</strong>.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-nowrap.jpg"><img class="aligncenter size-full wp-image-2071" title="ws-nowrap" src="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-nowrap.jpg" alt="" width="550" height="327" /></a>
<h4>Значение: pre</h4>
Значение <strong>pre</strong>, полностью соответствует вашим ожиданиям –  вы получаете ровно то форматирование, которое видите в коде. Учитываются все пробелы и переносы строк, как если бы текст был заключен в тэги &lt;pre&gt;. Кроме того, если в коде, вы разместили текст без переносов, то границы родительского контейнера будут расширены, для размещения текста в одну строку.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-pre.jpg"><img class="aligncenter size-full wp-image-2072" title="ws-pre" src="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-pre.jpg" alt="" width="550" height="375" /></a>
<h4>Значение: pre-line</h4>
Это значение работает точно также как дефолтное значение <strong>normal</strong>, за исключением одной детали: при обработке будут учитываться переносы строк. Так что, множественные пробелы будут как обычно проигнорированы, но если в вашей разметке есть переносы строк, то все они появятся при выводе в браузере.

Поддержка этого свойства браузерами, оставляет желать лучшего, а именно:
<ul>
	<li>Internet Explorer – начиная с версии 7</li>
	<li>Firefox – начиная с версии 3.0</li>
	<li>Opera  - начиная с версии 9.2</li>
</ul>
<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-preline.jpg"><img class="aligncenter size-full wp-image-2073" title="ws-preline" src="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-preline.jpg" alt="" width="550" height="349" /></a>
<h4>Значение: pre-wrap</h4>
Это значение практически тоже самое что и <strong>pre</strong>, за исключением того, что текст выводится в границах своего родительского элемента. Следовательно, текст не будет вытягиваться в одну строку для имитации форматирования в коде, но множественные пробелы и переносы строк будут учтены.

Поддержка браузерами:
<ul>
	<li>Internet Explorer – начиная с версии 7</li>
	<li>Firefox -  начиная с версии 3.0</li>
</ul>
<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-prewrap.jpg"><img class="aligncenter size-full wp-image-2074" title="ws-prewrap" src="http://dreamhelg.ru/wp-content/uploads/2010/06/ws-prewrap.jpg" alt="" width="550" height="375" /></a>
<h3>Примеры использования</h3>
Наиболее часто, свойство <strong>white-space</strong>, используется для устранения нежелательных переносов строки. Взгляните на картинку:

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/zabox.jpg"><img class="aligncenter size-full wp-image-2068" title="zabox" src="http://dreamhelg.ru/wp-content/uploads/2010/06/zabox.jpg" alt="" width="550" height="226" /></a>

В состав ссылки “read more” входит символ <strong>&amp;raquo;</strong> (кавычка), перенесенный на другую строку в связи с нехваткой свободного пространства. Эту ситуацию легко можно исправить, применив свойство <strong>white-space</strong> в значении <strong>nowrap</strong>. Благодаря этому, ссылка будет целиком перенесена на новую строку как единый объект.

Этот пример еще раз иллюстрирует тот факт, что свойство <strong>white-space</strong> действует только на содержимое элемента, к которому оно применяется. Поэтому, несмотря на то, что ссылка была перенесена на другую строку, текст <strong>внутри</strong> ссылки не был разделен переносом строки.
<h3>Заключение</h3>
Чтобы исключить возможное появление проблем, при использовании свойства <strong>white-space</strong>, следует помнить главное: область его действия распространяется только на строчные элементы контейнера, <strong>к которому применяется свойство</strong>.

Как уже упоминалось выше, наиболее полезным из всех возможных значений свойства <strong>white-space</strong> – является значение <strong>nowrap</strong>. В связи с отсутствием в Internet Explorer полной поддержки значений <strong>pre-line</strong> и <strong>pre-wrap</strong>, они используются не так часто, хотя тоже могут принести немало пользы, если получат более широкую поддержку.

Перевод статьи “<a href="http://www.impressivewebs.com/css-white-space/">The CSS white-space Property Explained</a>”, автор <strong>Louis Lazaris</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/06/css-white-space/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Анимированный ландшафт с помощью CSS и JQuery</title>
		<link>http://dreamhelg.ru/2010/06/animated-landscape-using-css-and-jquery/</link>
		<comments>http://dreamhelg.ru/2010/06/animated-landscape-using-css-and-jquery/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 14:00:31 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2028</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/05/home.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>С появлением JQuery, многие разработчики, не слишком хорошо знакомые с javascript, начали использовать jQuery, благодаря большому количеству различных эффектов, поддерживаемых этим фреймворком. На сегодняшний день, JQuery является одним из самых популярных ява-скрипт-фреймворков. Такая его популярность объясняется простотой использования и наличием множества замечательных эффектов, для применения которых, не требуется углубленных знаний ява-скрипт. В сегодняшней статье, мы создадим анимированную картинку, с помощью CSS и JQuery.<span id="more-2028"></span>

<h3>Шаг 1. Подготовка файлов</h3>
Для начала, нам необходимо подготовить все файлы, необходимые для этого примера, затем создать один HTML-файл, один CSS-файл и папку, которая будет содержать все наши картинки.

Прежде, чем мы начнем, посмотрите <a href="http://acrisdesign.com/demo/landscape/">демо</a>.

<h3>Шаг 2. HTML-страница</h3>
Теперь, создадим HTML-разметку, которая будет содержать контейнер с фиксированной высотой и шириной, а внутри него будет еще один блок, содержащий все элементы нашей страницы. В результате, у нас получилась вот такая разметка:

[html]
&lt;div id=&quot;wrapper&quot;&gt;
&lt;div id=&quot;inner&quot;&gt;
    &lt;div id=&quot;cloudone&quot;&gt;&lt;img src=&quot;images/clud1.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
    &lt;div id=&quot;cloudtwo&quot;&gt;&lt;img src=&quot;images/clud2.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
    &lt;div id=&quot;cloudthree&quot;&gt;&lt;img src=&quot;images/clud1.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
    &lt;div id=&quot;boat&quot;&gt;&lt;img src=&quot;images/boat.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
[/html]

Полная версия:

[html]
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Animated Landscape Using CSS and jQuery&lt;/title&gt;
&lt;link href=&quot;style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;wrapper&quot;&gt;
&lt;div id=&quot;inner&quot;&gt;
    &lt;div id=&quot;cloudone&quot;&gt;&lt;img src=&quot;images/clud1.png&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;cloudtwo&quot;&gt;&lt;img src=&quot;images/clud2.png&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;cloudthree&quot;&gt;&lt;img src=&quot;images/clud1.png&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;boat&quot;&gt;&lt;img src=&quot;images/boat.png&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
[/html]

<h3>Шаг 2. CSS-стили</h3>
Далее добавим немного CSS-стилей, без которых просто нельзя обойтись. Здесь следует обратить внимание на два момента – это свойство overflow: hidden, которое обязательно должно быть установлено для блока #inner, и абсолютное позиционирование, для всех, двигающихся картинок. На данном этапе, мы вынесем наши движущиеся изображения (облака и лодку) за пределы контейнера, путем установки отрицательных полей, с тем чтобы в дальнейшем, с помощью JQuery, получить красивый эффект. Далее CSS-код, необходимый для нашего примера:

[css]
#wrapper {
	width:800px;
	height:600px;
       /* main background image with sky, sun, river and ground */
	background-image:url(images/Untitled-3.jpg);
	background-repeat:no-repeat;
	margin-top:10px;
	margin-left:auto;
	margin-right:auto;
	border: 10px solid #666;
}
#inner {
	position:relative;
	overflow:hidden;
	width:800px;
	height:600px;
	margin:0px;
}
#cloudone {
	position:absolute;
	margin-top:2px;
	margin-left:-200px;
	filter:alpha(opacity=80);
  /* CSS3 standard */
        opacity:0.8;
}
#cloudtwo {
	position:absolute;
	margin-top:80px;
	margin-left:-300px;
	filter:alpha(opacity=60);
  /* CSS3 standard */
        opacity:0.6;
}
#cloudthree {
	position:absolute;
	margin-top:60px;
	margin-left:-600px;
	filter:alpha(opacity=70);
  /* CSS3 standard */
        opacity:0.7;
}
#boat {
	margin-top:360px;
	position:absolute;
	margin-left:800px;
}
[/css]

<h3>Шаг 4. jQuery</h3>
Прежде всего, нам необходимо подключить jQuery, к нашей странице:

[html]
&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;landscape.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
[/html]


Здесь, мы дважды будем использовать функцию <strong>.animate</strong>, для анимирования облаков и лодки. Кроме того, мы создадим специальную функцию для того, чтобы облака и лодка двигались по кругу. Смотрите пример ниже.

[javascript]
function cloudone(){
    $(&quot;#cloudone&quot;).animate({left:&quot;+=1200px&quot;},10000).animate({left:&quot;-200px&quot;}, 0)
    setTimeout(&quot;cloudone()&quot;,10000);
}
[/javascript]

В приведенном коде происходит следующее: с помощью первой функции <strong>.animate</strong>, мы двигаем объект #cloudone вправо, на 1200 пикселей, причем объект будет двигаться со скользящим эффектом, в течении 10 секунд. Далее, вторая функция <strong>.animate</strong> возвращает объект на исходную позицию, с интервалом 0 секунд. Для того, чтобы снова запустить анимацию, нам необходимо суммировать временные интервалы обоих функций <strong>.animate</strong>, и с помощью функции <strong>setTimeout</strong>, мы сможем снова запустить цикл вращения картинки. Таким образом, можно анимировать все картинки. Далее приведен код, для анимации остальных изображений:

[javascript]
function cloudone(){
   $(&quot;#cloudone&quot;).animate({left:&quot;+=1200px&quot;},10000).animate({left:&quot;-200px&quot;}, 0)
   setTimeout(&quot;cloudone()&quot;,10000);
}
function cloudtwo(){
   $(&quot;#cloudtwo&quot;).animate({left:&quot;+=1500px&quot;},15000).animate({left:&quot;-300px&quot;}, 0)
   setTimeout(&quot;cloudtwo()&quot;,15000);
}
function cloudthree(){
   $(&quot;#cloudthree&quot;).animate({left:&quot;+=2000px&quot;},20000).animate({left:&quot;-600px&quot;}, 0)
   setTimeout(&quot;cloudthree()&quot;,20000);
}
function boat(){
   //This time we need to move boat to left side so we put the margin to 1000px
   $(&quot;#boat&quot;).animate({right:&quot;+=1000px&quot;},20000).animate({right:&quot;-200px&quot;}, 0)
   setTimeout(&quot;boat()&quot;,20000);
}
[/javascript]

Теперь, нам нужно запустить всю нашу анимацию (cloudone(), cloudtwo(), cloudthree), сразу после того, как загрузится страница. Это делается следующим образом:

[javascript]
$(document).ready(function() {
	setTimeout(&quot;cloudone()&quot;,10);
	setTimeout(&quot;cloudtwo()&quot;,10);
	setTimeout(&quot;cloudthree()&quot;,10);
	setTimeout(&quot;boat()&quot;,10);
});
[/javascript]

Весь код, будет выглядеть вот так.

[javascript]
$(document).ready(function() {
	setTimeout(&quot;cloudone()&quot;,10);
	setTimeout(&quot;cloudtwo()&quot;,10);
	setTimeout(&quot;cloudthree()&quot;,10);
	setTimeout(&quot;boat()&quot;,10);
});
function cloudone(){
	$(&quot;#cloudone&quot;).animate({left:&quot;+=1200px&quot;},10000).animate({left:&quot;-200px&quot;}, 0)
	setTimeout(&quot;cloudone()&quot;,10000);
}
function cloudtwo(){
	$(&quot;#cloudtwo&quot;).animate({left:&quot;+=1500px&quot;},15000).animate({left:&quot;-300px&quot;}, 0)
	setTimeout(&quot;cloudtwo()&quot;,15000);
}
function cloudthree(){
	$(&quot;#cloudthree&quot;).animate({left:&quot;+=2000px&quot;},20000).animate({left:&quot;-600px&quot;}, 0)
	setTimeout(&quot;cloudthree()&quot;,20000);
}
function boat(){
	$(&quot;#boat&quot;).animate({right:&quot;+=1000px&quot;},20000).animate({right:&quot;-200px&quot;}, 0)
	setTimeout(&quot;boat()&quot;,20000);
}
[/javascript]

Перевод статьи “<a href="http://acrisdesign.com/2010/04/animated-landscape-using-css-and-jquery/">Animated Landscape Using CSS and jQuery</a>”, автор <strong>Vikas Ghodke</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/06/animated-landscape-using-css-and-jquery/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Что такое inline-block?</title>
		<link>http://dreamhelg.ru/2010/04/what-is-inline-block/</link>
		<comments>http://dreamhelg.ru/2010/04/what-is-inline-block/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 06:48:27 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[display]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1997</guid>
		<description><![CDATA[<p><img width="184" height="184" src="http://dreamhelg.ru/wp-content/uploads/2010/04/inline-block.jpg" class="attachment-200x200 wp-post-image" alt="inline-block" title="inline-block" /></p>Если вы работаете с CSS не первый день, то наверняка знакомы со значением <strong>inline-block</strong>, свойства display. Наиболее часто эту связку используют для устранения проблем в IE6.<span id="more-1997"></span>

Попробую вкратце объяснить о чем идет речь. Если вы назначаете float элементу и одновременно задаете margin с той же стороны, то в IE6 margin (странным образом) удвоится. Проблему можно исправить, применив хак специально для IE6, в котором можно указать значение margin в половину меньше от оригинала, или же вы можете назначить элементу свойство display в значение <strong>inline-block</strong>. Это разрешит проблему в большинстве, если не во всех случаях.

Однако, решение проблемы с двойными полями в IE6, далеко не единственное применение значения <strong>inline-block</strong>, оно может принести гораздо больше пользы, если хорошо его изучить.
<h3>Определение</h3>
Далее представлены несколько описаний для значения <strong>inline-block</strong>, взятые из разных источников:

<a href="http://reference.sitepoint.com/css/display">CSS-справочник Sitepoint</a>
<blockquote><em>Значение inline-block генерирует блочный элемент, с поведением строчного элемента</em></blockquote>
<a href="http://www.quirksmode.org/css/display.html">QuirksMode</a>
<blockquote><em>Строчный блок располагается в той же самой строке, что и соседний контент, но при этом ведет себя как блок</em></blockquote>
<a href="http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/">Роберт Нэйман:</a>
<blockquote><em>В основном, это способ сделать элементы строчными, при этом сохранив его блочные возможности, такие как указание ширины и высоты, верхних и нижних отступов, паддингов и др.</em></blockquote>
Я думаю определение Роберта Нэймана самое лучшее, поскольку сразу объясняет практический смысл значения.
<h3>Демонстрация</h3>
Нижеприведенное изображение демонстрирует значение <strong>inline-block</strong> в действии:

<a href="http://dreamhelg.ru/wp-content/uploads/2010/04/example-inline.png"><img class="aligncenter size-full wp-image-2001" title="example-inline" src="http://dreamhelg.ru/wp-content/uploads/2010/04/example-inline.png" alt="" width="440" height="220" /></a>
<h3>Как его можно использовать?</h3>
Есть несколько ситуаций, с которыми вам поможет справиться <strong>inline-block</strong>:
<ul>
	<li>для исправления двойных полей у плавающих элементов в IE6 (как уже говорилось выше)</li>
	<li>для позиционирования блочных элементов в одной строке без использования float</li>
	<li>для указания ширины и высоты строчному элементу, без изменения его поведения</li>
	<li>для указания строчному элементу полей и отступов.</li>
</ul>
<h3>То, что следует запомнить</h3>
При использовании значения <strong>inline-block</strong>, следует помнить о некоторых факторах и недостатках. Элемент, с назначенным <strong>inline-block</strong>, является чувствительным к пробелам. То есть, если вы применяете это значение к маркированному списку (например для создания навигации), то каждый элемент списка будет иметь дополнительное пустое пространство на стыке двух элементов. Для того, чтобы этого избежать, необходимо удалить любые пробелы, разделяющие элементы &lt;li&gt;, в HTML-разметке. Следовательно, ваш HTML-код будет выглядеть следующим образом:

[html]
&lt;ul&gt;  
    &lt;li&gt;Item One&lt;/li&gt;&lt;li&gt;Item Two&lt;/li&gt;&lt;li&gt;Item Three&lt;/li&gt;&lt;li&gt;Item Four&lt;/li&gt;&lt;li&gt;Item Five&lt;/li&gt;  
&lt;/ul&gt;  
[/html]

Или еще хуже:

[html]
&lt;ul&gt;  
    &lt;li&gt;Item One&lt;/li  
    &gt;&lt;li&gt;Item Two&lt;/li  
    &gt;&lt;li&gt;Item Three&lt;/li  
    &gt;&lt;li&gt;Item Four&lt;/li  
    &gt;&lt;li&gt;Item Five&lt;/li&gt;  
&lt;/ul&gt;  
[/html]

Есть и другое решение этой проблемы – можно назначить font-size: 0, для элемента &lt;ul&gt;, а затем увеличить размер шрифта для элементов списка &lt;li&gt;. Но это не очень хорошее решение, в данном случае, лучше отказаться от использования <strong>inline-block</strong>.

Кроме того, если у вас на странице предполагается наличие нескольких элементов, с разной высотой и значением <strong>inline-block</strong>, вам следует указать им дополнительное свойство vertical-align: top, для того, чтобы предотвратить расположение блоков в шахматном порядке. На <a href="http://www.brunildo.org/test/inline-block.html">этой</a> странице можно ознакомиться с различными примерами расстановки элементов, с назначенным значением <strong>inline-block</strong>.

Ну и наконец, во время многочисленных экспериментов, выяснилось, что <strong>inline-block</strong>, ведет себя не вполне обычно, когда он применяется к элементу внутри текста, заключенного в элемент параграфа.
<h3>Поддержка браузерами</h3>
Думаю вы не удивитесь, узнав, что<strong> inline-block</strong> работает во всех браузерах, кроме IE6 и IE7. Но имитировать работу этого значения не так уж сложно. Для того, чтобы применить к элементу значение inline-block в IE6 и IE7, нужно всего лишь установить свойство display в значение inline, а затем назначить элементу <a href="http://reference.sitepoint.com/css/haslayout">layout</a>. Главное, убедитесь, что значение inline, появляется после значения <strong>inline-block</strong> в CSS-файле, и не забудьте спрятать inline от других браузеров.

Перевод статьи “<a href="http://www.impressivewebs.com/inline-block/">What is Inline-Block?”</a>, автор <strong>Louis Lazaris</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/04/what-is-inline-block/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Создание навигации &#8220;волшебная линия&#8221; с помощью jQuery</title>
		<link>http://dreamhelg.ru/2010/02/create-magic-line-navigation-with-jquery/</link>
		<comments>http://dreamhelg.ru/2010/02/create-magic-line-navigation-with-jquery/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 18:41:17 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[навигация]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1903</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/02/home1.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>Такой “скользящий” стиль навигации существует довольно давно, мне всего лишь было нужно изменить его немного под собственные нужды, поскольку появилась такая возможность. Это оказалось очень легко. Можете взглянуть на <a href="http://dreamhelg.ru/demo/magic-line/">два примера</a> такой навигации на демонстрационной странице.<span id="more-1903"></span>
<h3>Идея</h3>
Идея состоит в наличие какой-либо подсветки (фонового изображения или подчеркивания), следующей за мышью, при наведении к какому-либо пункту меню. Это реализуется с помощью анимации jQuery. Следовательно, “волшебную линию” можно добавить только с помощью JavaScript. После того, как линия будет добавлена и стилизована, при движении мыши к любому пункту меню, ее ширина и левое позиционирование будет изменятся с анимационным эффектом.
<h3>HTML</h3>
Здесь обычный маркированный список. Ему назначен класс “group”, так как в примере будет использовано два горизонтальных меню. ID используется для указания элемента JavaScript.

[html]
&lt;div class=&quot;nav-wrap&quot;&gt;
 &lt;ul class=&quot;group&quot; id=&quot;example-one&quot;&gt;
    &lt;li class=&quot;current_page_item&quot;&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Buy Tickets&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Group Sales&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Reviews&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;The Show&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Videos&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Photos&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Magic Shop&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/div&gt;
[/html]

Обратите внимание, что список заключен внутри блока .nav-wrap. Это сделано в связи с особенностями стилизации. Панель, на которой расположена навигация, растянута на всю ширину экрана, но сама навигация центрирована внутри этой панели.

<h3>CSS</h3>
Здесь мы располагаем список горизонтально, и позиционируем волшебную линию абсолютно, поверх меню. Все остальное – просто наведение красоты.

[css]
.nav-wrap { margin: 50px auto;  background-color: rgba(0,0,0,0.6); border-top: 2px solid white; border-bottom: 2px solid white; }
#example-one { margin: 0 auto; list-style: none; position: relative; width: 960px; }
#example-one li { display: inline-block; }
#example-one li a { color: #bbb; font-size: 14px; display: block; float: left; padding: 6px 10px 4px 10px; text-decoration: none; text-transform: uppercase; }
#example-one li a:hover { color: white; }
#magic-line { position: absolute; bottom: -2px; left: 0; width: 100px; height: 2px; background: #fe4902; }
[/css]

<h3>JQuery JavaScript</h3>
<ol>
	<li>Когда DOM загружен…</li>
	<li>Устанавливаем переменные, включающие текущее левое смещение навигации</li>
	<li>Добавляем волшебную линию к навигации</li>
	<li>Назначаем позиционирование и ширину волшебной линии равной значению текущего элемента списка</li>
	<li>Также назначаем оригинальную ширину и позиционирование в качестве данных, с тем чтобы их можно было использовать для обратной анимации</li>
	<li>При наведении мыши, подсчитываем новую ширину и левое позиционирование, и включаем анимацию для изменения этих значений</li>
	<li>При отведении мыши от пункта меню, включаем анимацию возвращения линии на исходную позицию.</li>
</ol>

[javascript]
$(function() {

    var $el, leftPos, newWidth,
        $mainNav = $(&quot;#example-one&quot;);

    $mainNav.append(&quot;&lt;li id='magic-line'&gt;&lt;/li&gt;&quot;);
    var $magicLine = $(&quot;#magic-line&quot;);

    $magicLine
        .width($(&quot;.current_page_item&quot;).width())
        .css(&quot;left&quot;, $(&quot;.current_page_item a&quot;).position().left)
        .data(&quot;origLeft&quot;, $magicLine.position().left)
        .data(&quot;origWidth&quot;, $magicLine.width());

    $(&quot;#example-one li a&quot;).hover(function() {
        $el = $(this);
        leftPos = $el.position().left;
        newWidth = $el.parent().width();
        $magicLine.stop().animate({
            left: leftPos,
            width: newWidth
        });
    }, function() {
        $magicLine.stop().animate({
            left: $magicLine.data(&quot;origLeft&quot;),
            width: $magicLine.data(&quot;origWidth&quot;)
        });
    });
});
[/javascript]

<h3>Альтернативная версия</h3>
На демонстрационной <a href="http://dreamhelg.ru/demo/magic-line/">странице</a>, также имеется альтернативная версия “волшебной” линии, использующая фон вместо линии, и анимирующей цвет вместе с шириной и левым позиционированием. В основе все то же самое, отличается разве что CSS и JavaScript, который получает цвет для нового элемента списка, из HTML-атрибута rel. Для анимации цвета, потребуется <a href="http://plugins.jquery.com/files/jquery.color.js.txt">специальный плагин</a>.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/02/magicline.zip">Скачать архив с примером</a>.

Перевод статьи “<a href="http://css-tricks.com/jquery-magicline-navigation/">jQuery MagicLine Navigation</a>”, автор <strong>Chris Coyier</strong>

<strong>Примечение:</strong>
После небольшой доработки, скрипт нормально работает в опере и IE7-8, насчет IE6 не знаю, не тестировала.]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/02/create-magic-line-navigation-with-jquery/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Создание формы со скользящими подписями</title>
		<link>http://dreamhelg.ru/2010/01/create-form-with-sliding-labels/</link>
		<comments>http://dreamhelg.ru/2010/01/create-form-with-sliding-labels/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 08:47:34 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[label]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1850</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/01/home1.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>Пару недель назад, я читал статью <a href="http://www.lukew.com/">Люка Вроблевски</a>. Для тех, кто еще не слышал о нем, Люк -  автор книги о правильном дизайне веб-форм.

В его статье, меня особенно заинтересовала часть, о расположении подписей внутри текстовых полей:<span id="more-1850"></span>
<br/>
<p><blockquote><em>Поскольку подписи, расположенные внутри текстовых полей, исчезают при вводе текста, вместе с ними исчезает контекст введенных данных. Так что, если вы вдруг забудете, на какой вопрос вы ввели ответ, значит вам не повезло – подпись к полю вы, скорее всего нигде не найдете. Из этого следует, что подписи, расположенные внутри текстовых полей – не самое лучшее решение для создания длинных форм. Когда вы заполните форму до конца, все подписи пропадут! В этом случае, гораздо сложнее будет вернутся и проверить свои ответы.</em>

<em>Люк Вроблевски</em></blockquote></p>

Эти слова стали хорошим поводом для размышления. Конечно, вы можете взглянуть на поле со значением “Вася Пупкин”, и точно сказать что это поле для ввода имени. Но в случае с длинными формами, очень легко забыть вопросы, на которые вы отвечали.

Самым лучшим решением, по мнению Люка, является размещение подписей за пределами текстового поля, с тем, чтобы они всегда были доступны для пользователя. Я думаю это неплохое решение, но мы можем придумать кое-что поинтереснее.
<h3>Скользящие подписи</h3>
После прочтения этой статьи, мне пришло в голову, что мы вполне можем использовать преимущества каждого из методов. Мне нравится как выглядят подсказки внутри полей, но тем не менее, я согласен с тем, что она всегда должна оставаться на экране. Но, к счастью у нас в распоряжении есть JQuery, мы знакомы с принципом постепенного улучшения, поэтому давайте создадим подписи, расположенные внутри текстовых полей, которые, вместо того, чтобы исчезать, будут сдвигаться влево (или вверх, как вам больше хочется), при клике по текстовому полю.

<h3>HTML</h3>

[html]
&lt;form action=&quot;&quot; method=&quot;post&quot; id=&quot;info&quot;&gt;
    &lt;h2&gt;Контактная информация&lt;/h2&gt;
    &lt;div id=&quot;name-wrap&quot; class=&quot;slider&quot;&gt;
        &lt;label for=&quot;name&quot;&gt;
            Имя
        &lt;/label&gt;
        &lt;input type=&quot;text&quot; id=&quot;name&quot; name=&quot;name&quot;&gt;
    &lt;/div&gt;&lt;!--/#name-wrap--&gt;
    &lt;div id=&quot;email-wrap&quot; class=&quot;slider&quot;&gt;
        &lt;label for=&quot;email&quot;&gt;
            E&amp;ndash;mail
        &lt;/label&gt;
        &lt;input type=&quot;text&quot; id=&quot;email&quot; name=&quot;email&quot;&gt;
    &lt;/div&gt;&lt;!--/#email-wrap--&gt;
    &lt;div id=&quot;street-wrap&quot; class=&quot;slider&quot;&gt;
        &lt;label for=&quot;st&quot;&gt;
            Город
        &lt;/label&gt;
        &lt;input type=&quot;text&quot; id=&quot;st&quot; name=&quot;st&quot;&gt;
    &lt;/div&gt;&lt;!--/#street-wrap--&gt;
    &lt;div id=&quot;city-wrap&quot; class=&quot;slider&quot;&gt;
        &lt;label for=&quot;city&quot;&gt;
            Улица
        &lt;/label&gt;
        &lt;input type=&quot;text&quot; id=&quot;city&quot; name=&quot;city&quot;&gt;
    &lt;/div&gt;&lt;!--/#city-wrap--&gt;
    &lt;div id=&quot;zip-wrap&quot; class=&quot;slider&quot;&gt;
        &lt;label for=&quot;zip&quot;&gt;
            Индекс
        &lt;/label&gt;
        &lt;input type=&quot;text&quot; id=&quot;zip&quot; name=&quot;zip&quot;&gt;
    &lt;/div&gt;&lt;!--/#zip-wrap--&gt;
    &lt;input type=&quot;submit&quot; id=&quot;btn&quot; name=&quot;btn&quot; value=&quot;отправить&quot;&gt;
&lt;/form&gt;
[/html]

Единственным необходимым элементом, для создания скользящих подписей (в моей реализации), является оборачивающий элемент (в моем примере DIV), и применение к нему класса “slider” (это легко можно изменить в JavaScript).

На этом этапе, у нас получилась очень простая, и некрасивая форма:
<p style="text-align: center;"><img class="aligncenter" src="http://dreamhelg.ru/wp-content/uploads/2010/01/one_thumb.jpg" alt="one" width="292" height="266" /></p>

<h3>CSS</h3>
[css]
body {
    font: 12px / 1.3 Arial, Sans-serif;
}

form {
    width: 360px;
    padding: 10px 20px 30px 60px;
    margin: auto;
    background: #f7f7f7;
    border: 1px solid #ddd;
}

div {
    clear: both;
    position: relative;
    margin: 0 0 10px;
}

label {
    cursor: pointer;
    display: block;
}

input[type =
&quot;text&quot;] {
    width: 300px;
    border: 1px solid #999;
    padding: 5px;
    -moz-border-radius: 4px;
}

input[type =
&quot;text&quot;]:focus {
    border-color: #777;
}

input[name =
&quot;zip&quot;] {
    width: 150px;
}

/* submit button */
input[type =
&quot;submit&quot;] {
    cursor: pointer;
    border: 1px solid #999;
    padding: 5px;
    -moz-border-radius: 4px;
    background: #eee;
}

input[type =
&quot;submit&quot;]:hover, input[type = &quot;submit&quot;]:focus {
    border-color: #333;
    background: #ddd;
}

input[type =
&quot;submit&quot;]:active {
    margin-top: 1px;
}
[/css]

Единственный, 100%-необходимый CSS в этом примере – это применение position: relatve, к оборачивающему элементу (DIV). Все остальное используется только для настройки внешнего вида формы, вы можете изменять его по своему вкусу.

Теперь у нас получилась вполне симпатичная форма, в которой подписи расположены сверху непосредственных полей ввода.
<p style="text-align: center;"><img class="aligncenter" title="two" src="http://dreamhelg.ru/wp-content/uploads/2010/01/two.jpg" alt="two" width="384" height="392" /></p>

<h3>jQuery</h3>
Теперь, раздел, который все обычно пропускают, переходя к демо-странице:

[javascript]
$('form#info .slider label').each(function(){
	var labelColor = '#999';
	var restingPosition = '5px';

	// стилизация и позиционирование подписей 
	$(this).css({
		'color' : labelColor,
		 	'position' : 'absolute',
	 		'top' : '6px',
			'left' : restingPosition,
			'display' : 'inline',
    	               'z-index' : '99'
	});

	// получение введенного в поле, значения
	var inputval = $(this).next('input').val();

	// получение длины подписи, и добавление к ней 5px 
	var labelwidth = $(this).width();
	var labelmove = labelwidth + 5;

	//проверяем, если поле заполнено, то сдвигаем подпись за пределы поля
	if(inputval !== ''){
		$(this).stop().animate({ 'left':'-'+labelmove }, 1);
	}    	

	// если значение поля пустое при фокусе, сдвигаем подпись влево
	// если оно осталось пустым, при потере фокуса, возвращаем их обратно
	$('input').focus(function(){
		var label = $(this).prev('label');
		var width = $(label).width();
		var adjust = width + 5;
		var value = $(this).val();

		if(value == ''){
			label.stop().animate({ 'left':'-'+adjust }, 'fast');
		} else {
			label.css({ 'left':'-'+adjust });
		}
	}).blur(function(){
		var label = $(this).prev('label');
		var value = $(this).val();
		if(value == ''){
			label.stop().animate({ 'left':restingPosition }, 'fast');
		}
	});
})
[/javascript]

Вот и все, у вас должна получится полностью работающая форма со скользящими подписями.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/01/final.jpg"><img class="aligncenter size-full wp-image-1857" title="final" src="http://dreamhelg.ru/wp-content/uploads/2010/01/final.jpg" alt="" width="373" height="312" /></a>

Обратите внимание, что форма остается рабочей, даже с отключенным ява-скриптом, это является основным принципом постепенного улучшения. Верите или нет, но все еще остаются люди, не использующие ява-скрипт при просмотре веб-страниц.

<a href="http://dreamhelg.ru/demo/sliding-labels/index.htm">Демонстрационная страница</a>.
<a href="http://dreamhelg.ru/wp-content/uploads/2010/01/demo.zip">Архив с примером</a>.

Перевод статьи “<a href="http://www.csskarma.com/blog/sliding-labels/">Form Design with Sliding Labels</a>”, автор <strong>Tim Wright</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/01/create-form-with-sliding-labels/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
	</channel>
</rss>

