<?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/translate/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>10 отличных jQuery-сниппетов</title>
		<link>http://dreamhelg.ru/2011/11/10-awesome-jquery-snippets/</link>
		<comments>http://dreamhelg.ru/2011/11/10-awesome-jquery-snippets/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:39:00 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[изучаем Jquery]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2207</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2011/11/home.jpg" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>jQuery вдохнул новую жизнь в JavaScript-программирование. Благодаря этому замечательному инструменту, появилась возможность с легкостью создавать мощные и интерактивные страницы. В сегодняшней статье собраны 10 полезных примеров jQuery-кода, которые обязательно вам пригодятся при разработке клиентской стороны сайта.<span id="more-2207"></span>

<h3>Предзагрузка изображений</h3>
Предзагрузка изображений весьма удобна: вместо того чтобы загружать картинку по запросу пользователя, мы предварительно подгружаем их в фоне, для того чтобы они сразу были готовы к показу. С помощью jQuery это делается очень просто, смотрите:

[javascript]
(function($) {
  var cache = [];
  // Аргументами являются пути картинок, относительно текущей страницы
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }

jQuery.preLoadImages(&quot;image1.gif&quot;, &quot;/path/to/image2.png&quot;);
[/javascript]

Источник: <a title="http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript" href="http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript">http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript</a>

<h3>Ссылки target=”blank”</h3>
Следующий фрагмент предназначен для того, чтобы все ссылки, имеющие атрибут <strong>rel=”external”, </strong>открывались в новом табе/окне. Код легко можно изменить, например открывать ссылки только с определенным классом.

[javascript]
$('a[@rel$='external']').click(function(){
     this.target = &quot;_blank&quot;;
});

/*
   Использование:
   &lt;a href=&quot;http://www.catswhocode.com&quot; rel=&quot;external&quot;&gt;catswhocode.com&lt;/a&gt;
*/
[/javascript]

Источник: <a title="http://snipplr.com/view/315/-jquery–target-blank-links/" href="http://snipplr.com/view/315/-jquery–target-blank-links">http://snipplr.com/view/315/-jquery–target-blank-links</a>
<h3>Добавление класса тэгу &lt;body&gt; при включенном ява-скрипте</h3>
Этот пример состоит всего из одной строчки, но он является самым простым способом определить включен ли ява-скрипт в клиентском браузере. Если ява-скрипт включен, класс <strong>hasJs</strong> будет добавлен к тегу <strong>&lt;body&gt;.</strong>

[javascript]
$('body').addClass('hasJS');
[/javascript]

Источник: <a title="http://eisabainyo.net/weblog/2010/09/01/10-useful-jquery-snippets/" href="http://eisabainyo.net/weblog/2010/09/01/10-useful-jquery-snippets">http://eisabainyo.net/weblog/2010/09/01/10-useful-jquery-snippets</a>

<h3>Плавная прокрутка по ссылке</h3>
jQuery хорошо известен своей возможностью легко создавать красивые визуальные эффекты. Одним из таких эффектов, является плавная прокрутка страницы, при нажатии на ссылку. Следующий пример демонстрирует пример такой прокрутки страницы, по клику на ссылку с классом <strong>topLink.</strong>

[javascript]
$(document).ready(function() {
	$(&quot;a.topLink&quot;).click(function() {
		$(&quot;html, body&quot;).animate({
			scrollTop: $($(this).attr(&quot;href&quot;)).offset().top + &quot;px&quot;
		}, {
			duration: 500,
			easing: &quot;swing&quot;
		});
		return false;
	});
});
[/javascript]

Источник: <a title="http://snipplr.com/view.php?codeview&amp;id=26739" href="http://snipplr.com/view.php?codeview&amp;id=26739">http://snipplr.com/view.php?codeview&amp;id=26739</a>

<h3>Изменение прозрачности при наведении</h3>
Еще один красивый эффект – очень популярный среди клиентов – эффект затухания элемента при движении мыши. Следующий пример кода, реализует плавное изменение прозрачности картинки при наведении/отведении мыши.

[javascript]
$(document).ready(function(){
    $(&quot;.thumbs img&quot;).fadeTo(&quot;slow&quot;, 0.6); // Эта строчка при загрузке страницы задает всем миниатюрам прозрачность равную 60% 
    
    $(&quot;.thumbs img&quot;).hover(function(){
        $(this).fadeTo(&quot;slow&quot;, 1.0);  // Делаем картинку непрозрачной, при наведении мыши
    },function(){
        $(this).fadeTo(&quot;slow&quot;, 0.6); // Снова возвращаем прозрачность 60%, при отведении мыши
    });
});
[/javascript]

Источник: <a title="http://snipplr.com/view/18606/" href="http://snipplr.com/view/18606">http://snipplr.com/view/18606</a>
<h3>Колонки одинаковой высоты</h3>
При создании сайта с колонками, очень часто требуется, чтобы все колонки были одинаковой высоты, как это можно было сделать в старых, добрых таблицах. Этот пример кода вычисляет высоту самой длинной колонки, и автоматически задает ту же высоту всем остальным.

[javascript]
var max_height = 0;
$(&quot;div.col&quot;).each(function(){
    if ($(this).height() &gt; max_height) { max_height = $(this).height(); }
});
$(&quot;div.col&quot;).height(max_height);
[/javascript]

Источник: <a title="http://web.enavu.com/tutorials/top-10-jquery-snippets-including-jquery-1-4/" href="http://web.enavu.com/tutorials/top-10-jquery-snippets-including-jquery-1-4">http://web.enavu.com/tutorials/top-10-jquery-snippets-including-jquery-1-4</a>

<h3>Включаем HTML5-разметку в старых браузерах</h3>
HTML5 – это будущее клиентской веб-разработки. К сожалению, некоторые старые браузеры не умеют распознавать новые теги, такие как <strong>header</strong> и <strong>section. </strong>Этот пример кода, научит старые браузеры распознавать новые HTML5-тэги.

[javascript]
(function(){if(!/*@cc_on!@*/0)return;var e = &quot;abbr,article,aside,audio,bb,canvas,datagrid,datalist,details,dialog,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video&quot;.split(','),i=e.length;while(i--){document.createElement(e[i])}})()
[/javascript]

Еще лучше будет, если вы подключите .js-файл в секции <strong>&lt;head&gt;</strong> вашей html-страницы.

[javascript]
&lt;!--[if lt IE 9]&gt;
&lt;script src=&quot;http://html5shim.googlecode.com/svn/trunk/html5.js&quot;&gt;&lt;/script&gt;
&lt;![endif]--&gt;
[/javascript]

Источник: <a title="http://remysharp.com/2009/01/07/html5-enabling-script/" href="http://remysharp.com/2009/01/07/html5-enabling-script/">http://remysharp.com/2009/01/07/html5-enabling-script/</a>

<h3>Проверяем поддерживает ли браузер определенное CSS3-свойство</h3>
Ниже представлена простая jQuery-функция, проверяющая, поддерживает ли браузер клиента определенное CSS3-свойство. В этом примере, мы проверяем свойство border-radius, но его конечно, легко можно изменить на любое другое.

Обратите внимание, что при указании свойства, вам нужно опустить дефис, чтобы предотвратить ошибку синтаксиса. Поэтому вместо border-radius, вам нужно написать “borderRadius” или “BorderRadius”.

[javascript]
var supports = (function() {
   var div = document.createElement('div'),
      vendors = 'Khtml Ms O Moz Webkit'.split(' '),
      len = vendors.length;

   return function(prop) {
      if ( prop in div.style ) return true;

      prop = prop.replace(/^[a-z]/, function(val) {
         return val.toUpperCase();
      });

      while(len--) {
         if ( vendors[len] + prop in div.style ) {
            // browser supports box-shadow. Do what you need.
            // Or use a bang (!) to test if the browser doesn't.
            return true;
         }
      }
      return false;
   };
})();

if ( supports('textShadow') ) {
   document.documentElement.className += ' textShadow';
[/javascript]

Источник:  <a title="http://snipplr.com/view/44079" href="http://snipplr.com/view/44079">http://snipplr.com/view/44079</a>
<h3>Получаем параметры url</h3>
Получение url-параметров с помощью jQuery – довольно простая задача. Следующий пример это продемонстрирует.

[javascript]
$.urlParam = function(name){
	var results = new RegExp('[\\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
	if (!results) { return 0; }
	return results[1] || 0;
}
[/javascript]

Источник: <a title="http://snipplr.com/view/26662" href="http://snipplr.com/view/26662">http://snipplr.com/view/26662</a>
<h3>Отключаем клавишу “Enter” в формах</h3>
По умолчанию, форма отправляется на сервер при нажатии клавиши “Enter”. Но для некоторых форм, нажатие этой клавиши может вызвать проблемы. Следующий пример кода, поможет вам предотвратить нежелательную отправку формы, путем отключения клавиши “Enter”, с помощью jQuery.

[javascript]
$(&quot;#form&quot;).keypress(function(e) {
  if (e.which == 13) {
    return false;
  }
});
[/javascript]

Источник: <a title="http://snipplr.com/view/10943/disable-enter-via-jquery/" href="http://snipplr.com/view/10943/disable-enter-via-jquery">http://snipplr.com/view/10943/disable-enter-via-jquery</a>

Перевод статьи “<a href="http://www.catswhocode.com/blog/10-awesome-jquery-snippets">10 awesome jQuery snippets</a>”, автор  <strong>Jean-Baptiste Jung</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2011/11/10-awesome-jquery-snippets/feed/</wfw:commentRss>
		<slash:comments>3</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>WordPress. Функции базы данных</title>
		<link>http://dreamhelg.ru/2010/12/wordpress-database-functions/</link>
		<comments>http://dreamhelg.ru/2010/12/wordpress-database-functions/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 11:09:27 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wpdb]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2104</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/12/home.jpg" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p><p>В wordpress существует достаточно обширный класс, предоставляющий набор методов для эффективной работы с базой данных. Вы можете найти описание этого класса а также всех его методов в файле /wp-includes/wp-db.php. В сегодняшней статье будут рассмотрены наиболее важные из этих методов, и небольшие примеры их использования. Важно умение использовать возможности класса $wpdb, для безопасной работы плагинов.</p><span id="more-2104"></span>  
<p>В статье будут приведены примеры использования следующих шести методов:</p>  
<ul>
<li><strong>insert($table, $data, $format)</strong> – вставляет строку в таблицу через массивы.</li>    <li><strong>update($table, $data, $where, $format, $where_format)</strong> – обновляет строку в таблице через массивы.</li>
<li><strong>get_var($query, $x, $y)</strong> – получает одиночную переменную из базы данных.</li>
<li><strong>query($query)</strong> — выполняет MySQL-запрос к базе данных, с текущим подключением.</li>
<li><strong>get_results($query, $output)</strong> – получает данные SQL-запроса из базы данных (одну или множество строк).</li>
<li><strong>escape($data)</strong> – Экранирует контент для вставки в базу данных, используя метод <strong>addslashes()</strong> для безопасности.</li>
</ul>  

<p>Кроме этого, есть еще несколько интересных методов:</p>  <ul>
<li><strong>set_prefix($prefix)</strong> – используется для установления префикса wordpress-таблиц, также может быть использован для переопределения префикса в любое время.</li>
<li><strong>prepare($query)</strong> – безопасно подготавливает SQL-запрос к выполнению, с помощью sprint()-подобного синтаксиса.</li>
<li><strong>get_row($query, $output, $y)</strong> – получает одиночную запись из базы данных.</li>    <li><strong>get_col($query, $x)</strong> – получает одиночную колонку из базы данных в формате массива.</li> 
</ul>  
[code lang="php"]
/**
 * insert
 */
$wpdb-&gt;insert( $wpdb-&gt;posts, array( 'post_title' =&gt; $mytitle ) );
 
$wpdb-&gt;insert( $wpdb-&gt;options, array(
            'option_name',
            'new_option_key',
            'option_value' =&gt; 'New Option Value',
            'autoload' =&gt; 'yes' )
            );
 
/**
 * update
 */
$wpdb-&gt;update( $wpdb-&gt;posts, array( 'post_title' =&gt; $mytitle ),
            array( 'ID' =&gt; $myid )
            );
 
$wpdb-&gt;update( $wpdb-&gt;options,
            array( 'option_value' =&gt; 'New Option Value' ),
            array( 'option_name' =&gt; 'new_option_value' )
            );
 
/**
 * get_var
 */
$post_id = $wpdb-&gt;get_var(
            $wpdb-&gt;prepare( &quot;SELECT post_id FROM
                    $wpdb-&gt;postmeta WHERE
                    post_id = %d AND
                    meta_key = 'enclosure' AND
                    meta_value LIKE (%s)&quot;, $post_ID, $url . '&amp;' )
            );
 
$content = $wpdb-&gt;get_var(
            $wpdb-&gt;prepare(&quot;SELECT post_content FROM &quot; .
                    &quot;$wpdb-&gt;posts WHERE &quot; .
                    &quot;post_title = %s AND &quot; .
                    &quot;ID = %d&quot;, $title, $id )
        );
 
/**
 * query
 */
$wpdb-&gt;query( &quot;DELETE FROM $wpdb-&gt;options WHERE option_name = '$name'&quot; );
 
$wpdb-&gt;query( &quot;UPDATE $wpdb-&gt;posts SET post_title = '$mytitle' WHERE ID = $myid&quot; );
 
/**
 * query and escape
 */
$mytitle = $wpdb-&gt;escape( $mytitle );
$myid    = absint( $myid );
$wpdb-&gt;query( &quot;UPDATE $wpdb-&gt;posts SET post_title = '$mytitle' WHERE ID = $myid&quot; );
 
/**
 * get_results
 */
$type = $wpdb-&gt;get_results( &quot;SELECT post_type FROM &quot; .
                &quot;$wpdb-&gt;posts WHERE ID=$id&quot; );
[/code]

<p>Перевод статьи “<a href="http://wpengineer.com/1746/wordpress-database-functions/">WordPress Database Functions”</a>.</p>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/12/wordpress-database-functions/feed/</wfw:commentRss>
		<slash:comments>8</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>WordPress. Создаем встроенную форму обратной связи</title>
		<link>http://dreamhelg.ru/2010/06/wordpress-create-built-in-contact-form/</link>
		<comments>http://dreamhelg.ru/2010/06/wordpress-create-built-in-contact-form/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 06:30:45 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2079</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/06/home2.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>Множество существующих плагинов wordpress позволяют встраивать форму обратной связи на ваш блог, но использование плагинов – не обязательное условие. В сегодняшней статье, вы узнаете как создать встроенную контактную форму, с помощью собственной WordPress-темы.<span id="more-2079"></span>
<br/>
Пример такой формы можно найти на сайте <a href="http://www.phpsnippets.info/">PHP Snippets</a>, там она выглядит следующим образом:

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/contact.jpg"><img class="aligncenter size-full wp-image-2082" title="contact" src="http://dreamhelg.ru/wp-content/uploads/2010/06/contact.jpg" alt="" width="462" height="357" /></a>
<h3>Шаг 1: Создание шаблона</h3>
Сначала, нам понадобится создать шаблон страницы. Для этого, скопируйте содержимое файла <em>page.php</em> в новый файл, и сохраните его под именем <em>page-contact.php.</em>

Для того, чтобы WordPress определил наш файл как шаблон, нам нужно добавить комментарий, следующего вида:

[php]
&lt;?php
/*
Template Name: Contact
*/
?&gt;
[/php]

В результате наш файл <em>page-contact.php</em> должен выглядеть вот так:

[php]
&lt;?php
/*
Template Name: Contact
*/
?&gt;

&lt;?php get_header() ?&gt;

	&lt;div id=&quot;container&quot;&gt;
		&lt;div id=&quot;content&quot;&gt;
			&lt;?php the_post() ?&gt;
			&lt;div id=&quot;post-&lt;?php the_ID() ?&gt;&quot; class=&quot;post&quot;&gt;
				&lt;div class=&quot;entry-content&quot;&gt;
				&lt;/div&gt;&lt;!-- .entry-content -&gt;
			&lt;/div&gt;&lt;!-- .post--&gt;
		&lt;/div&gt;&lt;!-- #content --&gt;
	&lt;/div&gt;&lt;!-- #container --&gt;

&lt;?php get_sidebar() ?&gt;
&lt;?php get_footer() ?&gt;
[/php]

<h3>Шаг 2: Создание формы</h3>
Теперь, создадим простую форму обратной связи. Просто вставьте приведенный код внутри блока <em>entry-content.</em>

[php]
&lt;form action=&quot;&lt;?php the_permalink(); ?&gt;&quot; id=&quot;contactForm&quot; method=&quot;post&quot;&gt;
	&lt;ul&gt;
		&lt;li&gt;
			&lt;label for=&quot;contactName&quot;&gt;Name:&lt;/label&gt;
			&lt;input type=&quot;text&quot; name=&quot;contactName&quot; id=&quot;contactName&quot; value=&quot;&quot; /&gt;
		&lt;/li&gt;
		&lt;li&gt;
			&lt;label for=&quot;email&quot;&gt;Email&lt;/label&gt;
			&lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; value=&quot;&quot; /&gt;
		&lt;/li&gt;
		&lt;li&gt;
			&lt;label for=&quot;commentsText&quot;&gt;Message:&lt;/label&gt;
			&lt;textarea name=&quot;comments&quot; id=&quot;commentsText&quot; rows=&quot;20&quot; cols=&quot;30&quot;&gt;&lt;/textarea&gt;
		&lt;/li&gt;
		&lt;li&gt;
			&lt;button type=&quot;submit&quot;&gt;Send email&lt;/button&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;submitted&quot; id=&quot;submitted&quot; value=&quot;true&quot; /&gt;
&lt;/form&gt;
[/php]

Код формы очень простой, и не нуждается в разъяснениях. Обратите внимания на  тэг <em>input type=”hidden”, </em>добавленный в строке 19 – позже, он будет использоваться для проверки была ли отправлена форма.

<h3>Шаг 3: Обработка данных и ошибок</h3>
Наша форма выглядит прекрасно, но пока что является бесполезной, поскольку не отправляет сообщения. Прежде всего, перед отправкой сообщения, нам нужно проверить была ли отправлена форма, и правильно ли заполнены все поля.

Если поля заполнены правильно, мы получаем почтовый адрес администратора блога и отправляем ему сообщение. Если поля заполнены частично или с ошибками, сообщение не отправляется, и пользователю выводится список ошибок.

Вставьте следующий код между комментарием с названием шаблона и функцией <em>get_header()</em>.

[php]
&lt;?php
if(isset($_POST['submitted'])) {
	if(trim($_POST['contactName']) === '') {
		$nameError = 'Please enter your name.';
		$hasError = true;
	} else {
		$name = trim($_POST['contactName']);
	}

	if(trim($_POST['email']) === '')  {
		$emailError = 'Please enter your email address.';
		$hasError = true;
	} else if (!eregi(&quot;^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$&quot;, trim($_POST['email']))) {
		$emailError = 'You entered an invalid email address.';
		$hasError = true;
	} else {
		$email = trim($_POST['email']);
	}

	if(trim($_POST['comments']) === '') {
		$commentError = 'Please enter a message.';
		$hasError = true;
	} else {
		if(function_exists('stripslashes')) {
			$comments = stripslashes(trim($_POST['comments']));
		} else {
			$comments = trim($_POST['comments']);
		}
	}

	if(!isset($hasError)) {
		$emailTo = get_option('tz_email');
		if (!isset($emailTo) || ($emailTo == '') ){
			$emailTo = get_option('admin_email');
		}
		$subject = '[PHP Snippets] From '.$name;
		$body = &quot;Name: $name \n\nEmail: $email \n\nComments: $comments&quot;;
		$headers = 'From: '.$name.' &lt;'.$emailTo.'&gt;' . &quot;\r\n&quot; . 'Reply-To: ' . $email;

		mail($emailTo, $subject, $body, $headers);
		$emailSent = true;
	}

} ?&gt;
[/php]

В этом коде, проверяется отправка формы и корректное заполнение полей. Если появляются ошибки, в виде пустого поля или неправильно указанного почтового адреса, формируется сообщение об ошибке и форма не отправляется.

Теперь, нам нужно отобразить сообщение об ошибке, рядом с нужным полем, например “Пожалуйста, введите имя”.  <strong>Ниже приведен полный код шаблона, который вы можете использовать в своей теме.</strong>

[php]
&lt;?php
/*
Template Name: Contact
*/
?&gt;

&lt;?php
if(isset($_POST['submitted'])) {
	if(trim($_POST['contactName']) === '') {
		$nameError = 'Please enter your name.';
		$hasError = true;
	} else {
		$name = trim($_POST['contactName']);
	}

	if(trim($_POST['email']) === '')  {
		$emailError = 'Please enter your email address.';
		$hasError = true;
	} else if (!eregi(&quot;^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$&quot;, trim($_POST['email']))) {
		$emailError = 'You entered an invalid email address.';
		$hasError = true;
	} else {
		$email = trim($_POST['email']);
	}

	if(trim($_POST['comments']) === '') {
		$commentError = 'Please enter a message.';
		$hasError = true;
	} else {
		if(function_exists('stripslashes')) {
			$comments = stripslashes(trim($_POST['comments']));
		} else {
			$comments = trim($_POST['comments']);
		}
	}

	if(!isset($hasError)) {
		$emailTo = get_option('tz_email');
		if (!isset($emailTo) || ($emailTo == '') ){
			$emailTo = get_option('admin_email');
		}
		$subject = '[PHP Snippets] From '.$name;
		$body = &quot;Name: $name \n\nEmail: $email \n\nComments: $comments&quot;;
		$headers = 'From: '.$name.' &lt;'.$emailTo.'&gt;' . &quot;\r\n&quot; . 'Reply-To: ' . $email;

		mail($emailTo, $subject, $body, $headers);
		$emailSent = true;
	}

} ?&gt;
&lt;?php get_header(); ?&gt;
	&lt;div id=&quot;container&quot;&gt;
		&lt;div id=&quot;content&quot;&gt;

			&lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;
			&lt;div &lt;?php post_class() ?&gt; id=&quot;post-&lt;?php the_ID(); ?&gt;&quot;&gt;
				&lt;h1 class=&quot;entry-title&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/h1&gt;
					&lt;div class=&quot;entry-content&quot;&gt;
						&lt;?php if(isset($emailSent) &amp;&amp; $emailSent == true) { ?&gt;
							&lt;div class=&quot;thanks&quot;&gt;
								&lt;p&gt;Thanks, your email was sent successfully.&lt;/p&gt;
							&lt;/div&gt;
						&lt;?php } else { ?&gt;
							&lt;?php the_content(); ?&gt;
							&lt;?php if(isset($hasError) || isset($captchaError)) { ?&gt;
								&lt;p class=&quot;error&quot;&gt;Sorry, an error occured.&lt;p&gt;
							&lt;?php } ?&gt;

						&lt;form action=&quot;&lt;?php the_permalink(); ?&gt;&quot; id=&quot;contactForm&quot; method=&quot;post&quot;&gt;
							&lt;ul class=&quot;contactform&quot;&gt;
							&lt;li&gt;
								&lt;label for=&quot;contactName&quot;&gt;Name:&lt;/label&gt;
								&lt;input type=&quot;text&quot; name=&quot;contactName&quot; id=&quot;contactName&quot; value=&quot;&lt;?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?&gt;&quot; class=&quot;required requiredField&quot; /&gt;
								&lt;?php if($nameError != '') { ?&gt;
									&lt;span class=&quot;error&quot;&gt;&lt;?=$nameError;?&gt;&lt;/span&gt;
								&lt;?php } ?&gt;
							&lt;/li&gt;

							&lt;li&gt;
								&lt;label for=&quot;email&quot;&gt;Email&lt;/label&gt;
								&lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; value=&quot;&lt;?php if(isset($_POST['email']))  echo $_POST['email'];?&gt;&quot; class=&quot;required requiredField email&quot; /&gt;
								&lt;?php if($emailError != '') { ?&gt;
									&lt;span class=&quot;error&quot;&gt;&lt;?=$emailError;?&gt;&lt;/span&gt;
								&lt;?php } ?&gt;
							&lt;/li&gt;

							&lt;li&gt;&lt;label for=&quot;commentsText&quot;&gt;Message:&lt;/label&gt;
								&lt;textarea name=&quot;comments&quot; id=&quot;commentsText&quot; rows=&quot;20&quot; cols=&quot;30&quot; class=&quot;required requiredField&quot;&gt;&lt;?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?&gt;&lt;/textarea&gt;
								&lt;?php if($commentError != '') { ?&gt;
									&lt;span class=&quot;error&quot;&gt;&lt;?=$commentError;?&gt;&lt;/span&gt;
								&lt;?php } ?&gt;
							&lt;/li&gt;

							&lt;li&gt;
								&lt;input type=&quot;submit&quot;&gt;Send email&lt;/input&gt;
							&lt;/li&gt;
						&lt;/ul&gt;
						&lt;input type=&quot;hidden&quot; name=&quot;submitted&quot; id=&quot;submitted&quot; value=&quot;true&quot; /&gt;
					&lt;/form&gt;
				&lt;?php } ?&gt;
				&lt;/div&gt;&lt;!-- .entry-content --&gt;
			&lt;/div&gt;&lt;!-- .post --&gt;

				&lt;?php endwhile; endif; ?&gt;
		&lt;/div&gt;&lt;!-- #content --&gt;
	&lt;/div&gt;&lt;!-- #container --&gt;

&lt;?php get_sidebar(); ?&gt;
&lt;?php get_footer(); ?&gt;
[/php]

<h3>Шаг 4: Добавляем проверку jQuery</h3>
Наша форма уже работает прекрасно, но мы можем улучшить ее, добавив проверку на клиенте. Для этого, мы будем использовать jQuery и плагин <a href="http://docs.jquery.com/Plugins/Validation">jQuery Validation</a>. Это отличный плагин, позволяющий легко и быстро проверить правильное заполнение полей.

C<a href="http://docs.jquery.com/Plugins/Validation">качайте плагин</a> и поместите его в папку с вашей темой, внутри папки <em>/js. </em>После этого, вставьте следующие строки в новый файл:

[javascript]
$(document).ready(function(){
	$(&quot;#contactForm&quot;).validate();
});
[/javascript]

Сохраните файл под именем <em>verif.js</em> в папке <em>/js</em>.

Теперь, нам нужно подключить ява-скрипт файлы в нашу тему. Откройте файл <em>header.php</em> и вставьте следующий код внутри тэгов &lt;head&gt;&lt;/head&gt;:

[html]
&lt;?php if( is_page('contact') ){ ?&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php bloginfo('template_directory'); ?&gt;/js/jquery.validate.min.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php bloginfo('template_directory'); ?&gt;/js/verif.js&quot;&gt;&lt;/script&gt;
&lt;?php }?&gt;
[/html]

После этого, ваша форма будет проверяться плагином на клиентской стороне. Плагин работает довольно просто – выбирает элементы формы, имеющий css-класс <em>required</em> и проверяет их на корректное заполнение. В случае ошибки, отображается сообщение. Надеюсь, вам понравится ваша новая WordPress-форма.

Перевод статьи “<a href="http://www.catswhocode.com/blog/how-to-create-a-built-in-contact-form-for-your-wordpress-theme">How to create a built-in contact form for your WordPress theme</a>”, автор <strong>Jean-Baptiste Jung</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/06/wordpress-create-built-in-contact-form/feed/</wfw:commentRss>
		<slash:comments>22</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/neon-text-effect-with-css-and-jquery/</link>
		<comments>http://dreamhelg.ru/2010/06/neon-text-effect-with-css-and-jquery/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 05:00:07 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[общая]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=2043</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/06/home.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>В сегодняшней статье, вы узнаете как создать красивый эффект неонового свечения текста, средствами JQuery и CSS, и совсем немного фотошопа. Результат, как обычно можно посмотреть <a href="http://demo.tutorialzine.com/2010/06/neon-text-effect-jquery/demo.html" target="_blank">заранее</a>.<span id="more-2043"></span>
<br/>
<h3>Шаг 1 – Дизайн</h3>
Первым делом, для достижения такого эффекта, нам нужно создать фоновое изображение, содержащее две, слегка отличающиеся версии текста. jQuery будет плавно переключаться между этими изображениями, создавая красивый эффект свечения.

Итак, открываем фотошоп  и создаем новый документ, 650х300 пикселей, в качестве фонового цвета указываем #141414. Для заголовка используйте свой любимый шрифт, в приведенном примере – это Century Gothic, размер 60px.

После этого, Ctrl + клик по иконке текстового слоя в палитре слоев, для выделения всего текста.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/i1.png"><img class="aligncenter size-full wp-image-2045" title="i1" src="http://dreamhelg.ru/wp-content/uploads/2010/06/i1.png" alt="" width="620" height="260" /></a>

Используйте инструмент прямоугольного выделения, зажав Shift + Alt, для того, чтобы ограничить выделение текста одним словом.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/i2.png"><img class="aligncenter size-full wp-image-2046" title="i2" src="http://dreamhelg.ru/wp-content/uploads/2010/06/i2.png" alt="" width="620" height="260" /></a>

Далее, сохраняя выделение, создайте новый слой под названием “gradients”, и кликните по нему, для активации.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/i3.png"><img class="aligncenter size-full wp-image-2047" title="i3" src="http://dreamhelg.ru/wp-content/uploads/2010/06/i3.png" alt="" width="620" height="260" /></a>

Теперь, возьмите инструмент градиента и раскрасьте каждое слово, поочередно переключая выделение между отдельными словами. Выделение отдельных слов требуется для ограничения области действия градиента, к тому же мы предварительно активировали слой “gradients”, с тем, чтобы все изменения были сохранены на нем.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/i4.png"><img class="aligncenter size-full wp-image-2048" title="i4" src="http://dreamhelg.ru/wp-content/uploads/2010/06/i4.png" alt="" width="620" height="260" /></a>

После того, как вы раскрасите весь заголовок, дублируйте слой, расположив его ниже основного, и примените другой набор градиентов. В результате, у нас получилась картинка, с двумя разноцветными заголовками, так что мы легко сможем переключаться между ними, путем простого изменения свойства background-position в CSS.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/06/i5.png"><img class="aligncenter size-full wp-image-2049" title="i5" src="http://dreamhelg.ru/wp-content/uploads/2010/06/i5.png" alt="" width="620" height="260" /></a>

Вы найдете psd-файл данного изображения, в архиве с приведенным примером.
<h3>Шаг 2 – XHTML</h3>
XHTML-разметка очень простая, вам понадобится только контейнер (#neonText H1), который будет содержать две версии фона.

[html]
&lt;h1 id=&quot;neonText&quot;&gt;
	Neon Text Effect With jQuery &amp; CSS.
	&lt;span class=&quot;textVersion&quot; id=&quot;layer1&quot;&gt;&lt;/span&gt;
	&lt;span class=&quot;textVersion&quot; id=&quot;layer2&quot;&gt;&lt;/span&gt;
&lt;/h1&gt;
[/html]

Слой layer1, постепенно уменьшая свою прозрачность, создает плавный эффект неонового свечения, за счет того, что он расположен поверх слоя layer2.

Исходя из соображений поисковой оптимизации, мы также создадим текст, соответствующий надписи на картинке, который будет скрыт с помощью отрицательного значения свойства text-indent.
<h3>Шаг 3 – CSS</h3>
Стили, используемые для этого эффекта – также очень простые. Два элемента span, которым назначено одинаковое фоновое изображение, с разницей в позиционировании. Один элемент показывает только верхнюю часть картинки, а второй, только нижнюю.

[css]
/* The two text layers */
#neonText span{
	width:700px;
	height:150px;
	position:absolute;
	left:0;
	top:0;

	background:url('img/text.jpg') no-repeat left top;
}

span#layer1{
	z-index:100;
}

span#layer2{
	background-position:left bottom;
	z-index:99;
}

/* The h1 tag that holds the layers */
#neonText{
	height:150px;
	margin:180px auto 0;
	position:relative;
	width:650px;
	text-indent:-9999px;
}
[/css]

Контейнер #neonText позиционирован относительно, с тем, чтобы внутренние элементы span, располагались точно один над другим. Кроме того, обратите вниманием на свойство text-indent, которое скрывает текстовое содержимое нашего контейнера.

<h3>Шаг 4 – jQuery</h3>
Последнее, что нам осталось сделать – создать анимацию переключения блоков. Поскольку мы используем jQuery (предварительно подключив его на страницу тэгом script), в нашем распоряжении есть два удобных метода fadeIn и fadeOut, которые мы используем в следующем коде.

[javascript]
$(document).ready(function(){

	setInterval(function(){

		// Selecting only the visible layers:
		var versions = $('.textVersion:visible');

		if(versions.length&lt;2){
			// If only one layer is visible, show the other
			$('.textVersion').fadeIn(800);
		}
		else{
			// Hide the upper layer
			versions.eq(0).fadeOut(800);
		}
	},1000);

});
[/javascript]

Функция, расположенная внутри выражения setinterval, выполняется каждую секунду, отображая/скрывая слой с первым контейнером span.

<a href="http://demo.tutorialzine.com/2010/06/neon-text-effect-jquery/demo.zip">Скачать архив с примером</a>.

Перевод статьи “<a href="http://tutorialzine.com/2010/06/neon-text-effect-jquery/">Neon Text Effect With jQuery &amp; CSS</a>”, автор <strong>Martin</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/06/neon-text-effect-with-css-and-jquery/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

