<?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>ugotit.de &#187; Webdesign</title>
	<atom:link href="http://ugotit.de/tag/webdesign/feed/" rel="self" type="application/rss+xml" />
	<link>http://ugotit.de</link>
	<description>and I say &#34;It&#039;s all right&#34;</description>
	<lastBuildDate>Fri, 09 Sep 2011 07:16:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>neues Theme</title>
		<link>http://ugotit.de/2010/07/25/neues-theme/</link>
		<comments>http://ugotit.de/2010/07/25/neues-theme/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:35:04 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=178</guid>
		<description><![CDATA[Meine Stammgäste kennen meinen Hang, neue Themes für mein Blog zu erstellen. Alle paar Tage / Wochen / Monate packt es mich: Ich öffne Photoshop, bastel ein Layout und dann pack ich das ganze online. Meistens entwickle ich auch direkt an der laufenden Version meiner Seite und bin dann nach ein paar Stunden (diesmal waren [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ugotit.de/wp-content/uploads/2010/07/ugotX.jpg" alt="ugotX.jpg" border="0" width="590" height="401" /></p>
<p>Meine Stammgäste kennen meinen Hang, neue Themes für mein Blog zu erstellen. Alle paar Tage / Wochen / Monate packt es mich: Ich öffne Photoshop, bastel ein Layout und dann pack ich das ganze online. Meistens entwickle ich auch direkt an der laufenden Version meiner Seite und bin dann nach ein paar Stunden (diesmal waren es 4) fast fertig.</p>
<p>Die fehlenden Elemente, Darstellungsfehler in vielen Browsern und so weiter interessieren mich gerade nicht sonderlich und ich verspreche mal besser nicht, dass ich jetzt aktiver bloggen werden. </p>
<p>Ich hoffe Euch gefällt die momentane Version des Blogs. Bitte habt Rücksicht bei Darstellungsfehlern.</p>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2010/07/25/neues-theme/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ein jQuery Plug-in erstellen</title>
		<link>http://ugotit.de/2009/12/29/ein-jquery-plugin-erstellen/</link>
		<comments>http://ugotit.de/2009/12/29/ein-jquery-plugin-erstellen/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 10:32:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=34</guid>
		<description><![CDATA[Dieser Beitrag stammt aus meinem alten Blog. Da ich sehr viel positives Feedback auf diesen bekommen habe stelle ich ihn hier wieder zur Verfügung. Wenn man, wie ich, viel mit jQuery arbeitet gibt es immer wieder Funktionen die man häufiger braucht und daher natürlich auch gerne wieder verwenden würde. An einem sehr einfachen Beispiel möchte [...]]]></description>
			<content:encoded><![CDATA[<p class="infobox">
Dieser Beitrag stammt aus meinem alten Blog. Da ich sehr viel positives Feedback auf diesen bekommen habe stelle ich ihn hier wieder zur Verfügung.
</p>
<p><a href="http://www.jquery.com" title="jQuery: The Write Less, Do More, JavaScript Library"><img src="http://ugotit.de/wp-content/uploads/2009/12/jquery-logo.gif" alt="jQuery - write less do more" title="jQuery - write less do more" width="168" height="146" class="right" /></a>Wenn man, wie ich, viel mit jQuery arbeitet gibt es immer wieder Funktionen die man häufiger braucht und daher natürlich auch gerne wieder verwenden würde. An einem sehr einfachen Beispiel möchte ich Euch daher mal zeigen, wie man ein eigenes jQuery Plug-In schreibt.</p>
<p>Der Ansatz ist hier ein sehr einfacher: Wir hätten gerne unter unseren Bildern einen Text zum Bild der über jQuery eingebunden werden soll. Unser erster Ansatz hier ist folgender:</p>
<ol>
<li>Um das Bild einen <code>div</code>-Container setzen mit <code>.wrap()</code></li>
<li>dann unter das Bild einen Absatz (<code>&lt;p&gt;</code>) in dem der Inhalt des <code>alt</code>-Attributs steht</li>
</ol>
<p><span id="more-34"></span><br />
Umsetzen könnte man das u.a. so:</p>
<ol id="beispiel1" class="code">
<li><code>var alt = $('img.addCaption').attr("alt");</code></li>
<li class="odd"><code>$('img.addCaption').wrap('&lt;div class="image"&gt;&lt;/div&lt;').after('&gt;p&lt;');</code></li>
<li><code>$('.image p').text(alt);</code></li>
</ol>
<p>Wir gehen bei diesem sehr einfachen Beispiel davon aus das wir nur ein Bild mit der Klasse <code>.addCaption</code> im HTML-Dokument haben und speichern zunächst dessen <code>alt</code>-Attribut in einer Variable <code>var</code> ab. In der zweiten Zeile des Codes umschliessen wir das Bild (<code>.wrap()</code>) mit einem div-Container mit der Klasse <code>.image</code> und fügen dann noch hinter dem Bild einen leeren Absatz ein (<code>.after()</code>).<br />
In der dritten und letzten Zeile bekommt dann der Absatz innerhalb von <code>div.image</code> den in <code>alt</code> gespeicherten Text eingesetzt (<code>.text()</code>).</p>
<p>Dieser Code hat einige Nachteile: Er klappt nur bei einem Bild da er bei mehreren Bildern mit der Klasse <code>.addCaption</code> immer den Text des letzten <code>alt</code>-Attributs einfügen würde und wenn ich schon so eine Funktion einfüge muss diese auch alternative Texte anbieten können.</p>
<p>Viel von den fehlenden Bedingungen könnte ich auch ohne Plug-In machen aber darum geht es hier ja nicht.</p>
<p>Bevor wir unsere Funktion nun in ein Plug-In stecken und ein wenig erweitern schauen wir uns den Rahmen an:</p>
<ol class="code">
<li><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent1 odd"><code>return this.each(function(){});</code></li>
<li><code>};</code></li>
</ol>
<p>In der ersten Zeile definieren wir unsere Funktion und geben ihr den Namen <code>.addCaption()</code>. Das Gerüst erklärt sich fast von selbst. Für Euch ist erstmal nur interessant das ihr mit <code>$.fn.funktionsname =function(){}</code> eine Funktion definiert die Ihr später wie die bekannten jQuery-Funktionen verwenden könnt. Auf <code>options</code> innerhalb der Funktion gehe ich weiter unten ein.</p>
<p>Sehr wichtig ist dann noch die zweite Zeile. Wir möchten ja, das unsere Funktion für beliebig viele Bilder verwendet werden kann und daher müssen wir, in unserem Fall für jedes einzelne Bild, ein eigenes Ergebnis liefern.</p>
<p>Dabei bedeutet <code>return</code> erstmal das die Funktion etwas zurückgibt (für die Programmierer unter Euch nix neues). Interessanter ist da der folgende Code (also das, das wir zurückgeben): <code>this.each(function(){})</code> bezieht sich erstmal auf die ausgewählten Elemente. Genauer gesagt: <code>this</code> bezeichnet quasi alle ausgewählten Elemente die von unserer Funktion bearbeitet werden. Mit <code>.each()</code> geben wir an jedes einzelne Element bearbeiten zu wollen. hr könnt Euch das so vorstellen als ob der Browser im Hintergrund jedes einzelne Element nimmt und dann die Schritte mit diesem durchgeht die wir innerhalb von <code>function(){}</code> durchgehen.</p>
<p>Bevor es jetzt richtig losgeht noch eine Absicherung: Eigentlich sollte man <code>$</code> nicht verwenden wenn man ein Plug-In schreibt da es hier durchaus Probleme mit anderen Bibliotheken geben kann. Ich persönlich habe mich aber an <code>$</code> gewöhnt und möchte das auch in meinem Plug-In verwenden. Wenn es Euch ähnlich geht hilft Euch folgender Code der nur zum Ziel hat das sich <code>$</code> auf jQuery bezieht. Wenn Ihr Euch die zwei Zeilen sparen wollt setzt an die Stelle von <code>$</code> einfach <code>jQuery</code>:</p>
<ol class="code">
<li class="new"><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2"><code>return this.each(function() {});</code></li>
<li class="indent1 odd"><code>};</code></li>
<li class="new"><code>})(jQuery);</code></li>
</ol>
<p>Nun wollen wir die Funktionalität aus unserem Code <a title="erstes Codebeispiel" href="#beispiel1">weiter oben</a> erstmal in unser Plug-In einbauen. Schon jetzt ist unser Plug-In etwas besser da wir mit dem Plug-In gleich schon mehrere Bilder bearbeiten können.</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2"><code>return this.each(function() {</code></li>
<li class="indent3 odd new"><code>var obj = $(this);</code></li>
<li class="indent3 new"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3 odd new"><code>obj.wrap('&lt;div class="image"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2"><code>});</code></li>
<li class="indent1 odd"><code>};</code></li>
<li><code>})(jQuery);</code></li>
</ol>
<p>Neu ist erstmal die Zeile 4 in der wir einer Variable <code>obj</code> <code>$(this)</code> zuweisen. Das heisst nicht mehr als das wir mit <code>obj</code> nun das momentane Element auswählen können. Also statt <code>$(this).funktion()</code> klappt innerhalb der Schleife auch <code>obj.funktion()</code>. Demnach schreiben wir nun auch <code>var capText = obj.attr('alt');</code> um den Wert des <code>alt</code>-Attributs zu speichern.</p>
<p>Der Rest ist analog zu unserem Beispiel. Herzlichen Glückwunsch unser Plug-In ist fertig &#8230; fast&#8230;</p>
<p>Wir haben bei Plug-Ins noch die Möglichkeit Optionen einzubauen um das Plug-In etwas anpassbarer zu machen. Schliesslich sollten Nutzer unserer Plug-Ins nicht selber am Plug-In schrauben müssen sondern möglichst einfach anpassen können. Bei diesem Beispiel werden wir zwei Dinge dynamischer machen: Die Klasse des umschliessenden <code>div</code>-Containers und den Text der unter einem Bild angezeigt wird, wenn kein <code>alt</code>-Attribut definiert wurde.</p>
<p>Innerhalb de Plug-Ins definieren wir nun erstmal Standardwerte für beide Optionen. Dafür nehmen wir die Variable <code>defaults</code>.</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2 new"><code>var defaults = {</code></li>
<li class="indent3 odd new"><code>wrapClass: 'image',</code></li>
<li class="indent3 new"><code>altText: 'entweder ein leeres oder kein alt-Attribut verwendet'</code></li>
<li class="indent2 odd new"><code>};</code></li>
<li class="indent2"><code>return this.each(function() {</code></li>
<li class="indent3 odd"><code>var obj = $(this);</code></li>
<li class="indent3"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3 odd"><code>obj.wrap('&lt;div class="image"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2"><code>});</code></li>
<li class="indent1 odd"><code>};</code></li>
<li><code>})(jQuery);</code></li>
</ol>
<p>Diese neuen Zeilen bringen noch nichts und erzeugen eigentlich nur ein Objekt <code>defaults</code> dessen Werte man nun verwenden könnte. So liefert <code>defaults.wrapClass</code> den String &#8216;image&#8217;. Wir benötigen diese Standardwerte für den Fall das der Nutzer selber keine Optionen angegeben hat (<code>options</code>) und müssen nun im nächsten Schritt den Wert von <code>options</code> durch die Werte von <code>defaults</code> ergänzen. jQuery bietet hierfür die Funktion <code>.extend()</code> mit der wir ein Objekt vervollständigen können. Wenn also ein Wert innerhalb von <code>options</code> nicht gesetzt wird nehmen wir hier den Wert aus <code>defaults</code>.</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2"><code>var defaults = {</code></li>
<li class="indent3 odd"><code>wrapClass: 'image',</code></li>
<li class="indent3"><code>altText: 'entweder ein leeres oder kein alt-Attribut verwendet'</code></li>
<li class="indent2 odd"><code>};</code></li>
<li class="indent2 new"><code>var options = $.extend(defaults, options);</code></li>
<li class="indent2 odd"><code>return this.each(function() {</code></li>
<li class="indent3"><code>var obj = $(this);</code></li>
<li class="indent3 odd"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3"><code>obj.wrap('&lt;div class="image"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2 odd"><code>});</code></li>
<li class="indent1"><code>};</code></li>
<li class="odd"><code>})(jQuery);</code></li>
</ol>
<p>Da wir nun einige Variablen haben (Klasse des <code>div</code>-Containers und der Text für ein leeres <code>alt</code>-Attribut) müssen diese noch in unserem Plug-In eingebaut werden:</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2 odd"><code>var defaults = {</code></li>
<li class="indent3"><code>wrapClass: 'image',</code></li>
<li class="indent3 odd"><code>altText: 'entweder ein leeres oder kein alt-Attribut verwendet'</code></li>
<li class="indent2"><code>};</code></li>
<li class="indent2 odd"><code>var options = $.extend(defaults, options);</code></li>
<li class="indent2"><code>return this.each(function() {</code></li>
<li class="indent3 odd"><code>var obj = $(this);</code></li>
<li class="indent3"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3 odd new"><code>if(capText == '') capText = options.altText;</code></li>
<li class="indent3 new"><code>obj.wrap('&lt;div class="'+options.wrapClass+'"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2 odd"><code>});</code></li>
<li class="tab"><code>};</code></li>
<li class="odd"><code>})(jQuery);</code></li>
</ol>
<p>In Zeile 11 wird die Länge des <code>alt</code>-Attributs abgefragt. Wenn dies leer ist wird als Bildunterschrift der Wert von <code>options.altText</code> (aus <code>options</code> oder <code>defaults</code>, je nachdem was der User möchte). Die Klasse des <code>div</code>-Containers setzen wir in Zeile 12 dynamisch ein.</p>
<p>So fertig ist ein kleines Plug-In. Der Aufruf funktioniert dann entweder über:</p>
<ol class="code">
<li><code>$("img").addCaption();</code></li>
</ol>
<p>dann werden die Standardwerte genommen, oder über</p>
<ol class="code">
<li><code>$("img").addCaption({</code></li>
<li class="indent1 odd"><code>wrapClass='klassenname',</code></li>
<li class="indent1"><code>altText='Ein anderer Text'</code></li>
<li><code>});</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2009/12/29/ein-jquery-plugin-erstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)

Served from: ugotit.de @ 2012-05-18 02:09:10 -->
