<?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>zoltanhosszu.com &#124; blog &#187; alapok</title>
	<atom:link href="http://blog.zoltanhosszu.com/tags/alapok/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zoltanhosszu.com</link>
	<description>Zoltan Hosszu&#039;s blog about xHTML, CSS, JavaScript, PHP</description>
	<lastBuildDate>Wed, 07 Apr 2010 20:07:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>jQuery: Az alapok és az effektek</title>
		<link>http://blog.zoltanhosszu.com/2010/01/jquery-az-alapok-es-az-effektek/</link>
		<comments>http://blog.zoltanhosszu.com/2010/01/jquery-az-alapok-es-az-effektek/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 19:22:02 +0000</pubDate>
		<dc:creator>Zoltan</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[alapok]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.zoltanhosszu.com/?p=90</guid>
		<description><![CDATA[Mint már az előző postban említettem, egyre többet használom a jQuery-t a honlapok kódolásakor, ezért úgy döntöttem, hogy megpróbálom néhány írásban összefoglalni a nyelv alapjait. Ez az első ilyen cikk, ezért azoknak ajánlom olvasásra, akik még egyáltalán nem foglalkoztak ezzel a kiegészítővel, vagy akik nincsenek tisztában az effektek működésével. Írásomban összeszedem, hogy miként is működik [...]]]></description>
			<content:encoded><![CDATA[<p>Mint már <a href="http://blog.zoltanhosszu.com/2010/01/jquery-es-a-jquery-ui/">az előző postban</a> említettem, egyre többet használom a <strong>jQuery</strong>-t a honlapok kódolásakor, ezért úgy döntöttem, hogy megpróbálom néhány írásban összefoglalni a nyelv alapjait. Ez az első ilyen cikk, ezért azoknak ajánlom olvasásra, akik még egyáltalán nem foglalkoztak ezzel a kiegészítővel, vagy akik nincsenek tisztában az effektek működésével.</p>
<p>Írásomban összeszedem, hogy <strong>miként is működik egy jQuery program</strong> és hogy <strong>mik a legalapvetőbb effekt utasítások</strong>, amiket használni érdemes és kell. Akik egyáltalán nincsenek tisztában a <strong>HTML kóddal</strong> és az alapvető <strong>Javascript nyelvvel</strong>, azok először ezeknek nézzenek utána, mert ahhoz, hogy az ember megértsen egy komplexebb nyelvet, jobb ha ismeri annak az alapjait. Persze azért nem kell az Assembly-vel kezdeni! <img src='http://blog.zoltanhosszu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-90"></span>A Javascripttől eltérően a jQuery parancsok elég összetettek tudnak lenni, főleg mivel ezt a library-t azért hozták létre, hogy meggyorsítsa, megkönnyítse a webprogramozást, és hogy minél kevesebb sor megírásával lehessen létrehozni minél felhasználóbarátabb oldalakat. Minden parancs így néz ki:</p>
<pre class="brush:js">$(DOM elem).valami();</pre>
<ul>
<li>A <strong>$ jel</strong> a &#8220;jQuery&#8221; rövidítése, ez jelzi a JS számára, hogy itt most egy jQuery objektumról lesz szó. Ha mondjuk használtál már Ruby on Rails-t akkor ismerős lehet ez a fajta jelölés. Lényegében ennyi, de érdemes még tudni, hogy a $ helyettesíthető a jquery kiírásával, tehát: jquery(DOM elem).valami();</li>
<li>A <strong>(DOM elem)</strong> az a HTML elem amire hivatkozol a jQuery parancsban. Ezen az elemen fog végrehajtódni a meghívott függvény</li>
<li>A <strong>.valami();</strong> a jQuery függvény, amely meghívásra kerül. Lehet ez a legegyszerűbb hide(), ami eltünteti a megnevezett elemet, vagy egy összetett AJAX hívás is.</li>
</ul>
<p>Tulajdonképpen ez volt a legelrettentőbb rész. <img src='http://blog.zoltanhosszu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Érdemes tudni, hogy <strong>egy DOM elemhez több függvény is rendelhető</strong>, tehát a <em>$(DOM elem).valami1().valami2();</em> is nagyon szépen fog működni; és ebben van az igazi potenciál. Most, hogy ezt megértettük nézzünk meg a legegyszerűbb függvényeket:<strong> az effekteket</strong>.</p>
<h3><strong>Effekt függvények</strong></h3>
<p>A beépített effekt függvények nagy része a következő felépítéssel működik:</p>
<pre class="brush:js">$(elem).effekt([speed, callback]);</pre>
<ul>
<li>A függvények paraméterei opcionálisak, de közülük a <strong>speed, azaz sebesség</strong> az amit legtöbbször használni kell. Meg lehet adni ezt &#8216;slow&#8217;, &#8216;normal&#8217; és &#8216;fast&#8217; értékeken túl milliszekundumban is (1000 ms = 1 másodperc). Ez lesz az az időtartam, ami alatt a függvény végrehajtódik; ez a lefutási idő.</li>
<li>A <strong>callback, vagyis visszahívás</strong> paraméterben megadható, hogy mi történjen miután lefutott a függvény. Például amint véget ér az adott parancs, visszakapjuk egy alert()-ben a számolás értékeit.</li>
</ul>
<h3><strong>Volt, nincs</strong> (show(), hide(), toggle())<strong><br />
</strong></h3>
<p>Szerencsére a jQuery függvényei többsége nevében hordozza a funkcióját is, ezért ha nem is ismered a függvényt, nagyon gyorsan rá lehet jönni a működésére. Így van ez a <strong>show()</strong> és a <strong>hide()</strong> parancsoknál is: míg előbbi megjelenít egy rejtett elemet, utóbbi eltünteti a célelemét. Mindkét függvény használható speed és callback paraméterrel és nélküle, de fontos megjegyezni, hogy a sebesség paraméter nélkül csak megjelenik/eltűnik a kiválasztott DOM elem; megadásakor azonban egy kis animációt kap.</p>
<p>A <strong>toggle()</strong> egy kicsiben eltér a show() és hide() függvényketől, ugyanis ez tulajdonképpen a kettő kombinációja. Paramétereinek megadhatjuk a már ismert speed és callback paramétereket, de egy kifejezést is (pl. <em>osztas++ % 2 == 0</em>, azaz ha az &#8220;osztas&#8221; változó kettővel történő maradékos osztásának eredménye 0), amely teljesülésekor végrehajtódik az utasítás.</p>
<p>Lássunk is egy rövid példát. HTML kód:</p>
<pre class="brush:php"><a id="show">Jelenítsd meg (show)</a>
<a id="hide">Tüntesd el (hide)</a>
<a id="toggle">Jelenítsd meg és tüntesd el (toggle)</a>
</pre>
<p>jQuery kód:</p>
<pre class="brush:js">$('a#show').click(function() {
  $('p.pelda_1').show();
});
$('a#hide').click(function() {
  $('p.pelda_1').hide();
});
$('a#toggle').click(function() {
  $('p.pelda_1').toggle('slow');
});
</pre>
<p>A kis programunk mindössze annyit csinál, hogy a megadott linkekre való kattintáshoz  (click() függvény [erről egy későbbi postban]) rendel show, hide és toggle effekteket. <a href="http://blog.zoltanhosszu.com/pelda/pelda_1.html" target="_blank"><strong>Itt nézheted meg</strong> </a>működés közben a demot. A show és hide nem kapott speed paramétert, míg a toggle-re tettem, csak azért, hogy lássátok, hogy milyen is az. <img src='http://blog.zoltanhosszu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3><strong>Csúszkálás </strong>(slideDown(), slideUp(), slideToggle())</h3>
<p>A slide függvények nagyon hasonlóan működnek a show, hide függvényekhez, lényegében annyiban különböznek, hogy míg az előbbiek a speed megadásával függőleges és vízszintes irányba animálták a függvényt, a slide függvények csak függőleges irányba teszik ezt. Nem ér meg külön példát, a <a href="http://docs.jquery.com/Effects/slideToggle#speedcallback" target="_blank">jQuery dokumentációban</a> van róluk bőven leírás, példával.</p>
<h3><strong>Eltűnés/feltűnés </strong>(fadeIn(), fadeOut(), fadeToggle())</h3>
<p>Eljutottunk egyik kedvencemhez: a <strong>fadeIn()</strong>, <strong>fadeOut()</strong>, <strong>fadeTo()</strong> ugyanis az a függvényhármas, amelyiket a legnagyobb előszeretettel használom. Szerintem baromi jól tud kinézni egy jó helyre rakott, szépen animálódó üzenet a usernek, főleg ha az ugyanilyen szépen be is csukódik utána. A fadeTo() a paraméterben kapott értékig csökkenti a függvény láthatóságát, míg a fadeIn() és fadeOut() a megadott sebességgel csökkenti az elem opacity CSS értékét, majd mikor ez elért a 0-hoz, rádob egy &#8220;display: none&#8221;-t, tehát eltűnteti teljesen, hogy ne foglalja a helyet. Na ez gondokat okozhat néha.</p>
<p>A fade effektek egyik fontos tulajdonsága, hogy míg az eddig megismert függvények folyamatosan &#8220;nyitják ki&#8221; a célobjektumot, ezzel lentebb tolva/fentebb húzva az alatta és körülötte lévő elemeket; a fade az animáció befejeztével és kezdetekor <strong>a DOM elem elfoglalja a megfelelő méretű helyét és így tűnik el(ő)</strong>. Ez azt jelenti, hogy ha egy oldal közepén lévő elemet animálsz meg fade-del, akkor az animációs idő egy időpillanatában ugrani fog egyet az oldal magassága/szélessége, erre pedig figyelni kell mert zavaró lehet!</p>
<p>A <a href="http://blog.zoltanhosszu.com/pelda/pelda_2.html" target="_blank"><strong>fade-hez készített </strong><strong>példában</strong></a> az eltüntetendő elem után raktam egy másikat, hogy lássátok miről beszéltem pontosan. Megoldásként vagy azt javaslom, hogy olyan elemeknél használjátok a függvényt, amik nincsenek körülvéve sok másik elemmel, vagy CSS-sel pozicionáljátok be az elemet egy felsőbb rétegre.</p>
<h3><strong>A központi effekt </strong>(animate() és stop())</h3>
<p>Az összes eddig felsorolt effekt függvény visszavezethető egy központi animációs függvényre, az <strong>animate()</strong>-re. Ez az amivel mi magunk is létrehozhatunk hasonló mozgásokat a DOM elemekre, csupán egy kis CSS tudás kell hozzá. Egyszerűen az animate() paraméterei között meg kell adnunk, hogy mely CSS tulajdonságokat változtassa meg a függvényünk; például a 400px széles és magas &lt;p&gt; csökkenjen 200&#215;200-ra, a láthatósága pedig legyen fele:</p>
<pre class="brush:js">$('a#animald').click(function() {
  $('p.pelda_3').animate({width: "200px", height: "200px", opacity: 0.5}, 1500);
});</pre>
<p><a href="http://blog.zoltanhosszu.com/pelda/pelda_3.html" target="_blank"><strong>Itt a kipróbálható példa</strong></a>. Az animate() az egyik legfontosabb effekt, hiszen ezzel nagyon komplex animációkat hozhatunk létre, de vannak korlátok; a háttérképet például csak vízszintesen lehet animálni, ami kicsit idegesítő tud lenni, szerencsére azonban <a href="http://plugins.jquery.com/project/backgroundPosition-Effect" target="_blank">van erre egy plugin</a>.</p>
<p>Feltűnhet, hogy a példában alkalmaztam a <strong>stop()</strong> függvényt az animate() előtt (a függvények összefűzhetőek, mint már említettem!); ez annyit csinál, hogy megállítja az éppen zajló animate()-et, így adva szabad utat a következő animáló függvénynek. A stop()-ról van egy egészen jó példa a <a href="http://docs.jquery.com/Effects/stop#clearQueuegotoEnd" target="_blank">jQuery dokumentációban</a>.</p>
<p>Mára ennyi. Következő alkalommal megnézünk egy-két fontos <strong>esemény-függvényt</strong> (pl. rákattintás, fókuszba kerülő elemek) és néhány <strong>selectort </strong>(ezekkel tudunk bizonyos elemekre hivatkozni és kezelni jobban a DOM elemeket). Addig is gyakoroljatok ezekkel! <img src='http://blog.zoltanhosszu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ha valami nem világos, nyugodtan kérdezzetek a hozzászólásoknál!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zoltanhosszu.com/2010/01/jquery-az-alapok-es-az-effektek/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
	</channel>
</rss>
