<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JSToolbox - все о JavaScript &#187; Эффекты</title>
	<atom:link href="http://www.jstoolbox.com/category/effekty/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jstoolbox.com</link>
	<description>Блог о программировании вообще и о JavaScript в частности, уроки, статьи, заметки, база знаний.</description>
	<lastBuildDate>Mon, 07 Mar 2011 18:19:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Обесцвечивание элементов веб страниц</title>
		<link>http://www.jstoolbox.com/2009/05/29/obescvechivanie-elementov/</link>
		<comments>http://www.jstoolbox.com/2009/05/29/obescvechivanie-elementov/#comments</comments>
		<pubDate>Fri, 29 May 2009 20:59:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Эффекты]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[обесцвечивание]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/?p=456</guid>
		<description><![CDATA[<p>Недавно нашел <a href="http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/" title="Grayscaling in non-IE browsers">интересный метод</a> обесцветить, т.е. сделать черно-белым любой элемент на веб странице, будь то изображение изображение, таблица, форма или что-либо еще.</p>
<p>Казалось бы, зачем это может понадобиться? Однако у меня сразу же появилась мысль о том, где такая возможность пригодиться. Довольно часто в моей практике встречались дизайны, в которых существовали элементы управления (различные кнопки, иконки) в двух видах - цветной, обозначающий что элемент активен, и серый, обозначающий что элемент не активен и нажимать на него не имеет смысла. Раньше я использовал два разных изображения - одно цветное, одно черно-белое, и если элемент деактивировался, то я подставлял нецветную картинку. Недостаток такого метода в том, что браузер должен подгружать дополнительную картинку, и представьте себе, что этих картинок может быть довольно много... Кроме того, нужно тратить время на то, чтобы создавать все эти нецветные изображения. При помощи предлагаемого здесь метода, обесцвечивание можно выполнить простой функцией <strong>grayscale()</strong>.</p>]]></description>
			<content:encoded><![CDATA[<p>Недавно нашел <a href="http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/" title="Grayscaling in non-IE browsers">интересный метод</a> обесцветить, т.е. сделать черно-белым любой элемент на веб странице, будь то изображение, таблица, форма или что-либо еще.</p>
<p>Казалось бы, зачем это может понадобиться? Однако у меня сразу же появилась мысль о том, где такая возможность пригодиться. Довольно часто в моей практике встречались дизайны, в которых существовали элементы управления (различные кнопки, иконки) в двух видах &#8211; цветной, обозначающий что элемент активен, и серый, обозначающий что элемент не активен и нажимать на него не имеет смысла. Раньше я использовал два разных изображения &#8211; одно цветное, одно черно-белое, и если элемент деактивировался, то я подставлял нецветную картинку. Недостаток такого метода в том, что браузер должен подгружать дополнительную картинку, и хуже всего, что этих картинок может быть довольно много&#8230; Кроме того, нужно тратить время на то, чтобы создавать все эти нецветные изображения. При помощи предлагаемого здесь метода, обесцвечивание можно выполнить простой функцией <strong>grayscale()</strong>.</p>
<p>Чтобы вам была более понятна суть, посмотрите мой <a href="/demo/grayscale.php" title="Демо пример обесцвечивания элементов DOM">демо пример</a>. Однако здесь же замечу, что, хотя этот метод и тестировался в разных браузерах, все же пока это экспериментальное решение.</p>
<p><span id="more-456"></span></p>
<p>Теперь вкратце опишу принцип работы этого метода.</p>
<p>Хоть я частенько и ругаю IE за его огрехи, но в этом случае он справляется лучше всех, ибо в Internet Explorer существует специальный фильтр который позволяет сделать такое преобразование цвета:</p>
<pre class="prettyprint">
elem.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)';
</pre>
<p>Фильтр может быть установлени и в CSS:</p>
<pre class="prettyprint">
elem {
    filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
    /* Элемент должен иметь "hasLayout"! */
    zoom: 1;
}
</pre>
<p>Что касается остальных браузеров, то здесь все гораздо сложнее. Во первых обесцвечивание обычных элементов &#8211; параграфов, таблиц и т.п. В этом случае нужно просматривать значения &#8220;цветных&#8221; стилей: color, background-color, и изменять их цвет следующими фукнциями:</p>
<pre class="prettyprint">
// Уменьшение насыщенности
function RGBtoDesat(r,g,b) {
    var average = (r + g + b) / 3;
    return {
        r: average,
        g: average,
        b: average
    };
}

// Преобразование в черно-белый цвет
function RGBtoGrayscale(r,g,b) {
    var mono = parseInt( (0.2125 * r) + (0.7154 * g) + (0.0721 * b), 10 );
    return {
        r: mono,
        g: mono,
        b: mono
    };
}
</pre>
<p>Для обесцвечивания изображений используется другая технология &#8211; элемент <strong>&lt;canvas&gt;</strong> и его метод <strong>getImageData()</strong>, но при этом изображение должно находиться на том же домене, что и веб страница. По всей видимости метод <strong>getImageData()</strong> не поддерживается в <em>Chrome</em> и <em>Safari</em> меньше четвертой версии, поэтому для этих браузеров такой метод работать не будет.</p>
<h3>Использование</h3>
<p>Чтобы выполнить обесцвечивание, нужно вызвать функцию <strong>grayscale()</strong>, передав в качестве параметра элемент или коллекцию элементов:</p>
<pre class="prettyprint">
// один элемент
var el = document.getElementById( 'myEl' );
grayscale( el );

// Массив элементов DOM
grayscale( document.getElementsByTagName('div') );

// Также работает с коллекциями jQuery
grayscale( $('div') );
</pre>
<p>Чтобы вернуть элемент в первоначальное, цветное, состояние, нужно воспользоваться функцией <strong>grayscale.reset()</strong>:</p>
<pre class="prettyprint">
grayscale.reset( el );
grayscale.reset( $('div') );
</pre>
<p>При всем этом, я бы не советовал вам использовать такую методику для больших изображений, так как их использование в элементе <strong>canvas</strong> может поглотить много ресурсов, даже если вы используете предлагаемую автором фунцкию <strong>grayscale.prepare()</strong> работы с такими изображениями.</p>
<p>Больше информации можете узнать на <a href="http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/" title="Grayscaling in non-IE browsers">здесь</a>. Там же можно <a href="http://james.padolsey.com/demos/grayscale/">скачать скрипт и посмотреть демо пример автора</a>.</p>
<p><a href="/demo/grayscale.php" class="demo" title="Демо пример">Смотреть демо</a></p>
<div class="postLinks"><strong>Спонсор статьи:</strong><br/><a href="http://www.domania.ru/">http://www.domania.ru/</a> &#8211; продажа квартир в Москве<br/><a href="http://www.automania.ru/">http://www.automania.ru/</a> &#8211; подержанные автомобили<br/><a href="http://www.job.ru/">http://www.job.ru/</a> &#8211; работа в москве</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2009/05/29/obescvechivanie-elementov/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Phototype &#8211; работа с изображениями в JavaScript (продолжение)</title>
		<link>http://www.jstoolbox.com/2008/07/01/phototype-rabota-s-izobrazheniyami-v-javascript-prodolzhenie/</link>
		<comments>http://www.jstoolbox.com/2008/07/01/phototype-rabota-s-izobrazheniyami-v-javascript-prodolzhenie/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 22:01:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Эффекты]]></category>
		<category><![CDATA[скрипты]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/07/01/phototype-rabota-s-izobrazheniyami-v-javascript-prodolzhenie/</guid>
		<description><![CDATA[Месяц назад я писал статью о клиент-серверном скрипте Phototype, который позволяет работать с изображениями (изменять размер, создавать эффект наброска, отбрасывать тень и др.) с использованием JavaScript. Работает он следующим образом: на стороне клиента выполняется скрипт, в котором указываем путь к изображения и что нам нужно сделать с ним, в результате создается элемент &#60;img&#62;, который указывает [...]]]></description>
			<content:encoded><![CDATA[<p>Месяц назад я писал статью о клиент-серверном скрипте <a href="http://www.jstoolbox.com/2008/05/24/phototype-rabota-s-izobrazheniyami-v-javascript/" title="Скрипт для работы с изображениями Phototype">Phototype</a>, который позволяет работать с изображениями (изменять размер, создавать эффект наброска, отбрасывать тень и др.) с использованием JavaScript. Работает он следующим образом: на стороне клиента выполняется скрипт, в котором указываем путь к изображения и что нам нужно сделать с ним, в результате создается элемент <strong>&lt;img&gt;</strong>, который указывает на скрипт php, выполняющий необходимые преобразования с помощью библиотеки GD. Таким образом можно динамически создавать и изменять нужные нам изображения, управляя всем процессом из JavaScript.</p>
<p>На днях мне довелось использовать этот скрипт на практике и сразу же обнаружились некоторые недостатки, исправив которые я получил новый скрипт, которым и хочу поделиться с вами. Но сначала о недостатках старого скрипта. Первый недостаток это зависимость скрипта от библиотеки <a href="http://prototypejs.org/" title="Библиотека Prototype">Prototype</a>. Во многих случаях использование JavaScript  фреймворков является плюсом, ибо значительно облегчает дальнейшую работу со скриптами, но не в этом случае, ибо скрипт использовал всего лишь пару возможностей Prototype, а именно создание класса Photo и создание элемента <strong>img</strong>. Подключать ради этого такую большую библиотеку просто неразумно. В моем случае на сайте использовалась библиотека <a href="http://mootools.net" title="Библиотека Mootools">Mootools</a>, и подключать дополнительную Prototype я желания не имел, отчего и пришлось переработать скрипт. Второй недостаток, это отсутствие поддержки прозрачности для изображений. Если я использовал, к примеру, эффект вращения, то фон возле изображения обязательно заполнялся белым цветом. То же самое и при добавлении тени, где на фоне теней виднелся белый фон. То есть, такие эффекты скрипта, как вращение и отбрасывание тени, можно эффективно применять только на белом фоне, иначе получается совсем не то, что хотелось бы.</p>
<p><span id="more-162"></span></p>
<p>Теперь о том, что же я исправил в скрипте. Во первых полное избавление от зависимости со стороны Prototype. Во вторых добавлена поддержка прозрачности и возможность устанавливать цвет фона при помощи функции <strong>setBgColor()</strong>:</p>
<pre class="prettyprint">
var img = new Photo().load('image.jpg').addCaption('Hello').setBgColor(255,255,255,10);
document.getElementById('e10').appendChild(img.fetch());
</pre>
<p>Первые три параметра функции <strong>setBgColor()</strong> &#8211; это значения для красного, зеленого, и синего цветов (0 &#8211; 255), а последний, четвертый параметр &#8211; это значение прозрачности (0 &#8211; 127).</p>
<p>В третьих, добавлена возможность добавлять дополнительное изображение поверх основного. Верней сказать, не добавлена а исправлена такая возможность, ибо в старой версии существовала функция <strong>addChuckNorris()</strong>, которая добавляла гордый профиль Чака Норриса поверх изображений (автор либо его поклонник либо просто шутник <img src='http://www.jstoolbox.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). Я эту функцию преобразовал в <strong>addForeImage()</strong>:</p>
<pre class="prettyprint">
var img = new Photo().load('photo.png').addForeImage('chuck.png');
document.getElementById('e2').appendChild(img.fetch());
</pre>
<p>В качестве параметра она принимает имя файла JPEG или PNG, который должен быть в папке images. Скрипт автоматически изменяет размер изображение и помещает поверх основного в крайнем левом углу (возможность управлять размерами и положением этого изображения будет полем деятельности при разработке следующей версии).</p>
<p>В четвертых, добавлена возможность работать не только с файлами JPG , но и с файлами PNG, что при возможностях последнего делает скрипт значительно более полезным.</p>
<p>Ну и последнее, в моем скрипте можно устанавливать путь к библиотеке при помощи функции <strong>setImgPath()</strong>. То есть, если вы поместили библиотеку в /demo/phototype , то для правильного отображения нужно вызывать функцию следующим образом:</p>
<pre class="prettyprint">
var img = new Photo().setImgPath('/demo/phototype');
</pre>
<p>В старом скрипте путь указывался относительным, т.е. изображения имели атрибут src=&#8221;image.php?&#8230;..&#8221;, и если скрипт располагался где-то во вложенных папках, то браузер просто не находил его.</p>
<p>На этом все мои усовершенствования и заканчиваются, хотя поле деятельности здесь потенциально очень большой и ограничивается лишь возможностями библиотеки GD. Есть также идею заюзать какую-нибудь библиотеку вроде <a href="http://asido.info/">Aside</a>, которая может делать и ресайз и водяные знаки и многое другое. Может из этого что-нибудь и получится.</p>
<p><a href="/download/phototype.zip" class="download" title="Скачать скрипт">скачать</a><a href="/demo/phototype/test.html" class="demo" style="margin-left:18px">смотреть демо</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/07/01/phototype-rabota-s-izobrazheniyami-v-javascript-prodolzhenie/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Phototype &#8211; работа с изображениями в JavaScript</title>
		<link>http://www.jstoolbox.com/2008/05/24/phototype-rabota-s-izobrazheniyami-v-javascript/</link>
		<comments>http://www.jstoolbox.com/2008/05/24/phototype-rabota-s-izobrazheniyami-v-javascript/#comments</comments>
		<pubDate>Sat, 24 May 2008 17:54:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Эффекты]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[изображения]]></category>
		<category><![CDATA[скрипт]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/05/24/phototype-rabota-s-izobrazheniyami-v-javascript/</guid>
		<description><![CDATA[Phototype &#8211; интересный и вместе с тем простой клиент-серверный скрипт основанный на библиотеке Prototype для работы с изображениями, который может обрезать, поворачивать, добавлять тень к изображениям и др. Все эти манипуляции выполняются на сервере при помощи GD библиотеки для PHP. На стороне клиента работа с библиотекой выглядит так:

l_oPhoto = new Photo().load('image.jpg');
l_oPhoto.resize({width:200});
l_oPhoto.rotate(3);
l_oPhoto.dropShadow();
l_oPhoto.addCaption('Get ajaxorized!', '1942.ttf');
document.body.appendChild(l_oPhoto.fetch());

И результат выполнения [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ajaxorized.com/phototype-image-manipulation-with-javascript">Phototype</a> &#8211; интересный и вместе с тем простой клиент-серверный скрипт основанный на библиотеке <a href="http://www.prototypejs.org/">Prototype</a> для работы с изображениями, который может обрезать, поворачивать, добавлять тень к изображениям и др. Все эти манипуляции выполняются на сервере при помощи GD библиотеки для PHP. На стороне клиента работа с библиотекой выглядит так:</p>
<pre class="prettyprint">
l_oPhoto = new Photo().load('image.jpg');
l_oPhoto.resize({width:200});
l_oPhoto.rotate(3);
l_oPhoto.dropShadow();
l_oPhoto.addCaption('Get ajaxorized!', '1942.ttf');
document.body.appendChild(l_oPhoto.fetch());
</pre>
<p>И результат выполнения этого кода:</p>
<div class="entry_picture" style="width:286px">
<img src='http://www.jstoolbox.com/wp-content/uploads/2008/05/phototype.png' alt='Phototype' />
</div>
<p>Посмотреть больше примеров и скачать скрипт можно <a href="http://ajaxorized.com/phototype-image-manipulation-with-javascript">здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/05/24/phototype-rabota-s-izobrazheniyami-v-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Феерверк на веб странице</title>
		<link>http://www.jstoolbox.com/2008/05/08/feerverk-na-veb-stranice/</link>
		<comments>http://www.jstoolbox.com/2008/05/08/feerverk-na-veb-stranice/#comments</comments>
		<pubDate>Thu, 08 May 2008 18:54:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Эффекты]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[скрипт]]></category>
		<category><![CDATA[феерверк]]></category>
		<category><![CDATA[эффект]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/05/08/feerverk-na-veb-stranice/</guid>
		<description><![CDATA[Итак, наступает большой праздник &#8220;День победы&#8221;, одним из символов которого является конечно же праздничный салют. Как раз сегодня натолкнулся на скрипт fireworks.js, который позволяет добавлять яркие, красочные салюты на веб страницу.

Автор этого скрипта также является автором библиотеки SoundManager,  для работы со звуком через JavaScript (о ней я недавно написал статью), поэтому не удивительно, что [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, наступает большой праздник &#8220;День победы&#8221;, одним из символов которого является конечно же праздничный салют. Как раз сегодня натолкнулся на скрипт <a href="http://www.schillmania.com/projects/fireworks/">fireworks.js</a>, который позволяет добавлять яркие, красочные салюты на веб страницу.</p>
<div style="width:443px;margin:10px auto"><img src='http://www.jstoolbox.com/wp-content/uploads/2008/05/fireworks.png' alt='fireworks.js - феерверк на веб странице' /></div>
<p>Автор этого скрипта также является автором библиотеки <a href="http://www.schillmania.com/projects/soundmanager/">SoundManager</a>,  для работы со звуком через JavaScript (о ней я недавно написал <a href="http://www.jstoolbox.com/2008/04/29/soundmanager-javascript-api-dlya-vosproizvedeniya-zvuka/">статью</a>), поэтому не удивительно, что феерверк сопровождается замечательными звуковыми эффектами.</p>
<p>Основные возможности скрипта:</p>
<ul>
<li>Много разных вариаций формы и цвета феерверка</li>
<li>Легкий в конфигурации API для добавления дополнительных эффектов</li>
<li>Управляемые скриптом звуковые эффекты при помощи SoundManager API</li>
<li>Чередующаяся анимация (позволяет легко устанавливать последовательность феерверков)</li>
<li>Эффект звукового панорамирования, в зависимости от расположения салюта на странице.</li>
</ul>
<p>Попробовать скрипт в работе можно <a href="http://www.schillmania.com/projects/fireworks/">здесь</a>.</p>
<p>С праздником Вас, и до скорых встреч!</p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/05/08/feerverk-na-veb-stranice/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Морфинг на Mootools</title>
		<link>http://www.jstoolbox.com/2008/04/22/morfing-na-mootools/</link>
		<comments>http://www.jstoolbox.com/2008/04/22/morfing-na-mootools/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 20:53:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Эффекты]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/04/22/morfing-na-mootools/</guid>
		<description><![CDATA[Морфинг, это визуальный эффект, позволяющий плавно преобразовать внешний вид одного элемента в другой. Это не самый распространенный эффект, но тем не менее иногда бывает очень кстати.
В Mootools, морфинг выполняется при помощи класса Fx.Morph, который имеет следующий синтаксис:

var myFx = new Fx.Morph(element[, options]);

Здесь, element &#8211; элемент, или его ID; options &#8211; дополнительные опции, как то скорость [...]]]></description>
			<content:encoded><![CDATA[<p>Морфинг, это визуальный эффект, позволяющий плавно преобразовать внешний вид одного элемента в другой. Это не самый распространенный эффект, но тем не менее иногда бывает очень кстати.</p>
<p>В Mootools, морфинг выполняется при помощи класса <a href="http://docs12b.mootools.net/Fx/Fx.Morph" alt="описание класса Fx.Morph">Fx.Morph</a>, который имеет следующий синтаксис:</p>
<pre class="prettyprint">
var myFx = new Fx.Morph(element[, options]);
</pre>
<p>Здесь, <strong>element</strong> &#8211; элемент, или его ID; <strong>options</strong> &#8211; дополнительные опции, как то скорость преобразования (duration) и его тип (transition).</p>
<p>Преобразование выполняется при помощи функции <strong>Morph.start()</strong>, которая принимает в качестве аргумента либо имя класса, либо объект со стилями, которые необходимо установить для объекта:</p>
<pre class="prettyprint">
var myEffect = new Fx.Morph('myElement', {duration: 'short', transition: Fx.Transitions.Sine.easeOut});

myEffect.start({
    'height': 100,
    'width': 300
});
</pre>
<p>В этом примере, для скорости указан параметр &#8220;short&#8221;, что значит быстрый переход, для параметра <strong>transition</strong> установлено значение Sine.easeOut (подробнее о нем см. <a href="http://docs.mootools.net/Effects/Fx-Transitions.js#Fx.Transitions.Sine">здесь</a>). В функцию <strong>start()</strong> передан объект с двумя свойствами <strong>height</strong> и <strong>width</strong>, это значит что объект изменит размер с текущих значений высоты до 100 и 300 пикселей соответственно.</p>
<p><span id="more-116"></span></p>
<p>Теперь обратите внимание на следующий, немного измененный пример:</p>
<pre class="prettyprint">
var myEffect = new Fx.Morph('myElement', {duration: 'short', transition: Fx.Transitions.Sine.easeOut});

myEffect.start({
    'height': [10, 100],
    'width': [900, 300]
});
</pre>
<p>Отличается он тем, что для параметров &#8220;height&#8221; и &#8220;width&#8221; установлены начальные значения высоты и ширины, т.е. высота увеличится с 10 до 100, а ширина уменьшится с 900 до 300 пикселей.</p>
<p>А сейчас немного более сложный пример &#8211; создадим элемент, который будет плавно изменять свой стиль при нажатии на три ссылки.</p>
<h4>Шаг 1: HTML</h4>
<pre class="prettyprint">
&lt;a href="#" class="switch-view" rel="view1">View 1&lt;/a>&lt;br/>
&lt;a href="#" class="switch-view" rel="view2">View 2&lt;/a>&lt;br/>
&lt;a href="#" class="switch-view" rel="view3">View 3&lt;/a>&lt;br/>

&lt;div class="view1" id="content-block">&lt;/div>
</pre>
<p>Тут все просто, собственно ссылки и div, стиль которого и будем изменять. Для ссылок указываем имя класса <strong>switch-view</strong>, для того, чтобы можно было добавить к ним обработчик <strong>onclick</strong>, а в атрибут <strong>rel</strong> добавляем имя класса, который нужно присвоить div-у.</p>
<h4>Шаг 2: CSS</h4>
<pre class="prettyprint">
.view1{
	border:2px solid #fc0;
	color:#000;
	background:#fffea1;
	padding:5px;
	width:400px;
	height:200px;
}
.view2{
	border:9px solid #00f;
	color:#090;
	background:#fcfa56;
	padding:12px;
	width:700px;
	height:400px;
}
.view3{
	border:5px solid #000;
	color:#fff;
	background:#f00;
	padding:10px;
	width:600px;
	height:50px;
}
</pre>
<p>Это три стиля, которые будут присваиваться div-у.</p>
<h4>Шаг 3: JavaScript код</h4>
<pre class="prettyprint">
window.addEvent('domready', function() {
	$$('.switch-view').each(function(el) {
		//добавляем обработчик onclick для ссылок
		el.addEvent('click', function(e) {
			var myFx = new Fx.Morph('content-block', {
					duration: 500,
					transition: Fx.Transitions.Sine.easeOut
				});
			myFx.start('.' + el.get('rel'));
		});
	});
});
</pre>
<p>Принцип работы кода таков &#8211; сначала получаем все ссылки с классом switch-view, затем к каждой из них добавляем обработчик, в теле которого объявляется новый объект класса <strong>Fx.Morph</strong> и сразу же вызывается функция <strong>start()</strong> для начала преобразований. Имя класса для преобразования получаем при помощи выражения <strong>el.get(&#8217;rel&#8217;)</strong>.</p>
<p><a href="/demo/morph/morphing.html" class="demo">смотреть демо</a><a href="/download/morph.zip" class="download" style="margin-left:18px;">загрузить пример</a><br />
<br/></p>
<p>Если вы используете библиотеку Prototype, то рекомендую посмотреть статью <a href="http://www.simplecoding.org/ispolzovanie-effekta-morfinga.html" alt="Использование эффекта морфинга">&quot;использование эффекта морфинга&quot;</a> о том, как можно создать такой же эффект при помощи этой библиотеки.</p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/04/22/morfing-na-mootools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

