Зеркальный джаваскрипт или делаем отражения без фотошопа
Последнее время стало модно использовать в дизайне вэб сайтов эффект отражения. У меня есть небольшие представления как подобный эффект сделать в фотошопе, но за фотошоп я берусь в крайнем случае, если дизайнер в отпуске.
Делать отражение мы будем при помощи джаваскрипта, и поможет нам в этом старый добрый Prototype, Script.aculo.us и скрипт Reflector. Преимущество данного способа это скорость. То есть допустим заказчик просит показать как будет выглядеть логотип сайта с отражением и времени на обработку картинки в фотошопе - нету. Ну и конечно большое преимущество, что не нужно вообще уметь работать с графикой, чтобы сделать этот эффект.
И так, приступим.
1) Подгружаем скрипты:
-
<script src="prototype.js" type="text/javascript"></script>
-
<script src="scriptaculous.js" type="text/javascript"></script>
-
<script type="text/javascript" charset="utf-8">
-
// <![CDATA[
-
var Reflector = {
-
reflect: function(element) {
-
element = $(element);
-
options = $H({
-
amount: 1/3,
-
opacity: 1/3
-
}).merge(arguments[1] || {});
-
-
var p = element.parentNode, n = element.nextSibling;
-
var d = 1.0/(element.height*options.amount);
-
-
(element.height*options.amount).times( function(line) {
-
var h = Builder.node('div',{style:'height:1px;overflow:hidden'},
-
[Builder.node('img',{src:element.src,
-
style:'margin-top:-'+(element.height-line-1)+'px'
-
})]);
-
p.insertBefore(h,n);
-
$(h).setOpacity((1-d*line)*options.opacity);
-
});
-
}
-
}
-
// ]]>
-
</script>
2) Вставляем картинку, к которой надо применить эффект:
-
<img src="reflect-this.jpg" alt="test" id="reflect-this" />
3) Запускаем скрипт. Как параметр передаём id картинки.
-
Event.observe(window,'load', function(){
-
Reflector.reflect('reflect-this');
-
});
Вот собственно и всё. Результат можно посмотреть по этому адресу: Туториал - отражение с помощью джаваскрипта. У меня получается небольшой артефакт у картинки, которую я выбрал для примера. Не знаю, или это глюк скрипта, или это картинка такая, но например на сайте разработчика всё работает как надо.
del.icio.us Забобрить!No comments yet. Be the first.
Leave a reply