Script.aculo.us morph - красивые морфинг эффекты
Морфинг эффекты есть в Script.aculo.us уже некоторое время, но обратил я на них внимание только недавно, когда пытался написать фото слайдшоу на джаваскрипте. Мне нужно было, при нажатии на фотографию, увеличить и передвинуть её в сторону. И всё это передвижение должно происходить плавно, а не просто изменить размер и координаты.
Начал искать джаваскрипт библиотеки для анимации, и вспомнил что в Script.aculo.us, который я и так постоянно использую, уже есть всё, что мне надо. Называется эффект Morph, и сейчас я покажу как просто его использовать.
Значит у нас есть картинка размером 120 на 100 пикселей, мы хотим увеличить её в 3 раза и переместить на 200 пикселей направо и на 200 пикселей вниз.
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
-
<title>Морфинг</title>.
-
<script type="text/javascript" charset="utf-8" src="prototype.js"></script>
-
<script type="text/javascript" charset="utf-8" src="effects.js"></script>
-
</head>
-
<img src="scriptaculous-web20-javascript.gif" alt="image for morphing example" id="myimage"/>
-
</p>
-
</body>
-
</html>
Для этого напишем скрипт, который делает морфинг при клике на картинку, и возвращает картинку в первоначальное состояние при втором клике.
-
<script type="text/javascript" charset="utf-8">
-
// ждём когда документ загрузился
-
document.observe('contentloaded', function()
-
{
-
// ждём, когда на картинку кликнут
-
$('myimage').observe('click', function()
-
{
-
// "this" это наша картинка
-
if(this.style.width != "360px")
-
{
-
// морфинг
-
this.morph('width: 360px').morph('height: 300px').morph('margin: 200px 0 0 200px');
-
}
-
else
-
{
-
// морфинг в начальное состояние
-
this.morph('width: 120px; height: 100px; margin: 0px');
-
}
-
});
-
});
-
</script>
Этот код мы, как обычно, помещаем в HEAD. Готовый вариант можно посмотреть по этому адресу.
Хочу обратить ваше внимание на возможность делать цепочку морфинг эффектов.
-
this.morph('width: 360px').morph('height: 300px').morph('margin: 200px 0 0 200px');
- это цепочка из трёх разных морфинг эффектов. Каждому эффекту можно давать, как параметр, промежуток времени между эффектами. Подробнее о морфинге можно узнать в блоге разработчика Scriptaculous.
В туториале использовались следующие версии библиотек:
del.icio.us Забобрить!2 Comments so far
Leave a reply
cool
Я тока ка второй день на этом сайте - а уже узнал больше чем за год чтения ebooks - рулез.