<?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>markup-javascript.com &#187; Prototype</title>
	<atom:link href="http://markup-javascript.com/tag/prototype/feed/" rel="self" type="application/rss+xml" />
	<link>http://markup-javascript.com</link>
	<description>Блог web-технолога</description>
	<lastBuildDate>Tue, 15 Mar 2011 13:35:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Аккордеон на prototype</title>
		<link>http://markup-javascript.com/2009/08/01/akkordeon-na-prototype/</link>
		<comments>http://markup-javascript.com/2009/08/01/akkordeon-na-prototype/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 18:15:57 +0000</pubDate>
		<dc:creator>Алексей</dc:creator>
				<category><![CDATA[JS Plugins]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://markup-javascript.com/?p=553</guid>
		<description><![CDATA[Изначально на блоге я собирался писать статьи равноценно, о наиболее развитых фреймверках и плагинам к ним, но так повелось, что о jQuery я пишу чаше, было пару статей по mootools и совсем нечего по prototype. В сегодняшней статье я хочу это поправить. Что я заметил из своего опыта &#8211; в prototype хорошо реализованы функции анимации, [...]]]></description>
			<content:encoded><![CDATA[<p>
Изначально на блоге я собирался писать статьи равноценно, о наиболее развитых фреймверках и плагинам к ним, но так повелось, что о jQuery я пишу чаше, было пару статей по mootools и совсем нечего по prototype. В сегодняшней статье я хочу это поправить.
</p>
<p>
Что я заметил из своего опыта &#8211; в prototype хорошо реализованы функции анимации, всегда эффекты в этом фреймверке выглядят более плавно чем в том же jQuery. prototype не самый легкий для изучения, ИМХО много чего в нем и не хватает&#8230; но темнемение он используется в некоторых популярных CMS и поэтому часто востребован клиентами!
</p>
<p>
Для фреймверка существуют большое количество различных плагинов, но наиболее часто востребованы самые популярные эффекты &#8211; лайтбокс, галерея, аккордеон. Именно на последний и хочу обратить ваше внимание.
</p>
<p><span id="more-553"></span></p>
<p>
Я всегда в своих проектах на prototype использую популярный плагин <strong><a href="http://www.stickmanlabs.com/accordion/">Accordion v2.0</a></strong> разработанный командой stickmanlabs (а плагин <a href="http://www.stickmanlabs.com/lightwindow/">LightWindow v2.0</a> вообще шедевр). Скрипт позволяет делать мультивложенные аккордеоны, поддерживает два вида &#8220;горизонтальный&#8221; и &#8220;вертикальный&#8221;, хороший плагин&#8230; поэтому не буду вам показывать свои версии аккордеона на prototype :P
</p>
<p>
Но для чего же тогда я все это затеил спросите вы&#8230; не для рекламы конечно, просто есть в данном плагине три <sup>маленьких</sup> неудобства, которые мне приходилось исправлять в некоторых моих проектах.<br />
Неудобства:
</p>
<ol>
<li>плагину необходимо свойство overflow для слайд-элемента, что не позволит вам сделать всякие выпадающее из аккордеона штучки, типа попапов и т.п.</li>
<li>неудобная активация открытого элемента аккордеона</li>
<li>активация плагина только для элементов с ID</li>
</ol>
<p>
Поэтому мне пришлось слегка модифицировать этот плагин. Теперь свойство overflow ставить необязательно, оно ставится само при анимации а в открытом состоянии убирается, что вам может пригодится. Для активации нужного элемента &#8211; достаточно поставить класс. И самое удобное &#8211; теперь не нужно создавать кучу ID и применять скрипт для каждого если на странице нужно сделать несколько аккордеонов, теперь можно вставлять нужный вам объект выбранный селектором.
</p>
<h3>Пример модифицированного скрипта:</h3>
<p><iframe frameborder="0" width="100%" height="200px" style="overflow:hidden;" src="http://markup-javascript.com/examples/example017/accordion.html"></iframe></p>
<p>
Вы можете открыть <strong><a target="_blank" href="http://markup-javascript.com/examples/example017/accordion.html">пример в новом окне</a></strong>.
</p>
<h3>JavaScript код примера:</h3>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;script type=&quot;text/javascript&quot; src=&quot;javascript/prototype.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;javascript/effects.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;javascript/accordion.js&quot;&gt;&lt;/script&gt;<br />
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span><br />
&nbsp; &nbsp; Event.<span style="color: #660066;">observe</span><span style="color: #009900;">&#40;</span>window<span style="color: #339933;">,</span> <span style="color: #3366CC;">'load'</span><span style="color: #339933;">,</span> loadAccordions<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">function</span> loadAccordions<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> _accordion <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> accordion<span style="color: #009900;">&#40;</span>$$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.accordion'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classNames <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; toggle <span style="color: #339933;">:</span> <span style="color: #3366CC;">'accordion_toggle'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; toggleActive <span style="color: #339933;">:</span> <span style="color: #3366CC;">'accordion_toggle_active'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; content <span style="color: #339933;">:</span> <span style="color: #3366CC;">'accordion_content'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectToggle <span style="color: #339933;">:</span> <span style="color: #3366CC;">'selected'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></div></div>
<p>
Если вы сравните код примера с кодом оригинала на официальном сайте &#8211; вы заметите, добавился параметр selectToggle в котором указывается название класса для активации нужного пункта в аккордеоне. Также отличается строчка var _accordion = new accordion($$(&#8216;.accordion&#8217;)[0], {&#8230; в ней указан объект через селектор $$(&#8216;.accordion&#8217;)[0]. Если у вас на сайте есть несколько аккордеонов с одним классом можно воспользоваться таким кодом:
</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span><br />
&nbsp; &nbsp; Event.<span style="color: #660066;">observe</span><span style="color: #009900;">&#40;</span>window<span style="color: #339933;">,</span> <span style="color: #3366CC;">'load'</span><span style="color: #339933;">,</span> loadAccordions<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">function</span> loadAccordions<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.accordion'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>acc<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> _accordion <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> accordion<span style="color: #009900;">&#40;</span>acc<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classNames <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; toggle <span style="color: #339933;">:</span> <span style="color: #3366CC;">'accordion_toggle'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; toggleActive <span style="color: #339933;">:</span> <span style="color: #3366CC;">'accordion_toggle_active'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; content <span style="color: #339933;">:</span> <span style="color: #3366CC;">'accordion_content'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectToggle <span style="color: #339933;">:</span> <span style="color: #3366CC;">'selected'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></div></div>
<p>Надеюсь мои исправление кому-то пригодятся !!! Удачи.</p>
<h3 class="download"><a href="http://markup-javascript.com/examples/example017/accordion.7z">Скачать плагин</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://markup-javascript.com/2009/08/01/akkordeon-na-prototype/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

