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

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

В первой части сниппетов 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. Всем веселой рабочей недели =)

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

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

Евгений
Класс, спасибо за примеры, смотрится оч. эффектно )
omgf
Все здорово! Только назначьте плз кодировку в примерах, у ми крокозябры выходят.
#
omgf
Жека
Спасибо, поправил.
surger
Здорово!
#
surger
cody
Отлично смотрятся дрявые кнопки. Кнопки из примера 1 раздражают миганием.
#
cody
Виктор Б.
Класс! На флеш похоже)
#
Виктор Б.
Rodriguez
Красиво. Интересно. Спасибо!
#
Rodriguez
drw
Отличная статья. Спасибо.
#
drw
switch
Прощай флеш менюхи
#
switch
sergy
В ИЕ более-менее нормально работает только 3-й пример. можно как-то пофиксить?
Warstone
Сколько еще людей должно стукнуться о то, что ИЕ не работает с полупрозрачностью? Для этого ему надо фильтры ставить.
#
Warstone
Константин
А кто-нибудь сталкивался с проблемой в IE с этим плагином если событие на одном элементе, а фон двигается на другом.

Вот код:

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

Не работает скрипт только в IE/
#
Константин
animhotep
жалко только что в 6м осле работает только 3й пример( ну и то хорошо
#
animhotep
Вольный
а у меня на jQuery IE ругается?! Мозила только рулит!
Сериога
IE - это сплошной геморой!!!!!!!!
Opera немного неправильно бывает показывает разметку (но всёже лучше IE)
Chrome - рулит! Нет плагинов жаль ((
Mozila Firefox - реальная вещь #1! Отличная альтернатива для IE
#
Сериога
Lexx
Для хрома плагины Есть!
#
Lexx
Алексей
Сколько статей уже прочитал, а все оказались мне полезны! В каждой статье черпаю полезную информацию, и по частям собираю сайт. Спасибо.
Андер
Ни в какую не работает ни в одном браузере. Хотя все должно...
#
Андер
Evgenij
Андер,
Перепроверил, работает везде.
Андер
http://vremenno.net/q-and-a/js/question-349/

мож че реально не то делаю?
#
Андер
Пончик
Посмотри, работают ли у тебя примеры из оригинальной статьи (http://snook.ca/archives/javascript/jquery-bg-image-animations/):

http://snook.ca/technical/jquery-bg/
#
Пончик
iarde
Классные примеры, только не ражущий слух бэкграунд, а нормальное слово фон
#
iarde
iarde
ражущий -> режущий
#
iarde

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть

metin2 pvp metin2 pvp serverler pvp serverler