Archive for September, 2007
Как добавить свои функции к любому DOM элементу
Я уже писал ранее про эффекты при помощи Prototype и Script.aculo.us. Обычно, чтобы применить к элементу эффект, надо вызвать одну из функций класса Effect и как параметр передать id элемента, например:
-
Effect.Pulsate('element-id');
Может кому то этого и хватает, но мне нравится другой подход, а именно:
-
$('element-id').pulsate();
Читать такой код гораздо удобнее, и можно делать цепочку из функций, например $('element-id').pulsate().shake().fade(). Единственная проблема - таких функций у dom элементов нет и если попытаться их запустить, то браузер выдаст ошибку. Не беда. У Prototype есть удобный механизм для создания своих функций. В этом туториале я покажу как написать функцию shake().
Сначала надо добавить нужную функцию в хэш Element.Methods и затем вызвать Element.addMethods().
-
Element.Methods.shake = function(element)
-
{
-
new Effect.Shake(element);
-
return element;
-
}
-
Element.addMethods();
Готово. Теперь можно вызывать функцию shake у любого DOM элемента. Попробуем на примере. Сделаем картинку и при нажатии на неё запустим shake().
-
<!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>Еxtend element methods with prototype</title>
-
<script src="prototype.js" type="text/javascript"></script>
-
<script src="effects.js" type="text/javascript"></script>
-
<script type="text/javascript" charset="utf-8">
-
// <![CDATA[
-
Element.Methods.shake = function(element)
-
{
-
new Effect.Shake(element);
-
return element;
-
}
-
Element.addMethods();
-
-
// ждём загрузки html
-
document.observe('contentloaded', function()
-
{
-
// следим за кликом по картинке
-
$('shake-this').observe('click', function()
-
{
-
// this это элемент по которому кликнули
-
this.shake();
-
})
-
})
-
-
// ]]>
-
</script>
-
</head>
-
-
<img src="reflect-this.jpg" alt="test" id="shake-this" />
-
</body>
-
</html>
Посмотреть результат можно по этому адресу: Туториал - Как добавить свои функции к любому DOM элементу.
No commentsЗеркальный джаваскрипт или делаем отражения без фотошопа
Последнее время стало модно использовать в дизайне вэб сайтов эффект отражения. У меня есть небольшие представления как подобный эффект сделать в фотошопе, но за фотошоп я берусь в крайнем случае, если дизайнер в отпуске.
Делать отражение мы будем при помощи джаваскрипта, и поможет нам в этом старый добрый Prototype, Script.aculo.us и скрипт Reflector. Преимущество данного способа это скорость. То есть допустим заказчик просит показать как будет выглядеть логотип сайта с отражением и времени на обработку картинки в фотошопе - нету. Ну и конечно большое преимущество, что не нужно вообще уметь работать с графикой, чтобы сделать этот эффект.
И так, приступим.
Read more
Microsoft Silverlight 1.0 - новый релиз
Сегодня было очень сложно найти не только IT, но и вообще любые новости. Везде пишут только про новые айподы от Apple. Одна новость меня всё таки заинтересовала - релиз Silverlight 1.0.
Silverlight это новая платформа от Microsoft - что то наподобие Adobe Flash-a. С помошью Silverlight, Microsoft надеется составить конкуренцию Adobe в секторе богатых на медиа контент, интерактивных вэб сайтов. Silverlight, так же как и Flash умеет проигрывать видео и, в добавок к этому, позволяет управлять правами для их просмотра (DRM). На данный момент Silverlight работает в Internet Explorer, Firefox и Safari на Windows и Mac. Существует также Open Source проект Moonlight, что есть ни что иное как линукс версия Silverlight-a. Microsoft обещает всячески поддерживать разработку Moonlight, так что никто в обиде не останется.
Сможет ли Silverlight составить серьёзную конкуренцию флэшу - посмотрим. Но уже сейчас многие крупные интернет порталы начали использовать эту новую технологию: Entertainment Tonight, HSN, World Wrestling Entertainment, Netflix и многие другие.
1 commentJavaScript dump(), дампим переменные
В поиске новостей, наткнулся на интересную статью. Её автору надоело, что у PHP есть такая классная функция print_r(), которая выдаёт информацию про структуру и содержимое переменной, а в джаваскрипте такого нет. Так на свет появилась функция dump().
-
function dump(arr,level) {
-
var dumped_text = "";
-
if(!level) level = 0;
-
-
//The padding given at the beginning of the line.
-
var level_padding = "";
-
for(var j=0;j<level+1;j++) level_padding += " ";
-
-
if(typeof(arr) == 'object') { //Array/Hashes/Objects
-
for(var item in arr) {
-
var value = arr[item];
-
-
if(typeof(value) == 'object') { //If it is an array,
-
dumped_text += level_padding + "'" + item + "' ...\n";
-
dumped_text += dump(value,level+1);
-
} else {
-
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
-
}
-
}
-
} else { //Stings/Chars/Numbers etc.
-
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
-
}
-
return dumped_text;
-
}
Теперь можно создать джаваскрипт объект или массив и сдампить их содержимое в довольно таки читабельном виде.
-
var arra = new Array("So long",'s',42,42.13,"Hello World");
-
var assoc = {
-
"val" : "New",
-
"number" : 8,
-
"theting" : arra
-
};
-
-
alert(dump(assoc));
Результатом этого скрипта будет:
-
'val' => "New"
-
'number' => "8"
-
'theting' ...
-
'0' => "So long"
-
'1' => "s"
-
'2' => "42"
-
'3' => "42.13"
-
'4' => "Hello World"
Автор рекомендует показывать результат дампа при помощи alert() только если имеете дело с небольшими данными, иначе лучше сдампить содержимое в текстовое поле (textarea). От себя добавлю, что лучше сдампить в консоль от FireBug.
-
// вместо
-
alert(dump(assoc));
-
-
// делайте
-
console.log(dump(assoc));
CSS Dock Menu - меню как на маке
Все наверное видели док меню на маке. Подобное меню есть и для линукса. Идея в принципе простая - есть список иконок и при наведении на иконку мышкой, иконка увеличивается в размере. Просто, но красиво.
Эту красоту мы сегодня перенесём с десктопа в онлайн и сделаем док меню при помощи CSS и джаваскрипта. А поможет нам в этом CSS Dock Menu. Готовый комплект можно скачать по этому адресу. В комплекте имеется 2 джаваскрипт файла jQuery и Interface, 1 CSS файл, несколько иконок и htc файл, который чинит глюки интернет эксплорера для png картинок.
Приступим.
Read more