Плагины jQuery: Background-Position Animations

19 октября 2008, 17:49 Евгений Белодед JavaScript рейтинг +21-

В первой части сниппетов jQuery мы уже упоминали про использование плагина Color animations, который позволяет плавно изменять цвет элементов страницы.

Сегодня мы рассмотрим еще один плагин jQuery: Background-Position Animations, который, дает возможность анимировать положение картинки фона любого элемента.

Давайте разберем три примера использования этого плагина: кнопки, дырявые кнопки и меню.

Пример 1. Кнопки.

Для начала сделаем простую кнопку со скругленными углами

HTML:

<div class="movableBG" id="mbg1" style="background-position: -5px -130px">
<div class="left">
<div class="right">Vremenno.net</div>
</div>
</div>
CSS:
    .left
{
background: url(img/left.png) left top no-repeat;
}
.right
{
background: url(img/right.png) right top no-repeat;
padding: 0px 11px 2px 11px;

}
.movableBG
{
margin: 30px;
width: 123px;
height: 24px;
color: White;
font-size: 16px;

cursor: pointer;
}

Замечу, что для того, чтобы плагин работал корректно в FF, изначальное положение бэкграунда надо указывать inline.

Не забыв добавить jQuery и плагин, заставим эту кнопку анимироваться при наведении на нее курсора:

Javascript:

 $('#mbg1').mouseover(function()
{
$(this).stop(); $(this).animate({backgroundPosition: '(-5px -50px)'});
}).mouseout(function()
{
$(this).stop(); $(this).animate({backgroundPosition: '(-5px -130px)'});
});

Как видите, перед тем как анимировать, я запускаю функцию stop(). Эта функция останавливает анимацию для этой кнопки. А запускать ее нужно для того, чтобы при наведении на кнопку несоклько раз, предыдущая анимация останавливалась, а запускалась новая. В противном случае нам придется наблюдать, как процесс движения бэкграунда будет повторяться столько раз, сколько раз мы навели курсор на кнопку.

В этом примере я использовал много различных фоновых изображений:

и другие. Чтобы было совсем понятно смотрим пример 1.

Пример 2. Дырявые кнопки.

Подход в этом примере заключается в том, что мы создали изображение кнопки, в которой текст является вырезанным. А анимация, которая будет при этом происходить, будет касаться только этой дырявой области.

Картинка кнопки:

Картинка бэкграунда:

 

Да, с размером эллипса я, наверное, переборщил =)

Пример 3. Меню.

HTML:

 <ul class="menu" id="m1">
<li><div style="background-position: 0px 35px;">Дизайн</div></li>
<li><div style="background-position: 0px 35px;">Верстка</div></li>
<li><div style="background-position: 0px 35px;">Javascript</div></li>
<li><div style="background-position: 0px 35px;">Photoshop</div></li>
</ul

CSS:

        .menu
{
clear: both;
}
.menu li
{
cursor: pointer;
color: White;
float: left;
list-style-type: none;
background: url(img/mgrad.png) left top repeat-x;
border-left: solid 1px Silver;
margin-bottom: 40px;
}
.menu li div
{
padding: 3px 14px;
}
#m1 li div
{
background: url(img/mgrad2.png) repeat-x;

}

Javascript:

 $('#m1 li div').mouseover(function()
{
$(this).stop(); $(this).animate({backgroundPosition: '(0px 0px)'},'fast');
}).mouseout(function()
{
$(this).stop(); $(this).animate({backgroundPosition: '(0px 35px)'},'fast');
});

И, наконец, фоновые изображения:

 

Все. Высказался. А вы что думаете о таких кнопках и менюшках?

PS. Всем веселой рабочей недели =)

Рекламное место, которое может стать вашим

Понравилась статья?

Тогда подпишись на обновления через RSS или воспользуйся
другими способами подписки.

Читать в Яндекс.Ленте Добавить в Google Добавить в Netvibes
  •  

Комментарии — 16

RSS
  • Аватарка
    20 октября 2008 в 12:42 ]]>Евгений]]>
    Класс, спасибо за примеры, смотрится оч. эффектно )
  • Аватарка
    20 октября 2008 в 13:49 omgf
    Все здорово! Только назначьте плз кодировку в примерах, у ми крокозябры выходят.
  • Аватарка
    20 октября 2008 в 14:09 ]]>Жека]]>
    Спасибо, поправил.
  • Аватарка
    20 октября 2008 в 14:42 surger
    Здорово!
  • Аватарка
    20 октября 2008 в 17:13 ]]>cody]]>
    Отлично смотрятся дрявые кнопки. Кнопки из примера 1 раздражают миганием.
  • Аватарка
    21 октября 2008 в 10:46 Виктор Б.
    Класс! На флеш похоже)
  • Аватарка
    21 октября 2008 в 11:03 Rodriguez
    Красиво. Интересно. Спасибо!
  • Аватарка
    21 октября 2008 в 18:45 drw
    Отличная статья. Спасибо.
  • Аватарка
    24 октября 2008 в 19:59 switch
    Прощай флеш менюхи
  • Аватарка
    2 ноября 2008 в 10:23 ]]>sergy]]>
    В ИЕ более-менее нормально работает только 3-й пример. можно как-то пофиксить?
  • Аватарка
    14 февраля 2009 в 21:34 Warstone
    Сколько еще людей должно стукнуться о то, что ИЕ не работает с полупрозрачностью? Для этого ему надо фильтры ставить.
  • Аватарка
    7 апреля 2009 в 3:01 Константин
    А кто-нибудь сталкивался с проблемой в IE с этим плагином если событие на одном элементе, а фон двигается на другом.

    Вот код:

    $('.m1')
    .mouseover(function(){
    $('.katok').stop().animate({backgroundPosition:"(50% 66%)"}, {duration:2000})
    })

    Не работает скрипт только в IE/
  • Аватарка
    28 апреля 2009 в 10:19 animhotep
    жалко только что в 6м осле работает только 3й пример( ну и то хорошо
  • Аватарка
    25 октября 2009 в 20:28 ]]>Вольный]]>
    а у меня на jQuery IE ругается?! Мозила только рулит!
  • Аватарка
    1 января в 22:47 Сериога
    IE - это сплошной геморой!!!!!!!!
    Opera немного неправильно бывает показывает разметку (но всёже лучше IE)
    Chrome - рулит! Нет плагинов жаль ((
    Mozila Firefox - реальная вещь #1! Отличная альтернатива для IE
  • Аватарка
    2 июля в 13:16 Lexx
    Для хрома плагины Есть!
  • Эл. почта (используется для Граватарки)
  • Домашняя страница
  • Имя в Твиттере
  • Разрешенные теги Текст сообщения (надо бы заполнить это поле)
  • как выглядит какой тег
    жирный текст <b>жирный текст</b>
    курсивный тект <i>курсивный тект</i>
    зачеркнутый текст <s>зачеркнутый текст</s>
    подчеркнутый текст <u>подчеркнутый текст</u>
    ссылка <a href="адрес">ссылка</a>
    function foo() { ... }
    <pre><code>function foo() { ... } </code></pre>