




<?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>Karalama Defteri &#187; gallery</title>
	<atom:link href="http://weboutbox.com/tag/gallery/feed/" rel="self" type="application/rss+xml" />
	<link>http://weboutbox.com</link>
	<description>Klavye Kırıntıları</description>
	<lastBuildDate>Wed, 31 Mar 2010 21:55:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Ajax sayfalarda prettyPhoto sorunu ve çözümü</title>
		<link>http://weboutbox.com/ajax-sayfalarda-prettyphoto-sorunu-ve-cozumu/</link>
		<comments>http://weboutbox.com/ajax-sayfalarda-prettyphoto-sorunu-ve-cozumu/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 01:29:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[galeri]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[picture gallery]]></category>
		<category><![CDATA[prettyPhoto]]></category>

		<guid isPermaLink="false">http://weboutbox.com/?p=117</guid>
		<description><![CDATA[prettyPhoto&#8216;yu bir ajax içinde çağrılan resimlere uygulamak isteyince bir takım sorunlar ortaya çıkarıyor. Nasıl diyecek olursanız, eğer bir sayfa içerisinde üç kez ajax ile çağırım yaparsanız resimlere üç kere tıklama ekliyor ve resimler birbirine giriyor. Sanırım bunu açıklamak için bir örnek vermek daha mantıklı olacak. Buradan birinci ve hiç çalışmayacak örneğimize bakabilirsiniz. Bu sayfamızda, sayfa <a href="http://weboutbox.com/ajax-sayfalarda-prettyphoto-sorunu-ve-cozumu/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><a title="prettyPhoto sayfası" href="http://weboutbox.com/jppp" target="_blank">prettyPhoto</a>&#8216;yu bir ajax içinde çağrılan resimlere uygulamak isteyince bir takım sorunlar ortaya çıkarıyor. Nasıl diyecek olursanız, eğer bir sayfa içerisinde üç kez ajax ile çağırım yaparsanız resimlere üç kere tıklama ekliyor ve resimler birbirine giriyor. Sanırım bunu açıklamak için bir örnek vermek daha mantıklı olacak.</p>
<p><a href="/ornek_jppp_1" target="_blank">Buradan</a> birinci ve hiç çalışmayacak örneğimize bakabilirsiniz. Bu sayfamızda, sayfa yüklendikten sonra prettyPhoto ile rel&#8217;i uygun olanları bir galeri haline getiriyoruz. Ancak sayfa açıldığı anda bizim 2 galerimizde sayfada yüklü değil. Bu nedenle linklerimize prettyPhoto bind edilemiyor. Biz galeriyi <strong>.load</strong> yöntemi ile çağırırken birde <strong>function </strong>ekleyerek çağırdığımız sayfadan gelen linklerin <strong>onclick </strong>event&#8217;ine prettyPhoto&#8217;yı <strong>bind </strong>edelim.</p>
<p>birinci örnekteki linklerin <strong>onclick </strong>evenlerini şöyle düzenliyoruz ;</p>
<pre class="brush: html">
onclick=&quot;$(&#039;#resimler&#039;).load(&#039;images1.html&#039;,function(){ prettyBind(); });&quot;
</pre>
<p>Bu eklemeyi yaptıktan sonra birde <strong>prettyBind</strong> adında function yazmamız gerekecek. Bu function ile load işleminden sonra linklere galeri özelliğini ekleyeceğiz. Fonksiyonumuz şöyle olacak;</p>
<pre class="brush: js">
function  prettyBind(){
$(&quot;a[rel^=&#039;prettyPhoto&#039;]&quot;).prettyPhoto();
}
</pre>
<p>Örneğimizin yeni haline <a href="/z38" target="_blank">buradan</a> bakabilirsiniz.</p>
<p>Bu fonksiyonu ekledikten sonra örneğimizi açıp galerilere bir kaç kez tıkladıktan sonra firebug ile kodlarımızı incelediğimizde şöyle bir tablo çıkıyor karşımıza ;</p>
<p><a href="/ornekler/pretty/floodpretty.gif"><img class="alignnone" title="flood" src="/ornekler/pretty/floodpretty.gif" alt="" width="553" height="190" /></a></p>
<p>Kodlarda böyle bir tekrar söz konusu olunca tabii ki gösterimde de sıkıntılar ortaya çıkıyor. Siz sayfayı açarak kendi denemelerinizi yapabilirsiniz ancak biz yinede bir resim ile gösterelim.</p>
<p><a href="/ornekler/pretty/prettyTrouble.gif"><img class="alignnone" title="karışıklık" src="/ornekler/pretty/prettyTrouble.gif" alt="" width="702" height="597" /></a></p>
<p>Peki bunları engellemek için ne yapmalıyız? Evet, yazımızın konusu da tam olarak bu noktada başlıyor. Bunu düzeltmenin 2 yöntemi var birisi <strong>prettyBind </strong>fonksiyonuna müdahale ederek yapabiliriz. Ancak bu geçici bir çözüm olacaktır. Biz burada prettyPhoto.js&#8217;ye müdahale ederek tüm projeyi hatta ileride yapacağımız projelerimizide bu dertten kurtarmış olacağız.</p>
<p>Şimdi, prettyPhoto.js dosyasını açıyoruz,</p>
<pre class="brush: js">
function _buildOverlay(){
</pre>
<p>kod bloğunu buluyoruz ve hemen altına</p>
<pre class="brush: js">
$(&#039;div.pp_pic_holder,div.pp_overlay,div.ppt&#039;).remove();
</pre>
<p>kodlarını yapıştırıyoruz. Peki burada ne yapıyoruz? Linkleri bir <a href="/jquery-each/">each</a> ile dönmeye başladığı zamanda, daha önceki galerileri <strong>.load</strong> ile her çağırdığımızda sayfaya otomatik olarak eklenen <strong>&#8220;pp_pic_holder,pp_overlay,ppt&#8221;</strong> classlarına sahip divleri temizliyoruz, fonksiyon yenisini ekliyor. Böylece karışıklık ortadan kalkmış oluyor.</p>
<p>Son olarak yeni prettyPhoto.js dosyamız ile yeni ve sorunsuz galerimize bakalım. <a href="/s2f" target="_blank">Buradan</a> galerimizin son haline bakabilirsiniz.</p>
<p>prettyPhoto.js dosyamızın son haline <a href="/smf" target="_blank">buradan</a> ulaşabilirsiniz</p>
<div class="thanks_button_div" style="float: left; margin-right: 10px;"><div style="float: left; display: inline;"><input type="button" onclick="thankYouButtonClick(117, 'You left &ldquo;Thanks&rdquo; already for this post')" value="Teşekkürler: 6"
                class="thanks_button thanks_large thanks_grey1"
                style="background-image:url(http://weboutbox.com/wp-content/plugins/thanks-you-counter-button/images/thanks_large_grey1.png);  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#ed008c;"
                id="thanksButton_117_2" title="Click to left &ldquo;Thanks&rdquo; for this post"/></div><div id="ajax_loader_117_2" style="display:inline;visibility: hidden;"><img alt="ajax loader" src="http://weboutbox.com/wp-content/plugins/thanks-you-counter-button/images/ajax-loader.gif" /></div></div>]]></content:encoded>
			<wfw:commentRss>http://weboutbox.com/ajax-sayfalarda-prettyphoto-sorunu-ve-cozumu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery ile Animasyon(Animation) &#8211; II</title>
		<link>http://weboutbox.com/jquery-ile-animasyonanimation-ii/</link>
		<comments>http://weboutbox.com/jquery-ile-animasyonanimation-ii/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 02:30:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Jquery]]></category>
		<category><![CDATA[animasyon]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[each]]></category>
		<category><![CDATA[efekt]]></category>
		<category><![CDATA[effect]]></category>
		<category><![CDATA[galeri]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[picture]]></category>
		<category><![CDATA[picture gallery]]></category>
		<category><![CDATA[resim galerisi]]></category>

		<guid isPermaLink="false">http://blog.weboutbox.com/?p=53</guid>
		<description><![CDATA[Bir önceki yazımda jQuery ile animasyona giriş yapmıştık. Bu yazı ile zincirleme ve etkileşimli animasyonlar hazırlayacağız. Zincirleme derken neden bahsediyorum ; Bir divimiz var ve biz bunu önce genişlemesini sonrada yüksekliğinin değişmesini istiyoruz. İşte burada jQuery&#8217;nin en sevdiğim özelliklerinden birisi olan zincirleme devreye giriyor. Önce javascript kodlarımızı yazalım : function func1(id) { //id&#039;sini parametre olarak <a href="http://weboutbox.com/jquery-ile-animasyonanimation-ii/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Bir önceki yazımda jQuery ile animasyona giriş yapmıştık. Bu yazı ile zincirleme ve etkileşimli animasyonlar hazırlayacağız.</p>
<p>Zincirleme derken neden bahsediyorum ;</p>
<p>Bir <em>div</em>imiz var ve biz bunu önce genişlemesini sonrada yüksekliğinin değişmesini istiyoruz. İşte burada jQuery&#8217;nin en sevdiğim özelliklerinden birisi olan zincirleme devreye giriyor.</p>
<p>Önce javascript kodlarımızı yazalım :</p>
<pre class="brush: js">
function func1(id)
{
  //id&#039;sini parametre olarak gönderdiğimiz elementin
  //önce genişliği ile sonrada arkaplan rengi ile oynuyoruz
  $(&#039;#&#039;+id).animate({width:500},250).animate({height:500},250);
  //zincirleme animasyonlarda bir işlem bittikten sonra
  //diğeri başlar
}
</pre>
<p>HTML kodlarımız :</p>
<pre class="brush: html">
&lt;input onclick=&quot;func1(&#039;div1&#039;)&quot; type=&quot;button&quot; value=&quot;oynat&quot; id=&quot;genislet&quot; /&gt;
&lt;br /&gt;
&lt;div style=&quot;width:100px;height:100px;background:#f00;display:block;&quot; id=&quot;div1&quot;&gt;&lt;/div&gt;
</pre>
<p>Örneğimize <a href="/ornekler/animate/ani2.html?ornek1"> buradan </a> ulaşabilirsiniz.</p>
<p>Zincirleme, sadece animasyonlar arasında bir hiyerarşi sağlamaktadır. Yani <em>animate</em>den sonra bir css kodu yazarsanız bu animasyon başladığı anda gerçekleşecektir.</p>
<p>Temel olarak anlatmamız gerekenleri bitirdiğimize göre örneklerimizi komplike hale getirelim.</p>
<p>4 tane resim içeren bir animasyon hazırlayalım. Başlangıçta hepsinin eni ve boyu eşit görünecek. Normal boyutları farklı resimler seçecez ve tıkladığımız resim orjinal boyutuna gelecek. Öncelikle resimler için google&#8217;dan &#8220;<em><strong>cat</strong></em>&#8221; diye arama yapıp 4 tane resim seçeyim <img src='http://weboutbox.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Resimlerimizi yan yana sıralıyoruz ve basit bir css uyguluyoruz. CSS&#8217;imizin amacı, tüm resimleri aynı boyutlardaki divlerin içerisine yerleştirerek farklı boyutlardaki resimlerin görüntüyü bozmasını engelliyoruz.</p>
<p>Öncelikle HTML kodlarımızı yazalım :</p>
<pre class="brush: html">
&lt;div style=&quot;margin-left: 30%; margin-top: 150px;&quot;&gt;
    &lt;div class=&quot;resim&quot;&gt;&lt;img src=&quot;http://www.arastiralim.net/wp-content/uploads/2008/02/lady-cat.jpg&quot; /&gt;&lt;/div&gt;
    &lt;div class=&quot;resim&quot;&gt;&lt;img src=&quot;http://www.plasticbamboo.com/wp/wp-content/uploads/hello-kitty-cat.jpg&quot; /&gt;&lt;/div&gt;
    &lt;div class=&quot;resim&quot;&gt;&lt;img src=&quot;http://www.fulyavet.com/images/cat17.jpg&quot; /&gt;&lt;/div&gt;
    &lt;div class=&quot;resim&quot;&gt;&lt;img src=&quot;http://asymptotia.com/wp-images/2006/12/copy_cat_copies.jpg&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>CSS kodlarımız :</p>
<pre class="brush: css">
.resim{
    height:90px;
    float:left;
    margin:0px 10px;
    width:100px;
    overflow:hidden;
}
</pre>
<p>HTML ve CSS kodlarımızı tamamladığımıza göre jQuery kodlarımızı yazmaya başlayabiliriz.</p>
<p>Sayfamız yüklendiği zaman <strong>$(document).ready()</strong> ile tüm resimlerimizin orjinal boyutlarını alıp <strong>rel</strong>&#8216;e atıyoruz. Tıklandığı zaman resmimizin boyutunu alabilmek için en kısa yöntem bence. Boyutları gerekli yere atadıktan sonra tüm resimlerimizin genişliğini 100 yapıyoruz. Yükseklikte genişliğe orantılı olarak otomatikmen değişiyor. Resimlerden herhangibirisine tıklandığı zaman yapılacak işlemleri belirliyoruz. Aşağıda zaten kodların içinde açıklamaları var ancak ben burada &#8220;<em><strong>each</strong></em>&#8220;den bahsetmek istiyorum ;</p>
<pre class="brush: js"> $(&#039;div.resim&gt;img&#039;).each(function(){
$(this).attr(&#039;rel&#039;,$(this).width());
});
</pre>
<p></em>satırları ile class&#8217;ı resim olan divlerin içerisindeki tüm resimleri &#8220;<em><strong>each</strong></em>&#8221; yardımı ile tek tek dönüyoruz. Yani hazır bir <em><strong>array</strong></em>&#8216;i yine hazır bir şekilde tek tek elemanlarına ayırıyoruz. Özellikle id ve class gibi seçivilerimizin olmadığı durumlarda bir üst seçiciye bağlı olarak işlem yapmamızı kolaylaştırır(programcılar için çok tanıdıktır zaten). Bu kod satırlarındaki üst seçicimi &#8220;<em><strong>div.resim</strong></em>&#8220;.</p>
<p>En son olarak javascript kodlarımızı yazıyoruz :</p>
<pre class="brush: js">

$(&#039;div.resim&gt;img&#039;).each(function(){
    //each ile tüm resimlerimizin orjinal genişliğini tektek
    //rel özelliğine(attribute) atıyoruz
    $(this).attr(&#039;rel&#039;,$(this).width());
    //tıklandığı zamanda buradan aldığımız değer ile
    //genişlik ve yüksekliğini ayarlıyoruz
});
//genişlik alma işlemimiz bittikten sonra tüm resimlerin
//genişliğini 100px&#039;e getiriyoruz
$(&#039;div.resim&gt;img&#039;).width(100);
//galerimizdeki bir resime tıklandığı zaman
//yapacağı işlemlere geçelim
$(&#039;div.resim&gt;img&#039;).click(function(){
//öncelikle açık olan resim için tüm resimleri sıfırlıyoruz
$(&#039;div.resim&gt;img&#039;)
.animate({width:100},250)//animate ile genişliğini 100px&#039;e çekiyoruz
//css özelliklerinide ilk haline getirmemiz gerekiyor
.css({&#039;z-index&#039;:&#039;1&#039;,&#039;position&#039;:&#039;static&#039;,&#039;margin-left&#039;:&#039;0px&#039;,&#039;margin-top&#039;:&#039;0px&#039;});
//ilk başta atadığımız rel değer ile animasyon sonunda
//resmimizin geleceği genişliği alıyoruz
var w = $(this).attr(&#039;rel&#039;);
//bulunduğu yeri ortalaması için biraz sola kaydırmak
//gerekeceğinden marginlerden 20 genişlikten dolayıda
//100 geliyor toplam genişlikten 120 çıkartıp
//2 ye bölerek ne kadar sola kayacağını hesaplıyoruz
var mL = (w-120)/2;
//basit ancak önemli bir kontrol ekliyoruz
//eğer resim küçük ise büyütme işlemlerini yap diyoruz
//isterseniz bu satıları kaldırarak farkı görebilirsiniz
if($(this).width() == 100)
{
    //öncelikle resmimizin positionunu absolute yaparak divin
    //css&gt;overflow özelliğini ezmesini sağlıyoruz
    //daha sonra z-index&#039;ini 5 yaparak diğer resimlerin üzerine alıyoruz
    //ve animasyonumuz ile estetik bir şekilde genişlik,
    //marginTop ve marginLeft&#039;i ile oynuyoruz
    $(this)
    .css({&quot;position&quot;:&quot;absolute&quot;,&quot;z-index&quot;:&quot;5&quot;})
    .animate({width:w,marginTop:&#039;-10%&#039;,marginLeft:&#039;-&#039;+mL},250);
    //ve bu basit resim galerimiz böylece sona eriyor
}
});
</pre>
<p>Bu örneğimizede <a href="http://weboutbox.com/ornekler/animate/ani2.html?ornek2" target="_blank">buradan</a> ulaşabilirsiniz.</p>
<div class="thanks_button_div" style="float: left; margin-right: 10px;"><div style="float: left; display: inline;"><input type="button" onclick="thankYouButtonClick(53, 'You left &ldquo;Thanks&rdquo; already for this post')" value="Teşekkürler: 10"
                class="thanks_button thanks_large thanks_grey1"
                style="background-image:url(http://weboutbox.com/wp-content/plugins/thanks-you-counter-button/images/thanks_large_grey1.png);  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#ed008c;"
                id="thanksButton_53_2" title="Click to left &ldquo;Thanks&rdquo; for this post"/></div><div id="ajax_loader_53_2" style="display:inline;visibility: hidden;"><img alt="ajax loader" src="http://weboutbox.com/wp-content/plugins/thanks-you-counter-button/images/ajax-loader.gif" /></div></div>]]></content:encoded>
			<wfw:commentRss>http://weboutbox.com/jquery-ile-animasyonanimation-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
