<?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; animate</title>
	<atom:link href="http://dreamhelg.ru/tag/animate/feed/" rel="self" type="application/rss+xml" />
	<link>http://dreamhelg.ru</link>
	<description>о моей работе в сети и не только</description>
	<lastBuildDate>Mon, 14 May 2012 19:53:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<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>Создание навигации &#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>15</slash:comments>
		</item>
		<item>
		<title>Анимация jQuery: изучение за 7 шагов</title>
		<link>http://dreamhelg.ru/2010/01/jquery-animation-a-7-step-program/</link>
		<comments>http://dreamhelg.ru/2010/01/jquery-animation-a-7-step-program/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 08:15:48 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[изучаем Jquery]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery UI]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1823</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/01/200x200.jpg" class="attachment-200x200 wp-post-image" alt="200x200" title="200x200" /></p>Небольшой штрих анимации может украсить любой, скучный интерфейс. В сегодняшней статье, вы узнаете, как правильно ее использовать с помощью jQuery.<span id="more-1823"></span>

<h3>Вступление</h3>
Анимация – понятие, которое обычно вызывает неоднозначную реакцию у людей. Одни считают ее полезной, другие осуждают ее чрезмерное использование. Несмотря на это, правильно используемая анимация, зачастую украшает пользовательский интерфейс, и делает его более опрятным и живым. В сегодняшней статье, мы коротко рассмотрим основы jQuery, затем научимся создавать нашу первую анимацию, научимся строить различные эффекты, а затем создадим анимацию, которую вполне можно будет использовать в реальных проектах.

<h3>Шаг 1. Основы jQuery</h3>
jQuery – это JavaScript библиотека, которая призвана помочь разработчику создавать многофункциональные, интерактивные веб-сайты и пользовательские интерфейсы, с использованием минимально возможного количества кода.

Обычная строка кода, выглядит следующим образом:

[javascript]$(DOM Element).something();[/javascript]

Давайте разберем каждую часть:
<ul>
	<li><strong>$</strong> - Сокращение для объекта jQuery. Если вы одновременно используете несколько фреймворков на одной странице, вместо знака $, воспользуетесь сокращением jQuery:  jQuery(DOM Element).something();</li>
	<li><strong>(DOM Element) </strong>– Элемент, с которым вы собираетесь что-то сделать. Это одна из ключевых особенностей jQuery. Вы можете использовать CSS-селекторы для получения нужного элемента. Любые селекторы, работающие в CSS-файле, могут быть использованы здесь. ID, классы, псевдо-классы, все что угодно.</li>
	<li><strong>.something() </strong>– То, что вы хотите сделать с полученным элементом. Это может быть все что угодно от простого скрытия элемента до создания AJAX-запроса к обработчику события.</li>
</ul>

Сегодня мы рассмотрим только анимацию, и эффекты, связанные с ее функциональностью.

<h3>Шаг 2. Использование встроенных эффектов</h3>
jQuery предоставляет большое количество встроенных методов, которые вы можете использовать прямо из коробки. Это методы для отображения/скрытия элементов, с различными вариациями, включающими скольжение элемента и изменение его прозрачности. Вы также можете использовать ряд методов <strong>toggle</strong>, которые переключают видимость элемента.

Прежде чем мы рассмотрим каждый из этих методов, посмотрите на основной формат вызова каждого метода:

[javascript]$(&quot;#element&quot;).effect([speed, callback]);[/javascript]

Выше представлена основная парадигма jQuery, сначала мы получаем необходимый элемент, используя CSS-селекторы. Далее, мы просто вызываем любой  из встроенных методов.

Несмотря на то, что большинство методов можно вызвать без параметров, часто возникает необходимость настроить их функциональность. Каждый из методов принимает как минимум два параметра: <strong>speed</strong> и <strong>callback</strong>.

<strong>speed</strong> – определяет продолжительность анимации в секундах. Вы можете передать в качестве значения одно из ключевых слов: slow, normal или fast; или задать время в миллисекундах.

<strong>callback</strong> - это функция, которая выполняется после того как анимация завершена. Вы можете использовать ее для чего угодно, например, сделать AJAX-вызов в фоне, обновить часть пользовательского интерфейса и многое другое. Вы ограничены только своим воображением.

Далее представлен список функций, всходящий в состав jQuery:
<ul>
	<li><strong>show</strong>/<strong>hide</strong> – Методы для отображения и скрытия элемента. Принимают в качестве параметров speed и callback.</li>
	<li><strong>toggle</strong> – Метод, манипулирующий с отображением элемента, в зависимости от текущего состояния элемента. То есть если он скрыт, то отображает его и наоборот. Использует методы show и hide.</li>
	<li><strong>slideDown</strong>/<strong>slideUp</strong> – Вполне очевидные методы. Изменяя высоту элемента, создается скользящая анимация, отображающая или наоборот скрывающая элемент.</li>
	<li><strong>slideToggle</strong> – Практически то же самое что и метод toggle, за исключением того, что здесь используются методы slideDown/slideUp, для отображения/скрытия элемента.</li>
	<li><strong>fadeIn</strong>/<strong>fadeout</strong> – Изменение прозрачности элемента, для создания эффекта затухания.</li>
	<li><strong>fadeTo</strong> – Изменяет прозрачность элемента в соответствии с переданным значением.  Как нетрудно догадаться, он принимает дополнительный параметр opacity, где 0 это полная прозрачность, а 1 полная непрозрачность.</li>
</ul>

В качестве дополнительной функциональности, метод <strong>toggle</strong>, может принимать в качестве параметра выражение, решающее отображать элемент, или прятать.

Например, если вы хотите переключать только те элементы списка, которые имеют класс <em>effect</em>, ваш код будет выглядеть следующим образом:

[javascript]$(&quot;li&quot;).toggle( $(this).hasClass(&quot;effect&quot;) );[/javascript]

Проще говоря, функция <strong>toggle</strong> проверяет выражение, переданное ему в качестве параметра, и если оно истинно, то он переключает видимость элемента. Выражение, которые мы передали, в примере, проверяет наличие у элемента определенного класса.

<h3>Шаг 3. Создание собственной анимации</h3>
Очень часто, встроенные методы не удовлетворяют вашим потребностям, в этом случае вы, скорее всего, захотите создать свои собственные эффекты. С помощью jQuery вы легко сможете это сделать .

Чтобы создать персональный анимационный эффект, вам понадобится метод <strong>animate</strong>. Это выглядит следующим образом:

[javascript]$(&quot;#somelement&quot;).animate({property: value}, [speed, callback] );[/javascript]

Метод <strong>animate</strong> весьма похож на любые другие методы тем, что используется точно так же. Мы получаем элемент, и затем передаем ему некоторые параметры. Принимаемые параметры – это то, в чем метод <strong>animate</strong> отличается от готовых эффектов.

Параметры speed и callback выполняют те же функции, что и в предыдущих методах. Объект со свойствами, состоящими из определенного количества пар ключ/значение – то, что делает этот метод уникальным. Вы передаете каждое свойство, которое хотите анимировать, вместе с финальным результатом. Например, предположим, вы хотите анимировать изменение ширины элемента, на 90% от его текущего значения. Это можно сделать следующим образом:

[javascript]
$(&quot;#somelement&quot;).animate({width: &quot;90%&quot;}, 350, function(){
         alert (&quot;The animation has finished running.&quot;);
  }
);
[/javascript]

Указанный пример кода, анимирует изменение ширины на 90%, а затем выдает сообщение, что анимация завершена.

Заметьте, что вы не ограничены в количестве. Вы можете добавить анимацию большому массиву свойств, включая прозрачность, поля, отступы, рамки, размеры шрифтов. Метод <strong>animate</strong>, удобен еще и потому, что может работать с любыми единицами измерения. Пиксели, ems, проценты – все работает. Так что, даже, представленный ниже, запутанный пример кода, будет работать. Правда выглядеть будет не очень понятно.

[javascript]
$(&quot;#somelement&quot;).animate({  
width: &quot;90%&quot;  
fontSize: &quot;14em&quot;,  
height: &quot;183px&quot;,  
opacity: 0.8,  
marginTop: &quot;2cm&quot;,  
marginLeft: &quot;0.3in&quot;,  
borderBottom: &quot;30mm&quot;,  
}, 350, function(){alert (&quot;The animation has finished running.&quot;);}); 
[/javascript]

При указании свойства, состоящего из нескольких слов, оно записывается без тире, и первая буква второго слова должна быть заглавной. Такая запись значительно отличается от привычного синтаксиса CSS, поэтому обязательно постарайтесь это запомнить. Например, свойство <strong>border-top</strong>, следует записывать  <strong>borderTop</strong>.

<blockquote><strong>Обратите внимание</strong>: jQuery позволяет анимировать только числовые значения свойств. Это значит, что вы не сможете анимировать цветовые свойства, используя только jQuery. Но все не так плохо. С небольшой помощью jQuery UI, вы сможете добавить анимацию цвета очень легко.</blockquote>

<h3>Шаг 4. Настройка эффекта</h3>
Если вы рассмотрите простой эффект на демонстрационной странице, то возможно заметите небольшую ошибку. Многократное наведение мыши на элемент, приводит к образованию длинной очереди из повторяющихся анимационных эффектов. В результате появляется неприятный, дергающийся эффект.

Самый простой способ решить эту проблему – использовать метод <strong>stop</strong>, непосредственно до начала анимации.  Этот метод отлично очищает очередь, и анимация выполняется в обычном режиме.

Например, это ваш обычный код:

[javascript]
$(&quot;#someelement&quot;)  
  .hover(function() {  
    $(this).animate({ top: 20 }, 'fast');  
  }, function() {  
    $(this).animate({ top: 0 }, 'fast');  
  });  
[/javascript]

Используя метод <strong>stop</strong> для предотвращения лишних повторений анимации, ваш новый код будет выглядеть вот так:

[javascript]
$(&quot;#someelement&quot;)  
  .hover(function() {  
    $(this).stop().animate({ top: 20 }, 'fast');  
  }, function() {  
    $(this).stop().animate({ top: 0 }, 'fast');  
  });  
[/javascript]

Очень просто, правда? Но этот метод имеет одну небольшую проблему. Быстрые движения не приводят к повторяющемуся эффекту, но за это приходится расплачиваться неполной анимацией. Если вы хотите полностью решить эту проблему, вам понадобится плагин наподобие <a href="http://www.2meter3.de/code/hoverFlow/">hoverFlow</a>.

<h3>Шаг 5.  Добавление реализма – Easing</h3>
Если хотите добавить чуть больше реализма, вам понадобится дополнительный контроль над скоростью, с которой выполняется анимация. Вот здесь нам на помощь приходит easing. <strong>Easing</strong> контролирует ускорение и замедление анимации по времени.

Метод, который <strong>easing</strong> использует по умолчанию, называется <strong>swing</strong>, он встроен в базовый функционал jQuery. <a href="http://gsgd.co.uk/sandbox/jquery/easing/">Плагин Роберта Пеннера easing</a>, позволит вам использовать несколько различных эффектов.

Существует только одно предостережение, когда речь идет об использовании персональных эффектов easing:  вы можете использовать их только вместе со специальными эффектами анимации, то есть, с методом <strong>animate()</strong>. После того, как вы подключили плагин, использовать любой метод easing очень просто, передав его в качестве параметра:

[javascript]
$(&quot;#somelement&quot;).animate({  
width: &quot;90%&quot;  
height: &quot;183px&quot;,  
}, 550, &quot;easeInElastic&quot;); 
[/javascript]

Вы можете проверить, как выглядят различные эффекты easing в действии, на демо-странице, в соответствующем разделе. И хотя некоторые из эффектов не подходят ко всем ситуациям, ваша анимация будет выглядеть гораздо более привлекательной при правильном использовании некоторых методов easing.

<h3>Шаг 6. Поднимаемся на ступеньку выше – jQuery UI</h3>
Апгрейд до jQuery UI приносит нам ряд необходимых функций. Фактически, для использования дополнительных функций, вам не потребуется полная библиотека. Для получения нужной функциональности, вам потребуются встроенные эффекты. Не само ядро UI, только файл со встроенными эффектами, который весит около 10 килобайт.

Наиболее важными функциями, которые предоставляет библиотека эффектов jQuery UI, является поддержка анимации цветов, easing и переходы классов.

Если помните, я уже говорил, что в jQuery анимацию можно применить только к числовым значениям. С jQuery UI об этом ограничении можно забыть. Теперь вы легко сможете анимировать фоновый цвет элемента, цвет рамки и тому подобное. Кроме того, вместо того чтобы создавать отдельные функции для новых возможностей, jQuery UI просто расширяет базовый функционал <strong>animate</strong>. То есть, если вы включили библиотеку в свою страницу, то можете использовать обычный метод <strong>animate</strong>, и он сделает всю грязную работу за вас.

Например, если вы хотите анимировать цвет рамки элемента, при наведении, то ваш код будет выглядеть следующим образом:

[javascript]
$(&quot;.block&quot;).hover(function() {  
    $(this).animate({ borderColor: &quot;black&quot; }, 1000);  
},function() {  
    $(this).animate({ borderColor: &quot;red&quot; }, 500);  
});  
[/javascript]

Переходы классов отвечают за анимацию между классами. При использовании базовой библиотеки jQuery, если вы удаляете, а затем добавляете класс, изменяющий внешний вид элемента, то это происходит мгновенно. Когда в вашем распоряжении имеется библиотека UI, вы получаете возможность передавать дополнительные параметры, управляющие скоростью анимации, метод <strong>easing</strong> и <strong>callback</strong>. Эта функциональность, как и предыдущие, является надстройкой над существущим API jQuery, облегчающей процесс перехода.

<h3>Шаг 7. Создание первого, настоящего эффекта</h3>
Все вышеуказанные примеры являются всего лишь демо-версиями функциональности. Неплохо было бы использовать их для создания настоящего эффекта. Именно этим мы и займемся. Наш эффект не будет чем-то радикальным или особенным, но с его помощью, вы узнаете как применить полученные знания на практике.

Предположим, нам нужно отобразить картинку, внутри которой будут появляться две секции, при наведении мыши. Верхняя секция будет содержать заголовок картинки, нижняя – ее краткое описание. Я знаю, что вы можете найти огромное количество различных плагинов, которые делают то же самое, но сегодня мы сделаем это с нуля. Это не так сложно, как кажется. Фактически, это очень просто и делается довольно быстро. Давайте начнем.
<h3>HTML</h3>
Для начала нам понадобится HTML-основа

[html]
&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en-GB&quot;&gt;
&lt;head&gt;
&lt;title&gt;Анимация с JQuery для начинающих&lt;/title&gt;
&lt;link type=&quot;text/css&quot; href=&quot;css/style.css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jqueryui.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/mojo.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id=&quot;container&quot;&gt;

&lt;h1&gt;Анимация с JQuery для начинающих&lt;/h1&gt;

&lt;div class=&quot;bblock&quot;&gt;
&lt;h2&gt;Простой пример использования&lt;/h2&gt;
&lt;p&gt;
	Простой пример использования возможностей анимации jQuery.
	Наведите курсор на картинку, чтобы увидеть ее название и описание.
	При отведении мыши, они скроются. При наведении курсора на блоки с названием и описанием изображения, они изменят фоновый цвет.
&lt;/p&gt;	

&lt;p&gt;Анимация использует easing, для создания большей привлекательности.&lt;/p&gt;

&lt;div class=&quot;item&quot;&gt;
&lt;div class=&quot;title&quot;&gt;ThemeForest&lt;/div&gt;
&lt;img src=&quot;images/tf.jpg&quot; alt=&quot;Image&quot; /&gt;
&lt;div class=&quot;desc&quot;&gt;Сайт, где вы найдете множество шаблонов и тем&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;item last&quot;&gt;
&lt;div class=&quot;title&quot;&gt;CodeCanyon&lt;/div&gt;
&lt;img src=&quot;images/cc.jpg&quot; alt=&quot;Image&quot; /&gt;
&lt;div class=&quot;desc&quot;&gt;Сайт, содержащий множество скриптов и примеров кода.&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;!-- Rest of the code for the demo --&gt;  
&lt;/div&gt;  
&lt;/body&gt;  
&lt;/html&gt;  
[/html]

Для этого эффекта, нам нужно продумать структуру каждого элемента. Каждый элемент будет заключен в div, с классом <em>item</em>. Внутри дива, будет размещено три элемента: картинка, и два дива, содержащих название и описание картинки.

Остальные части довольно простые. Нам понадобится подключить на страницу библиотеку jQuery, jQuery UI и файл, содержащий наш персональный код. Помните, что нам необходимы только эффекты jQuery UI, если вы хотите включить больше эффектов, вам понадобится специальная сборка, скачать которую можно здесь.

Вот так будет выглядеть наша страница на этом этапе.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/01/before_css.jpg"><img class="aligncenter size-full wp-image-1837" title="before_css" src="http://dreamhelg.ru/wp-content/uploads/2010/01/before_css.jpg" alt="" width="469" height="606" /></a>
<h3>CSS</h3>

[css]
.item {  
    position: relative;  
    margin: 20px 60px 40px 0;  
    overflow: hidden;  
}  
  
.item .title, .item .desc {  
    background: #000;  
    color: #fff;  
    position: absolute;  
    display: block;  
    width: 638px;  
    opacity: 0.4;   
}  
  
.item .title {  
    top: 0;  
    font-size: 16px;  
    padding: 12px 10px 25px 0;  
    text-align: rightright;  
}  
  
.item .desc {  
    bottombottom: 0;  
    font-size: 12px;  
    padding: 5px 0 15px 10px;  
}  
[/css]

Здесь есть несколько моментов, на которые вам стоит обратить внимание. Каждому элементу установлено свойство <em>position</em> в значение <em>relative</em>, для того чтобы внутри этого элемента легко было расположить другие. Также, блокам назначено свойство <em>overflow: hidden</em>, с тем, чтобы мы могли скрывать название и описание картинки снаружи, когда они не нужны.

Блокам, которые содержат название и описание, установлено свойство <em>position: absolute</em>, так что они точно позиционируются внутри блока с картинкой. Заголовку назначена координата <em>top: 0</em>, так что он располагается вверху, а описанию <em>bottom: 0</em>, и он соответственно, расположен внизу.

Остальной CSS очень простой, назначены стили для шрифтов, немного позиционирования. Ничего особенного.

Теперь наша страница выглядит вот так.

<a href="http://dreamhelg.ru/wp-content/uploads/2010/01/with_css.jpg"><img class="aligncenter size-full wp-image-1838" title="with_css" src="http://dreamhelg.ru/wp-content/uploads/2010/01/with_css.jpg" alt="" width="471" height="610" /></a>
<h3>Включаем JavaScript-магию</h3>

[javascript]
$(document).ready(function()   
{  
    // Code for other parts of the demo  
      
    $(&quot;.item&quot;).children(&quot;div.title&quot;).animate({top: -60}, 300);  
    $(&quot;.item&quot;).children(&quot;div.desc&quot;).animate({bottom: -40}, 300);  
      
$(&quot;.item&quot;).hover(  
        function()  
        {  
            $(this).children(&quot;div.title&quot;).stop().animate({top: 0}, 700, &quot;easeOutBounce&quot;);  
            $(this).children(&quot;div.desc&quot;).stop().animate({bottom: 0}, 700, &quot;easeOutBounce&quot;);  
        },  
        function(){  
            $(this).children(&quot;div.title&quot;).stop().animate({top: -60}, 500);  
            $(this).children(&quot;div.desc&quot;).stop().animate({bottom: -40}, 400);  
        }  
        );  
      
$(&quot;.title, .desc&quot;).hover(  
        function()  
        {  
            $(this).stop().animate({backgroundColor: &quot;#444&quot;}, 700, &quot;easeOutSine&quot;);  
        },  
        function(){  
            $(this).stop().animate({backgroundColor: &quot;#000&quot;}, 700);  
        }  
        );  
});
[/javascript]

Возможно, это выглядит немного сложно, но на самом деле это не так. Давайте рассмотрим каждую часть.

Логика этого эффекта очень проста. Поскольку мы позиционировали элементы абсолютно, сначала мы прячем их за пределами блока с картинкой. При наведении мыши на изображения, нам нужно просто вернуть их обратно, к изначальному положению.

Сначала мы передвигаем заголовок и описание за пределы родительского блока. Но вместо того, чтобы использовать CSS, мы делаем это помощью JavaScript, по весьма конкретным причинам. Даже если JS будет отключен, страница все равно останется функциональной. Заголовок и описание останутся поверх изображения, и будут выглядеть так, как будто применен эффект наведения. А вот если бы мы скрыли эти блоки с помощью CSS, и JS на странице был бы отключен, то они так бы и не появились на экране.

Наш код начинается с создания функции <strong>hover</strong> для каждого элемента. Первая функция выполняется при наведении мыши, вторая – наоборот, при отведении.

Внутри функции, <strong>this</strong> – указывает на элемент, который вызвал событие. Мы используем метод <strong>animate</strong>, для изменения соответствующих значений. Мы также используем <strong>easing</strong>, для добавления большей привлекательности нашему эффекту. При отведении мыши, мы просто изменяем значения к их изначальному состоянию.

В качестве небольшого дополнения, если навести курсор на блоки с заголовком или описанием, они медленно изменят цвет, спасибо jQuery UI.

Вот и все, наш эффект готов к использованию. Можете посмотреть на <a href="http://dreamhelg.ru/demo/animate-7-steps/code.html">результат</a> и <a href="http://dreamhelg.ru/wp-content/uploads/2010/01/animate.zip">скачать архив</a> с приведенными примерами.

Перевод статьи «<a href="http://net.tutsplus.com/tutorials/javascript-ajax/jquery-animations-a-7-step-program/">jQuery Animations: A 7-Step Program</a>», автор <strong>Siddharth</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/01/jquery-animation-a-7-step-program/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Изучаем JQuery. Методы Hide и Show</title>
		<link>http://dreamhelg.ru/2009/08/learning-jquery-hide-and-show-methods/</link>
		<comments>http://dreamhelg.ru/2009/08/learning-jquery-hide-and-show-methods/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 12:27:25 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[изучаем Jquery]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[hide]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[show]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1008</guid>
		<description><![CDATA[Как вы наверное не раз замечали на различных сайтах, большинство javascript-эффектов, основываются на отображении и скрытии различных элементов страницы. Примеров этому огромное количество: тултипы. выпадающее меню, слайд-шоу и многое другое. [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/08/learning-jquery-hide-and-show-methods/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

