Плагины 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>
разрешенные теги или посмотреть как будет выглядеть
counter strike mt2 silkroad pvp metin2 metin2 pvp knight pvp gm olarak başlayan pvpler pvp silkroad pvp serverler counter strike serverler msn show cam show görüntülü sohbet oyunlar suskunlar gazete oku