<?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>/home/antu &#187; Webgestaltung</title>
	<atom:link href="http://www.antusblog.de/category/webgestaltung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.antusblog.de</link>
	<description>Linux, Programmierung und andere Dinge die mich interessieren</description>
	<lastBuildDate>Mon, 26 Oct 2009 06:00:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>CSS: DIV-Element mit 100% Höhe</title>
		<link>http://www.antusblog.de/2009/10/22/css-div-element-mit-100-hohe/</link>
		<comments>http://www.antusblog.de/2009/10/22/css-div-element-mit-100-hohe/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 06:00:32 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[100% Höhe]]></category>
		<category><![CDATA[DIV]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Webgestaltung]]></category>

		<guid isPermaLink="false">http://www.antusblog.de/?p=2229</guid>
		<description><![CDATA[Manchmal ist es gewollt, dass ein HTML-Element (meistens ein DIV) 100% der Höhe des Browser-Fensters einnehmen soll. Mit einem einfachen height:100%; ist es aber nicht getan. Wie man ein DIV-Element erstellt, dass 100% der Höhe des Browser-Fensters hat aber bei längerem Inhalt mitwächst, und was dabei zu beachten ist, erkläre ich in diesem Artikel. Der [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antusblog.de/?p=2229"><img class="alignright size-full wp-image-2230" title="100% Hoehe" src="http://www.antusblog.de/wp-content/uploads/2009/10/100.Prozent.Hoehe.png" alt="100% Hoehe" width="150" height="150" /></a>Manchmal ist es gewollt, dass ein HTML-Element (meistens ein DIV) 100% der Höhe des Browser-Fensters einnehmen soll. Mit einem einfachen <code>height:100%;</code> ist es aber nicht getan. Wie man ein DIV-Element erstellt, dass 100% der Höhe des Browser-Fensters hat aber bei längerem Inhalt mitwächst, und was dabei zu beachten ist, erkläre ich in diesem Artikel.</p>
<p><span id="more-2229"></span></p>
<h2>Der Aufbau: HTML</h2>
<p>Der HTML-Quelltext hierzu ist einfach, es wird ein DIV-Element erstellt, welches alle weiteren Inhalte umfasst. Dieses bekommt eine Klasse, oder besser eine ID zugewiesen, damit es leichter per CSS gestaltet werden kann.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;wrapper&quot;</span>&gt;</span>
            [...]
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span></pre></div></div>

<h2>HTML und BODY</h2>
<p>Damit, dem DIV nun einfach eine Höhe von 100% zuzuweisen, ist es noch nicht getan. Die 100% beziehen sich ja auf die Größe des Eltern-Elements, dem <code>BODY</code>, dieser braucht also auch eine Höhe von 100%. Das <code>HTML</code>-Element bekommt ebenfalls eine Höhe von 100%, schließlich ist es ja das Eltern-Element von <code>BODY</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">html<span style="color: #00AA00;">,</span> body <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Viele Browser geben dem <code>HTML</code> oder dem <code>BODY</code>-Element standardmäßig noch einen kleinen Innenabstand, so dass die Inhalte nicht direkt am Rand kleben. In diesem Fall ist das aber unerwünscht, denn einerseits soll das DIV-Element ja die ganze Höhe ausfüllen (ohne andersfarbige Ränder), und andererseits gäbe es sonst Scrollbalken (100% + 5px Innenabstand oben = mehr als 100% -> Scrollbalken).</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">html<span style="color: #00AA00;">,</span> body <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<h2>DIV-Element auf 100% der Höhe von BODY</h2>
<p>Jetzt wo das BODY- und das HTML-Element auf 100% Höhe sind, muss nur noch das DIV-Element auf 100% Höhe gebracht werden:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#wrapper</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #808080; font-style: italic;">/* Für moderne Browser */</span>
    <span style="color: #000000; font-weight: bold;">min-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/* Für den Internet Explorer 6 */</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span> !important<span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Das Element soll eine Mindesthöhe von 100% haben, bei längeren Inhalten soll es sich von selbst vergrößern. Eine Mindesthöhe kann mit der CSS-Eigenschaft <code>min-height</code> angegeben werden, würde man hier <code>height</code> verwenden, würden moderne Browser nicht zulassen, dass das DIV-Element mit längeren Inhalten mitwächst, es wäre immer genau 100% hoch. Der Internet Explorer 6 hingegen versteht die <code>height</code>-Eigenschaft als Mindesthöhe, <code>min-height</code> kennt der IE 6 nicht.
<p>Hier kann man sich die Tatsache zu Nutze machen, das der IE 6 <a href="http://www.kk-works.de/2005/10/12/ie-vorurteile/">!important</a> etwas anders interpretiert als andere Browser. Zuerst legt man fest, dass die Höhe des Elements sich dem Inhalt anpassen soll (<code>auto</code>), und das diese Angabe alle anderen Angaben zur Höhe überschreibt (<code>!important</code>). Dann wird dem Element eine Höhe von 100% zugewiesen, was der IE 6 als Mindesthöhe interpretiert. Da der IE 6 das <code>!important</code> in diesem Fall ignoriert, verwendet er die zweite Angabe, und stellt eine Mindesthöhe von 100% ein. Alle anderen Browser beachten das <code>!important</code>, und ignorieren die zweite <code>height</code>-Angabe.</p>
<p>In Aktion sieht das dann so aus: <a href="/demos/12-seite-mit-100-prozent-hoehe/Beispiel.html">Beispiel</a></p>
<h2>Eine Fußzeile?</h2>
<p>Wie erstellt man jetzt eine Fußzeile? Dazu wird ein DIV-Element mit der ID <em>footer</em> erstellt, dieses wird mit CSS wie folgt gestaltet:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#footer</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">2em</span>
 <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Mittels <code>position:absolute;</code> wird festgelegt, dass das Element relativ zum nächsthöheren positionierten Element ausgerichtet wird. Mit <code>bottom:0;</code> bestimmt man, dass das Fußzeilen-Element ganz am unteren Rand vom <code>wrapper</code>-Element positioniert wird.</p>
<p>Nun muss dem <code>wrapper</code>-Element allerdings noch eine relative Positionierung zugewiesen werden, damit das Fußzeilen-Element sich darauf beziehen kann.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#wrapper</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #808080; font-style: italic;">/* Für moderne Browser */</span>
    <span style="color: #000000; font-weight: bold;">min-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/* Für den Internet Explorer */</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span> !important<span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">relative</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Der Inhalt selbst bekommt auch ein eigenes DIV-Element, welches einen Innenabstand so hoch wie die Fußzeile bekommt, so dass die Inhalte nicht unter der Fußzeile angezeigt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;wrapper&quot;</span>&gt;</span>
            <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;content&quot;</span>&gt;</span>
                [Inhalte]
            <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
            <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;footer&quot;</span>&gt;</span>
                [Inhalte der Fußzeile]
            <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span></pre></div></div>

<p>Das CSS für das <code>content</code>-DIV sieht so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#content</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">padding-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">2em</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Fertig sieht das dann so aus: <a href="/demos/12-seite-mit-100-prozent-hoehe/Beispiel2.html">Beispiel</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/10/22/css-div-element-mit-100-hohe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fortschrittsbalken mit CSS/JavaScript</title>
		<link>http://www.antusblog.de/2009/07/27/fortschrittsbalken-mit-cssjavascript/</link>
		<comments>http://www.antusblog.de/2009/07/27/fortschrittsbalken-mit-cssjavascript/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 20:48:28 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Java Script]]></category>
		<category><![CDATA[dwProgressBar]]></category>
		<category><![CDATA[Fortschrittsanzeige]]></category>
		<category><![CDATA[Fortschrittsbalken]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[jsProgressBarHandler]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://www.antusblog.de/?p=1798</guid>
		<description><![CDATA[Fortschrittsbalken werden vor allem bei Webanwendungen gebraucht, die mit dem Benutzer interagieren, beispielsweise beim Hochladen von Dateien oder um den Fortschritt in einem Formular anzuzeigen. Aber auch bei anderen Webanwendungen können Fortschrittsbalken sinnvoll sein, beispielsweise um den aktuellen Stand eines noch nicht fertiggestellten Projektes anzuzeigen oder den noch verfügbaren Speicherplatz, o.Ä. In dieser Anleitung erkläre [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antusblog.de/wp-content/uploads/2009/07/jQueryUI-FSB.png"><img class="aligncenter size-full wp-image-1799" title="Fortschrittsbalken" src="http://www.antusblog.de/wp-content/uploads/2009/07/jQueryUI-FSB.png" alt="Fortschrittsbalken" width="500" height="150" /></a>Fortschrittsbalken werden vor allem bei Webanwendungen gebraucht, die mit dem Benutzer interagieren, beispielsweise beim Hochladen von Dateien oder um den Fortschritt in einem Formular anzuzeigen. Aber auch bei anderen Webanwendungen können Fortschrittsbalken sinnvoll sein, beispielsweise um den aktuellen Stand eines noch nicht fertiggestellten Projektes anzuzeigen oder den noch verfügbaren Speicherplatz, o.Ä.</p>
<p>In dieser Anleitung erkläre ich wie man einfache Fortschrittsbalken mit CSS erstellen kann, und stelle 4 JavaScript-Skripte vor mit denen sich &#8220;bewegliche&#8221; Fortschrittsbalken erstellen lassen.</p>
<p><span id="more-1798"></span></p>
<h2>Einfache Fortschrittsbalken</h2>
<p>Fortschrittsbalken mittels CSS zu erstellen ist nicht weiter schwer, man braucht im Grunde nur zwei Elemente, die übereinander gelegt werden.</p>
<h3>Ohne Bilder</h3>
<p><a href="http://www.antusblog.de/wp-content/uploads/2009/07/Einfacher.Fortschrittsbalken.ohne.Bilder.png"><img class="aligncenter size-full wp-image-1802" title="Einfacher Fortschrittsbalken ohne Bilder" src="http://www.antusblog.de/wp-content/uploads/2009/07/Einfacher.Fortschrittsbalken.ohne.Bilder.png" alt="Einfacher Fortschrittsbalken ohne Bilder" width="300" height="100" /></a>Man erstellt ein Element, gibt ihm eine Hintergrundfarbe und weist ihm eine Breite/Höhe zu. In diesem Element erstellt man nun ein zweites Element, dem man ebenfalls eine Hintergrundfarbe (möglichst eine andere, als die vom ersten Element) und die gleiche Höhe wie dem ersten Element zu. Die Breite des zweiten Elements gibt dann an, welchen Wert der Fortschrittsbalken anzeigen soll.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">style</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span>&gt;</span>
  div.fsb {
    border:1px solid #000;
    background-color:white;
    width:200px;
    height:28px;
    padding:1px;
  }
&nbsp;
  div.fortschritt {
    background-color:#000;
    height:28px;
    width:50%; /* Fortschritt */
  }
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">style</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- [...] --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fsb&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fortschritt&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>In Aktion sieht das dann so aus: <a href="/demos/8-fortschrittsbalken/cssbalken/ohnebilder.html">Demo</a>.</p>
<h3>Mit Bildern</h3>
<p><a href="http://www.antusblog.de/wp-content/uploads/2009/07/Einfacher.Fortschrittsbalken.mit.Bildern.png"><img src="http://www.antusblog.de/wp-content/uploads/2009/07/Einfacher.Fortschrittsbalken.mit.Bildern.png" alt="Einfacher Fortschrittsbalken mit Bildern" title="Einfacher Fortschrittsbalken mit Bildern" width="350" height="125" class="aligncenter size-full wp-image-1805" /></a>Möchte man den Fortschrittsbalken etwas schöner gestalten, kann man natürlich auch Bilder verwenden, die Methode funktioniert eigentlich genau so. Der einzige Unterschied ist, das anstatt von Hintergrundfarben Bilder verwendet werden.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">div<span style="color: #6666ff;">.fsb</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'normal.png'</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #000000; font-weight: bold;">left</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div<span style="color: #6666ff;">.fortschritt</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'farbig.png'</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #000000; font-weight: bold;">left</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">50%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>In Aktion sieht das dann so aus: <a href="/demos/8-fortschrittsbalken/cssbalken/mitbildern.html">Demo</a>.</p>
<h2>JavaScript-Fortschrittsbalken</h2>
<p>Mit JavaScript kann man den Fortschrittsbalken auch Leben einhauchen, bzw. den angezeigten Wert verändern. Ein einfaches JS-Skript, welches die Breite des inneren Elements ändert ist schnell geschrieben. Im folgenden stelle ich allerdings 4 Skripte/Klassen vor, die noch etwas mehr können als nur das. Das erste Skript basiert auf jQuery/jQuery UI, das zweite benötigt nur jQuery, das dritte ist für Prototype und das vierte verwendet mootools.</p>
<p>Ich habe für jedes Skript eine Demo erstellt: <a href="/demos/8-fortschrittsbalken/jsbalken/fortschrittsbalken.html">Fortschrittsbalken-Demo</a></p>
<h3>jQueryUI &#8211; ProgressBar</h3>
<p><a href="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.jQueryUI.png"><img src="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.jQueryUI.png" alt="Fortschrittsbalken mit jQuery UI" title="Fortschrittsbalken mit jQuery UI" width="500" height="100" class="aligncenter size-full wp-image-1811" /></a>Die JS-Bibliothek <a href="http://jqueryui.com/">jQuery UI</a> stellt diverse Werkzeuge und Benutzeroberflächen-Elemente bereit. Unter anderem bietet sie auch eine Klasse zur Erstellung von Fortschrittsbalken. Praktischerweise kann man auf der Download-Seite von jQuery UI direkt die Elemente angeben, die man benötigt, so braucht man nicht die ganze Bibliothek runterzuladen/einzubinden (wenn man nur den Fortschrittsbalken braucht), und spart so einiges an Speicherplatz/Datentransfer. Die Bibliothek basiert auf <a href="http://jquery.com/">jQuery</a>, dieses muss also auch eingebunden werden.</p>
<p>Eine Besonderheit von jQuery UI: Das Aussehen der Benutzeroberfläche (und somit des Fortschrittsbalkens) wird durch Themen festgelegt. Auf der Webseite von jQuery UI findet sich (unter Gallery) bereits eine kleine Auswahl von fertigen Themen, natürlich ist es auch möglich eigene Themen zu erstellen. Das Thema wird über eine css-Datei definiert, diese muss ebenfalls in die Seite eingebunden werden.</p>
<h4>Einbinden</h4>
<p>Benötigt werden: jQuery, jQuery UI (Progressbar), und ein jQuery UI Thema.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;jquery-ui/css/ui-lightness/jquery-ui-1.7.2.custom.css&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;jquery-ui/js/jquery-1.3.2.min.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;jquery-ui/js/jquery-ui-1.7.2.custom.min.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p>(Die Pfade müssen eventuell angepasst werden.)</p>
<h4>HTML</h4>
<p>Man erstellt einfach ein div-Element, den Rest erledigt das Skript. Dem Element kann man noch eine ID geben, das macht es leichter es anzusprechen.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fsb&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<h4>Fortschrittsbalken erstellen</h4>
<p>Um den Balken zu erstellen, selektiert man das Ziel-Element mit der <code>$()</code>-Funktion, und ruft die Methode <code>progressbar()</code> auf. Mittels dem Parameter <code>value</code> kann man den Ausgangswert des Fortschrittsbalkens angeben. Außerdem kann man, wenn man möchte, mit dem Parameter <code>change</code> auch gleich eine Funktion festlegen, welche aufgerufen wird, wenn der Wert sich ändert. Beide Parameter sind optional.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fsb'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">progressbar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        value<span style="color: #339933;">:</span><span style="color: #CC0000;">50</span><span style="color: #339933;">,</span>
        change<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
            <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fsb'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">progressbar</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'option'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'%'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h4>Methoden und Ereignisse</h4>
<p>Die Klasse bietet Methoden zum Abfragen und Ändern des angezeigten Werts, sowie ein Ereignis welches ausgelöst wird, wenn der Wert sich ändert.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Wert aendern</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fsb'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">progressbar</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'option'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'value'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Wert abfragen</span>
<span style="color: #003366; font-weight: bold;">var</span> wert <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fsb'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">progressbar</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'option'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Weitere Informationen zu der Klasse und ihren Methoden finden sich in der <a href="http://jqueryui.com/demos/progressbar/">offiziellen Dokumentation</a>.</p>
<h3>jQuery &#8211; ProgressBar</h3>
<p><a href="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.jQueryProgressBar.png"><img src="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.jQueryProgressBar.png" alt="Fortschrittsbalken mit jQuery Progress Bar" title="Fortschrittsbalken mit jQuery Progress Bar" width="500" height="100" class="aligncenter size-full wp-image-1821" /></a>Das Skript <a href="http://t.wits.sg/2008/06/20/jquery-progress-bar-11/">jQuery Progress Bar</a> basiert auf jQuery und bietet einige nützliche Funktionen, die die jQuery UI-Variante nicht hat. Es ist möglich verschiedene Bilder zur Anzeige des Fortschritts zu verwenden, so kann man beispielsweise für die ersten 10-20% einen roten Hintergrund, für die nächsten 10-20% dann einen orangen, dann einen gelben und zum Schluss einen grünen Hintergrund verwenden. Es lässt sich auch festlegen ob neben dem Balken auch der Fortschritt noch einmal als Prozentzahl angezeigt werden soll, und auch eine Anzeige des genauen Wertes (123/465) ist möglich. Außerdem ist die Bewegung des Fortschrittsbalkens animiert, es lässt sich sogar die Geschwindigkeit der Animation festlegen. </p>
<h4>Einbinden</h4>
<p>Benötigt werden jQuery und das Skript selbst.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;jquery-ui/js/jquery-1.3.2.min.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;jquery.progressbar/js/jquery.progressbar.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<h4>HTML</h4>
<p>Auch bei diesem Skript wird nur ein <code>div</code>-Element benötigt, den Rest erstellt das Skript selbst.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fsb&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<h4>Fortschrittsbalken erstellen</h4>
<p>Erstellt wird der Fortschrittsbalken mittels der Funktion <code>progressBar()</code>. Dabei gibt es einige Parameter, mittels derer das Aussehen und Verhalten des Fortschrittsbalkens beeinflusst werden können:</p>
<ul>
<li><code>steps</code> und <code>step_duration</code>: Geben an, wie viele Schritte beim Ändern des Anzeigewertes gegangen werden sollen, und wie lange ein Schritt dauert. (Standard: <code>20</code>/<code>20</code>)</li>
<li><code>max</code>: Der max. Wert, bis zu dem der Fortschrittsbalken geht. (Standard: <code>100</code>)</li>
<li><code>showText</code> und <code>textFormat</code>: Ob neben dem Balken noch der Fortschritt in Textform angezeigt werden soll, und ob dieser als Prozentzahl (<code>'percentage'</code> = 50%) oder als Anteil (<code>'fraction'</code> = 50/100) angezeigt werden soll. (Standard: <code>true</code>, <code>'percentage'</code>)</li>
<li><code>width</code> und <code>height</code>: Breite und Höhe des Fortschrittsbalkens bzw. der verwendeten Bilder.</li>
<li><code>callback</code>: Legt eine Funktion fest, welche aufgerufen wird, wenn sich der Balken bewegt. Die Funktion bekommt ein Argument mitgeliefert, welches das <code>config</code>-Feld, erweitert um die Werte <code>increment</code> (um wie viele Pixel hat sich der Balken bewegt), <code>running_value</code> (aktueller Wert) sowie <code>value</code> (Ziel-Wert).</li>
<li><code>boxImage</code>: Pfad zum Bild welches den Balken umschließt.</li>
<li><code>barImage</code>: Pfad zum inneren Bild des Balkens. Hier kann auch ein Feld übergeben werden, falls verschiedene Bilder verwendet werden sollen (siehe Beispiel).</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fsb'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">progressBar</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
        boxImage<span style="color: #339933;">:</span> <span style="color: #3366CC;">'jquery.progressbar/images/progressbar.gif'</span><span style="color: #339933;">,</span>
        barImage<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #CC0000;">0</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'jquery.progressbar/images/progressbg_red.gif'</span><span style="color: #339933;">,</span>
            <span style="color: #CC0000;">30</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'jquery.progressbar/images/progressbg_orange.gif'</span><span style="color: #339933;">,</span>
            <span style="color: #CC0000;">50</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'jquery.progressbar/images/progressbg_yellow.gif'</span><span style="color: #339933;">,</span>
            <span style="color: #CC0000;">70</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'jquery.progressbar/images/progressbg_green.gif'</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h4>Methoden und Ereignisse</h4>
<p>Die Klasse bietet ein Ereignis (<code>callback</code>) und keine Methode. Will man den angezeigten Wert ändern, ruft man die Klasse einfach wieder wie folgt auf:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Aendere Wert auf 50%.</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fsb'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">progressBar</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Prototype &#8211; jsProgressBarHandler</h3>
<p><a href="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.Prototype.jsProgressBarHandler.png"><img src="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.Prototype.jsProgressBarHandler.png" alt="Fortschrittsbalken mit Prototype jsProgressBarHandler" title="Fortschrittsbalken mit Prototype jsProgressBarHandler" width="500" height="100" class="aligncenter size-full wp-image-1828" /></a>Die <a href="http://www.bram.us/projects/js_bramus/jsprogressbarhandler/">jsProgressBarHandler</a>-Klasse basiert auf <a href="http://www.prototypejs.org/">Prototype</a> und steht unter der <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-Share Alike 2.5</a> Lizenz. Das tolle an dieser Klasse ist: Sie kann auch automatisch Fortschrittsbalken erstellen, alle <code>span</code>-Elemente mit der CSS-Klasse <code>progressBar</code>, die einen Prozentwert enthalten, werden automatisch zu Fortschrittsbalken umgewandelt. Der herkömmliche Weg über JavaScript funktioniert natürlich auch.</p>
<h4>Einbinden der Klasse</h4>
<p>Neben der Klasse selbst, muss auch die JavaScript-Bibliothek Prototype eingebunden werden.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;js/prototype/prototype.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;js/bramus/jsProgressBarHandler.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<h4>HTML</h4>
<p>Die Klasse wandelt alle span-Elemente mit der CSS-Klasse <code>progressBar</code> automatisch in Fortschrittsbalken um.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;progressBar&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fsb&quot;</span>&gt;</span>50%<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span></pre></div></div>

<p>Möchte man den Balken selbst mittels JavaScript erstellen, benötigt man ein <code>div</code>-Element mit einer ID.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fsb&quot;</span>&gt;</span>[Lade Fortschrittsbalken]<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<h4>Fortschrittsbalken erstellen</h4>
<p>Um den Balken selbst mittels JavaScript zu erstellen, muss man nur ein Objekt der Klasse <code>JS_BRAMUS.jsProgressBar</code> erstellen.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> fsb <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> JS_BRAMUS.<span style="color: #660066;">jsProgressBar</span><span style="color: #009900;">&#40;</span>
    <span style="color: #3366CC;">'fsb'</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// ID des div-Elements</span>
    <span style="color: #CC0000;">50</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Ausgangswert (Prozent)</span>
    <span style="color: #009900;">&#123;</span>
        showText <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
        animate <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
        barImage <span style="color: #339933;">:</span> <span style="color: #3366CC;">'jsprogressbarhandler/images/bramus/percentImage_back1.png'</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Der dritte Parameter kann zur Konfiguration verwendet werden, und ist optional. Folgende Optionen gibt es:</p>
<ul>
<li><code>animate</code>: Ob der Fortschrittsbalken animiert sein soll. (Standard: ja)</li>
<li><code>showText</code>: Ob der Wert neben dem Balken angezeigt werden soll (Standard: ja)</li>
<li><code>width</code>: Breite des Balkens. Nicht vergessen: Das Bild muss ebenfalls angepasst werden. (Standard: 120)</li>
<li><code>boxImage</code>: Das Bild um den Balken.</li>
<li><code>barImage</code>: Der Hintergrund des Balkens. Hier kann auch ein Feld mit mehreren Bildern angegeben werden, dann ändert sich der Hintergrund, wenn der Balken weiter fortschreitet.</li>
<li><code>height</code>: Die Höhe des Balkens. (Standard: 12)</li>
<li><code>onTick</code>: Funktion die bei jeder Änderung am Wert des Balkens aufgerufen wird.</li>
</ul>
<p>Die Standardwerte sind am Anfang der <code>jsProgressBarHandler.js</code> definiert. Dort findet sich auch die Variable <code>autoHook</code>, diese kann man auf <code>false</code> setzen, wenn man nicht möchte, das alle <code>span.progressBar</code>-Elemente automatisch umgewandelt werden. Die Pfade zu den Bildern bzw. die Breite/Höhe will/muss man wahrscheinlich eh ändern.</p>
<h4>Methoden und Ereignisse</h4>
<p>Die Klasse hat zwei Funktionen und ein Ereignis, welches bei jeder Änderung am Wert aufgerufen wird (<code>onTick</code>). Mit der Funktion <code>getPercentage()</code> kann der aktuelle Wert abgefragt werden, mit <code>setPercentage()</code> kann der Wert verändert werden. Letztere Funktion akzeptiert zwei Parameter, der erste gibt den neuen Wert an, der zweite gibt an ob der Balken direkt zum neuen Wert gehen soll. Wenn man den Wert ändert, während der Balken sich noch bewegt, macht er normalerweise zuerst seine Bewegung zu Ende, bevor er zum neuen Wert geht, ist der zweite Parameter true, verwirft er alle anderen Bewegungen und bewegt sich direkt zum neuen Wert.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Wert abfragen</span>
<span style="color: #003366; font-weight: bold;">var</span> aktuellerWert <span style="color: #339933;">=</span> fsb.<span style="color: #660066;">getPercentage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Wert aendern</span>
fsb.<span style="color: #660066;">setPercentage</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>mootools &#8211; dwProgressBar</h3>
<p><a href="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.mootools.dwProgressBar.png"><img src="http://www.antusblog.de/wp-content/uploads/2009/07/Fortschrittsbalken.mit.mootools.dwProgressBar.png" alt="Fortschrittsbalken mit mootools - dwProgressBar" title="Fortschrittsbalken mit mootools - dwProgressBar" width="500" height="100" class="aligncenter size-full wp-image-1833" /></a>Die <code><a href="http://davidwalsh.name/dwprogressbar-2-stepping-events-mootools-progress-bar">dwProgressBar</a></code>-Klasse verfolgt einen etwas anderen Ansatz, als die vorigen beiden Klassen. Mit der Klasse können Fortschrittsbalken erstellt, und der angezeigte Wert geändert werden. Um die Animation kümmert sich die Klasse. Ansonsten können (müssen) die Fortschrittsbalken komplett selbst mittels CSS gestaltet werden. </p>
<h4>Einbinden der Klasse</h4>
<p>Die JavaScript-Bibliothek <a href="http://mootools.net/">mootools</a> wird vorausgesetzt. Außerdem muss natürlich die Klasse selbst eingebunden werden.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;mootools-1.2.3-core-yc.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;dwprogressbar.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<h4>HTML und CSS</h4>
<p>Es wird nur ein div-Element benötigt.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fsb&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>Die Gestaltung des Fortschrittsbalkens übernimmt die Klasse nicht, das muss man selber machen. Es gibt drei Elemente, die gestaltet werden können: Der Rahmen, der Balken, und der Text (optional). Beim Erstellen des Fortschrittsbalkens kann angegeben werden, welche ID die Elemente bekommen sollen, über die ID können die Elemente dann mittels CSS gestaltet werden. </p>
<h5>Ohne Bilder</h5>
<p>Die CSS-Selektoren für einen Fortschrittsbalken ohne Bilder (aber mit Text) könnten z.B. so aussehen:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#rahmen</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#8C2229</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span>inline-<span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#balken</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#8C2229</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#text</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">16px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">vertical-align</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">padding-left</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span>inline-<span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<h5>Mit Bildern</h5>
<p>Wenn man den Fortschrittsbalken mit Bildern gestalten möchte, kann man folgende CSS-Selektoren verwenden. Die Höhen- und Breitenangaben müssen natürlich angepasst werden.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#rahmen</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'rahmen.png'</span><span style="color: #00AA00;">&#41;</span> <span style="color: #000000; font-weight: bold;">right</span> <span style="color: #993333;">center</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#balken</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'balken.png'</span><span style="color: #00AA00;">&#41;</span> <span style="color: #000000; font-weight: bold;">left</span> <span style="color: #993333;">center</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<h4>Den Fortschrittsbalken erstellen</h4>
<p>Zum Erstellen des Fortschrittsbalkens wird einfach ein neues <code>dwProgressBar</code>-Objekt erstellt.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> fsb <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> dwProgressBar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// Das Element, in dem der Fortschrittsbalken angezeigt wird</span>
        container<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fortschrittsbalken'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Startwert (Prozent)</span>
        startPercentage<span style="color: #339933;">:</span> <span style="color: #CC0000;">50</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Geschwindigkeit/Dauer der Animation (in Millisekunden)</span>
        speed<span style="color: #339933;">:</span> <span style="color: #CC0000;">1000</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Die ID des Rahmens</span>
        boxID<span style="color: #339933;">:</span> <span style="color: #3366CC;">'rahmen'</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Die ID des Balkens</span>
        percentageID<span style="color: #339933;">:</span> <span style="color: #3366CC;">'balken'</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Wieviel Prozent pro Schritt (dwProgressBar.step() geht</span>
        <span style="color: #006600; font-style: italic;">// immer einen Schritt weiter, in diesem Beispiel also 10%.</span>
        step<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Erlaube Werte jenseits 100%</span>
        allowMore<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Prozentwert als Text anzeigen?</span>
        displayText<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// ID für das Textelement</span>
        displayID<span style="color: #339933;">:</span> <span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Ereignis, welches aufgerufen wird, wenn der Balken 100%</span>
        <span style="color: #006600; font-style: italic;">// erreicht.</span>
        onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Fertig!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">// Ereignis welches nach jeder abgeschlossenen Änderung am</span>
        <span style="color: #006600; font-style: italic;">// Wert aufgerufen wird. (Wenn man von 10% auf 50% geht,</span>
        <span style="color: #006600; font-style: italic;">// wird es einmal aufgerufen, nämlich wenn 50% erreicht sind.)</span>
        onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Wert geändert!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Es müssen nur die Optionen <code>container</code>, <code>boxID</code> und <code>percentageID</code> angegeben werden, der Rest ist optional.</p>
<h4>Funktionen und Ereignisse</h4>
<p>Die Klasse bietet die Funktionen <code>set(neuerwert)</code> und <code>step()</code>, außerdem die Ereignisse <code>onComplete</code> und <code>onChange</code>. Die Ereignisse sind im obigen Beispielquelltext bereits erklärt.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Wert auf 100% setzen</span>
fsb.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Einen Schritt weitergehen (um options.step Prozent)</span>
fsb.<span style="color: #660066;">step</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Zum Schluss noch einmal die Demo-Seite für die JavaScript-Fortschrittsbalken: <a href="/demos/8-fortschrittsbalken/jsbalken/fortschrittsbalken.html">Fortschrittsbalken-Demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/07/27/fortschrittsbalken-mit-cssjavascript/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Absenden, Zurücksetzen und Verlassen von Formularen</title>
		<link>http://www.antusblog.de/2009/06/15/absenden-zurucksetzen-und-verlassen-von-formularen/</link>
		<comments>http://www.antusblog.de/2009/06/15/absenden-zurucksetzen-und-verlassen-von-formularen/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 20:48:58 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Java Script]]></category>
		<category><![CDATA[Absenden]]></category>
		<category><![CDATA[Formular]]></category>
		<category><![CDATA[Schließen]]></category>
		<category><![CDATA[Verlassen]]></category>
		<category><![CDATA[Zurücksetzen]]></category>

		<guid isPermaLink="false">http://www.antusblog.de/?p=1510</guid>
		<description><![CDATA[Manchmal verklickt man sich, oder man überliest in Eile einen Hinweis. Da kann es schon mal passieren, das man ausversehen auf die Zurücksetzen-Schaltfläche anstatt auf die direkt daneben liegende Absenden-Schaltfläche klickt. Oder man schließt versehentlich das falsche Fenster, und alle im Formular eingegebenen Daten müssen noch einmal eingegeben werden. Gerade bei längeren Forenbeiträgen, oder Blog-Artikeln [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antusblog.de/wp-content/uploads/2009/06/Formular.schliessen.png"><img src="http://www.antusblog.de/wp-content/uploads/2009/06/Formular.schliessen.png" alt="Abfrage vor dem Schließen eines Formulars/einer Seite" title="Abfrage vor dem Schließen eines Formulars/einer Seite" width="380" height="150" class="aligncenter size-full wp-image-1549" /></a>Manchmal verklickt man sich, oder man überliest in Eile einen Hinweis. Da kann es schon mal passieren, das man ausversehen auf die Zurücksetzen-Schaltfläche anstatt auf die direkt daneben liegende Absenden-Schaltfläche klickt. Oder man schließt versehentlich das falsche Fenster, und alle im Formular eingegebenen Daten müssen noch einmal eingegeben werden. Gerade bei längeren Forenbeiträgen, oder Blog-Artikeln ist das sehr ärgerlich. </p>
<p>Ein paar einfache Java Script-Funktionen schaffen da Abhilfe. Vor dem Absenden oder Zurücksetzen eines Formulars kann der Benutzer noch einmal gefragt werden ob er das wirklich tun will. Auch vor dem Verlassen/Schließen der Seite lässt sich eine solche Abfrage erstellen. Außerdem erkläre ich, wie man eine Schaltfläche erst nach einer bestimmten Zeit aktivieren kann.</p>
<p><span id="more-1510"></span></p>
<h2>Zurücksetzen der Formularfelder</h2>
<p>Um dem Benutzer die Möglichkeit zu geben, die Formularfelder wieder auf den Anfangswert zurückzusetzen bzw. sie wieder zu leeren genügt ein <code>input</code>-Element vom Typ <code>reset</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;reset&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Zur&amp;uuml;cksetzen&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Mit Java Script ist es allerdings auch möglich, beim Zurücksetzen des Formulars noch weitere Aktionen auszuführen oder das Zurücksetzen besser zu steuern. So ist es beispielsweise möglich nur bestimmte Felder zurückzusetzen oder den Benutzer zu fragen ob er die Daten wirklich zurücksetzen möchte. Dazu trägt man im <code>onreset</code>-Ereignis des <code>form</code>-Elementes die Funktion ein, die beim Zurücksetzen des Formulars ausgeführt werden soll.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;...&quot;</span> <span style="color: #000066;">onreset</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;return wirklichZuruecksetzen();&quot;</span>&gt;</span></pre></div></div>

<p>Es ist auch möglich die Funktion einen Wert zurückgeben zu lassen, mit dem man steuern kann ob das Formular auch wirklich zurückgesetzt wird. Gibt die aufgerufene Funktion <code>false</code> zurück wird das Formular nicht zurückgesetzt, bei <code>true</code> wird es zurückgesetzt.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> wirklichZuruecksetzen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066;">confirm</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Alle Eingaben loeschen?'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">// Anstatt dessen koennte man hier auch nur bestimmte Felder zuruecksetzen und</span>
	<span style="color: #006600; font-style: italic;">// false zurueckgeben.</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>Abfrage vor dem Absenden</h2>
<p>Um eine Abfrage vor dem Absenden zu erstellen, trägt man einfach eine Funktion beim <code>onsubmit</code>-Ereignis des <code>form</code>-Elements ein, auch hier entscheidet wieder der Rückgabewert darüber ob das Formular abgesendet wird.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;...&quot;</span> <span style="color: #000066;">onsubmit</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;return confirm('Daten abschicken?');&quot;</span>&gt;</span></pre></div></div>

<p>Der Vorteil dieser Methode ist, das sie schnell und einfach programmiert ist, der Nachteil das sie nur funktioniert, wenn der Benutzer Java Script aktiviert hat bzw. sein Browser Java Script unterstützt. Bei wichtigen Formularen (beispielsweise einer Bestellung) ist es empfehlenswert, die Daten erst an eine Zwischenseite zu senden, welche noch einmal alle Eingaben auflistet und auf der noch einmal das Absenden bestätigt werden muss. </p>
<p>Im <code>onsubmit</code>-Ereignis lässt sich übrigens nicht nur eine Abfrage einbauen. Man könnte beispielsweise auch überprüfen ob alle Felder (richtig) ausgefüllt sind, und den Benutzer auf eventuelle Fehler hinweisen/auffordern diese zu korrigieren.</p>
<h2>Verlassen/Schließen des Formulars: Abfrage bzw. Funktion ausführen</h2>
<p>Man kann den Benutzer vor dem Verlassen der aktuellen Seite zu fragen ob er die Seite wirklich verlassen möchte. Dazu kann das <a href="https://developer.mozilla.org/en/DOM/window.onbeforeunload"><code>onbeforeunload</code></a>-Ereignis verwendet werden, welches heutzutage von den meisten Browsern unterstützt wird, obwohl es nicht zum Standard gehört.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/* Fragt den Benutzer, ob er die Seite wirklich verlassen moechte.
 */</span>
window.<span style="color: #660066;">onbeforeunload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// Hier koennte man noch abfragen ob bereits Eingaben getaetigt wurden,</span>
	<span style="color: #006600; font-style: italic;">// wenn nicht, braucht man in den meisten Faellen wohl auch keine Nachricht</span>
	<span style="color: #006600; font-style: italic;">// anzeigen.</span>
	<span style="color: #003366; font-weight: bold;">var</span> nachricht <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Sie haben das Formular noch nicht abgesendet, möchten Sie das Fenster trotzdem schließen?'</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> e <span style="color: #339933;">=</span> e <span style="color: #339933;">||</span> window.<span style="color: #660066;">event</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		e.<span style="color: #660066;">returnValue</span> <span style="color: #339933;">=</span> nachricht<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">return</span> nachricht<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// Keine Meldung ausgeben, wenn der Benutzer die Seite ueber die</span>
	<span style="color: #006600; font-style: italic;">// Absenden-Schaltflaeche verlaesst.</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> document.<span style="color: #660066;">forms</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		document.<span style="color: #660066;">forms</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">onsubmit</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> window.<span style="color: #660066;">onbeforeunload</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Die dem <code>onbeforeunload</code>-Ereignis zugewiesene Funktion sorgt dafür das der Benutzer beim Schließen des Fensters bzw. beim Verlassen der Seite gefragt wird ob er die Seite wirklich schließen möchte. Damit das geschieht, muss die Nachricht, die angezeigt werden soll in das <code>returnValue</code>-Element von dem Ereignis geschrieben, und als Rückgabewert zurückgegeben werden. Bleibt <code>returnValue</code> leer bzw. wird nichts zurückgegeben, erscheint auch keine Nachricht.</p>
<h2>Absenden-Schaltfläche erst nach Ablauf einer bestimmten Zeit freigeben</h2>
<p><a href="http://www.antusblog.de/wp-content/uploads/2009/06/Abschicken.erst.nach.einer.bestimmten.Zeit.png"><img src="http://www.antusblog.de/wp-content/uploads/2009/06/Abschicken.erst.nach.einer.bestimmten.Zeit.png" alt="Die Abschicken-Schaltfläche ist ausgegraut und zeigt an, dass das Formular erst in 17 Sekunden abgeschickt werden kann." title="Die Abschicken-Schaltfläche ist ausgegraut und zeigt an, dass das Formular erst in 17 Sekunden abgeschickt werden kann." width="140" height="80" class="alignright size-full wp-image-1541" /></a>Es ist möglich die Absenden-Schaltfläche erst nach Ablauf einer bestimmten Zeit zu aktivieren, so dass der Benutzer sie vorher nicht anklicken kann. Das ist beispielsweise in einem Forum sinnvoll, wo der Benutzer nur alle 60 Sekunden einen Beitrag schreiben kann. Der Browser des Benutzers stellt die Schaltfläche ausgegraut da, und zeigt auf der Schaltfläche an wie lange es noch dauert bis das Formular abgesendet werden kann. Die Zeit muss selbstverständlich auch serverseitig überprüft werden, diese Funktion ist nur dazu gedacht, es dem Benutzer einfacher zu machen, zu erkennen wann er auf die Absenden-Schaltfläche klicken kann. Durch das Deaktivieren von Java Script kann die Funktion &#8220;umgangen&#8221; werden, sie stellt also keinen Sicherheitsmechanismus dar!</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/* Sorgt dafuer, das eine Schaltflaeche erst nach Ablauf einer bestimmten Zeit
 * klickbar wird, kann aber leicht &quot;umgangen&quot; werden.
 */</span>
<span style="color: #003366; font-weight: bold;">function</span> AbsendenENA<span style="color: #009900;">&#40;</span>sf<span style="color: #339933;">,</span> zeit<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> intervall <span style="color: #339933;">=</span> window.<span style="color: #660066;">setInterval</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> self.<span style="color: #660066;">aktualisieren</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	sf.<span style="color: #660066;">disabled</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> sftext <span style="color: #339933;">=</span> sf.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">aktualisieren</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>zeit <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			sf.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> sftext <span style="color: #339933;">+</span> <span style="color: #3366CC;">'('</span> <span style="color: #339933;">+</span> zeit <span style="color: #339933;">+</span> <span style="color: #3366CC;">')'</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			sf.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> sftext<span style="color: #339933;">;</span>
			sf.<span style="color: #660066;">disabled</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
			window.<span style="color: #660066;">clearInterval</span><span style="color: #009900;">&#40;</span>intervall<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		zeit<span style="color: #339933;">--;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">aktualisieren</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// Absenden-Schaltflaeche erst nach einer bestimmten Zeit benutzbar machen</span>
	<span style="color: #003366; font-weight: bold;">new</span> AbsendenENA<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'abschicken'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Im Beispiel wird eine neue Instanz des AbsendenENA-Objekts erstellt, der erste Parameter ist das Schaltflächen-Objekt (mit der ID <em>abschicken</em>), der zweite die Zeit bis zum Aktivieren, in Sekunden. Die Klasse kann theoretisch an jeder Stelle benutzt werden, im Beispiel wird sie beim <code>onload</code>-Ereignis aufgerufen.</p>
<p>Ich rate dazu, die Funktion nur an Stellen zu verwenden, an denen es dem Benutzer aus technischen (oder auch anderen) Gründen eh nicht möglich wäre das Formular vor Ablauf der Zeit abzuschicken, beispielsweise weil ein Spamschutz das Abschicken serverseitig eh nur alle X Sekunden zulässt. Man kann den Benutzer mit einer solchen Funktion nicht dazu zwingen sich irgendwelche Forenregeln, AGBs, oder sonstwas durchzulesen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/06/15/absenden-zurucksetzen-und-verlassen-von-formularen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Besucherstatistiken mit Piwik</title>
		<link>http://www.antusblog.de/2009/05/23/besucherstatistiken-mit-piwik/</link>
		<comments>http://www.antusblog.de/2009/05/23/besucherstatistiken-mit-piwik/#comments</comments>
		<pubDate>Sat, 23 May 2009 19:57:50 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Webgestaltung]]></category>
		<category><![CDATA[Besucher]]></category>
		<category><![CDATA[Besucherstatistik]]></category>
		<category><![CDATA[Besucherzähler]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Piwik]]></category>
		<category><![CDATA[Statistiken]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=1261</guid>
		<description><![CDATA[Piwik ist ein umfangreiches Programm zur Besucheranalyse, welches auf dem eigenen Webspace installiert werden kann. Es bietet einem ausführliche Daten über die Anzahl und Entwicklung von Besuchern, Suchbegriffen und Suchmaschinen, den am meisten aufgerufenen Seiten, der Herkunft der Besucher und vielem mehr. Ziel des Piwik-Projekts ist es, eine quelloffene Alternative zu Google Analytics bereitzustellen. Ausführliche [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2009/05/piwik.png"><img class="alignright size-full wp-image-1327" title="Besucherstatistiken mit Piwik" src="http://antusblog.de/wp-content/uploads/2009/05/piwik.png" alt="Besucherstatistiken mit Piwik" width="200" height="117" /></a><a href="http://piwik.org/">Piwik</a> ist ein umfangreiches Programm zur Besucheranalyse, welches auf dem eigenen Webspace installiert werden kann. Es bietet einem ausführliche Daten über die Anzahl und Entwicklung von Besuchern, Suchbegriffen und Suchmaschinen, den am meisten aufgerufenen Seiten, der Herkunft der Besucher und vielem mehr. Ziel des Piwik-Projekts ist es, eine quelloffene Alternative zu Google Analytics bereitzustellen.</p>
<h2><span id="more-1261"></span></h2>
<h2>Ausführliche Statistiken</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/piwikuebersicht.png"><img class="aligncenter size-full wp-image-1329" title="Alle wichtigen Daten auf einem Blick" src="http://antusblog.de/wp-content/uploads/2009/05/piwikuebersicht.png" alt="Alle wichtigen Daten auf einem Blick" width="500" height="265" /></a>Auf der Übersichtsseite der eigenen Piwik-Installation hat man gleich alle wichtigen Daten auf einem Blick, sie besteht aus einzelnen Komponenten wie Frequenz, Besucher, Länge, Suchbegriffe, etc. Jede Komponente ist frei verschiebbar und kann einzeln konfiguriert werden, und mit wenigen Klicks lassen sich Komponenten hinzufügen oder entfernen.</p>
<p>Es ist auch kein Problem mehrere Seiten in einer Piwik-Installation zu analysieren, außerdem ist es möglich Benutzer anzulegen, sodass auch andere Personen die Statistiken einsehen können.</p>
<p>Über ein kleines Menü oben gelangt man zu den Detail-Seiten, auf denen sich ausführliche Berichte und Statistiken über die entsprechenden Daten finden. Meist ist es auch möglich die Darstellung der Daten zu verändern, je nach dem ob man eine Tabelle, ein Kreisdiagramm, oder eine andere Art der Darstellung bevorzugt. Die erstellten Graphen und Diagramme lassen sich auch abspeichern, oder gleich in die eigene Seite einbinden.</p>
<h2>Der Funktionsumfang</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/browserfamilien.png"><img class="alignright size-thumbnail wp-image-1330" title="Ein Kreisdiagramm, welches die Browserfamilien der Besucher darstellt." src="http://antusblog.de/wp-content/uploads/2009/05/browserfamilien-150x150.png" alt="Ein Kreisdiagramm, welches die Browserfamilien der Besucher darstellt." width="150" height="150" /></a></p>
<p>Das wichtigste sind natürlich die gesammelten Daten und die Analyse selbiger. Piwik erfasst alle für Webseitenbetreiber nützlichen Informationen über die Besucher:</p>
<ul>
<li>Die Anzahl der (eindeutigen) Besucher, Aktionen (<em>page views</em>) und Aktionen pro Besucher, sowie der Verweildauer und der Absprungrate der Besucher.</li>
<li>Browser, Auflösung, Betriebssystem und unterstützte Webtechnologien wie Cookies, Flash, PDF, etc.</li>
<li>Besuchszeiten, sowohl nach lokaler Zeit des Besuchers als auch der Zeit auf dem Server.</li>
<li>Frequenz und Loyalität der Besucher, sowie deren Standorte (Land) und Provider.</li>
<li>Welche Seiten wie oft aufgerufen wurden, auf welche Links geklickt wird und welche Dateien am meisten runtergeladen wurden.</li>
<li>Woher die Besucher kommen, welche Suchmaschinen die meisten Besucher bringen, und mit welchen Suchbegriffen die Besucher auf die Seite kommen.</li>
</ul>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/funktionalitaetdurcherweiterungen.png"><img class="alignright size-thumbnail wp-image-1335" title="Funktionalität durch Erweiterungen" src="http://antusblog.de/wp-content/uploads/2009/05/funktionalitaetdurcherweiterungen-150x150.png" alt="Funktionalität durch Erweiterungen" width="150" height="150" /></a>Dabei kann man über den Kalender von Piwik jederzeit die Daten von anderen Tagen, Wochen, Monaten oder Jahren ansehen und hat so auch eine Übersicht darüber wie sich die einzelnen Zahlen entwickeln.</p>
<p>Die Funktionalität von Piwik wird größtenteils von Erweiterungen bereitgestellt, was es einem ermöglicht nicht benötigte Module abzuschalten oder den Funktionsumfang durch eigene Module noch zu erweitern.</p>
<h2>Weiterführendes</h2>
<ul>
<li>Ralph Segert beschreibt in seinem Blog, <a href="http://ralph-segert.de/webstatistik-tool-piwik-installieren-und-kennenlernen/">wie man Piwik installiert</a>.<a href="http://ralph-segert.de/webstatistik-tool-piwik-installieren-und-kennenlernen/"><br />
</a></li>
<li>Es gibt auch eine <a href="http://piwik.org/demo/index.php?module=CoreHome&amp;action=index&amp;idSite=1&amp;period=day&amp;date=yesterday">Demo-Installation</a>, mit der man Piwik ausprobieren und sich selbst einen Eindruck verschaffen kann, bevor man es installiert.<a href="http://piwik.org/demo/index.php?module=CoreHome&amp;action=index&amp;idSite=1&amp;period=day&amp;date=yesterday"><br />
</a></li>
<li>Roman Hanhart beschreibt in seinem Artikel <a href="http://ubuntublog.ch/applikationen/piwik-verdraengt-google-analytics">Piwik verdrängt Google Analytics</a> einige Vorteile von Piwik und erklärt, warum Piwik für ihn besser geeignet ist als Google Analytics. Ich sehe das ähnlich wie er, und setze daher auch seit einigen Monaten Piwik ein.</li>
<li>Es gibt auch eine <a href="http://piwik.org/blog/2008/06/new-plugin-wordpress-piwik-integration/">WordPress-Erweiterung</a>, mit der sich Piwik schnell und einfach in den eigenen Blog einbauen lässt. Das tolle daran ist: Die eigenen Besuche werden nicht mitgezählt, solange man eingeloggt ist, so verfälscht sich die Statistik nicht.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/05/23/besucherstatistiken-mit-piwik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>8 Firefox-Erweiterungen für Webentwickler</title>
		<link>http://www.antusblog.de/2009/05/15/8-firefox-erweiterungen-fur-webentwickler/</link>
		<comments>http://www.antusblog.de/2009/05/15/8-firefox-erweiterungen-fur-webentwickler/#comments</comments>
		<pubDate>Fri, 15 May 2009 14:45:24 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Webgestaltung]]></category>
		<category><![CDATA[ColorZilla]]></category>
		<category><![CDATA[Dust-Me Selectors]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox-Erweiterung]]></category>
		<category><![CDATA[FirePHP]]></category>
		<category><![CDATA[MeasureIt]]></category>
		<category><![CDATA[optimieren]]></category>
		<category><![CDATA[Screengrab]]></category>
		<category><![CDATA[verbessern]]></category>
		<category><![CDATA[Web Developer Toolbar]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[YSlow]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=1156</guid>
		<description><![CDATA[Der Funktionsumfang vom Firefox lässt sich durch Erweiterungen noch weiter vergrößern. Gerade für Webentwickler gibt es einige Erweiterungen mit sehr nützlichen Funktionen. Einige geben einem mehr Kontrolle über das Verhalten des Browsers, andere fügen nützliche Werkzeuge wie Lineale oder Farbpipetten zur Benutzeroberfläche des Browsers hinzu. Andere helfen einem bei der JavaScript- oder PHP-Programmierung, oder sie [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2009/05/firebug1.png"><img class="alignright size-thumbnail wp-image-1205" title="Firefox-Erweiterungen für Webentwickler" src="http://antusblog.de/wp-content/uploads/2009/05/firebug1-150x150.png" alt="Firefox-Erweiterungen für Webentwickler" width="150" height="150" /></a>Der Funktionsumfang vom Firefox lässt sich durch Erweiterungen noch weiter vergrößern. Gerade für Webentwickler gibt es einige Erweiterungen mit sehr nützlichen Funktionen. Einige geben einem mehr Kontrolle über das Verhalten des Browsers, andere fügen nützliche Werkzeuge wie Lineale oder Farbpipetten zur Benutzeroberfläche des Browsers hinzu. Andere helfen einem bei der JavaScript- oder PHP-Programmierung, oder sie analysieren die Webseite und machen beispielsweise Vorschläge wie man die Geschwindigkeit der Seite verbessern kann.</p>
<p><span id="more-1156"></span></p>
<h2>Web Developer Toolbar</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/webdevelopertoolbar.png"><img class="aligncenter size-full wp-image-1208" title="WebDeveloperToolbar" src="http://antusblog.de/wp-content/uploads/2009/05/webdevelopertoolbar.png" alt="WebDeveloperToolbar" width="400" height="200" /></a>Die Web Developer Toolbar gibt einem mehr Kontrolle über Cookies, CSS, HTML-Elemente sowie Skripte und deren Ausführung. Über die Toolbar lassen sich außerdem viele hilfreiche Informationen über diverse Elemente, Objekte und Eigenschaften anzeigen. Hilfslinien und Lineale helfen einem beim Anordnen von Elementen.</p>
<p>HTML, CSS, Feeds, Links und andere Teile des Quelltextes einer Webseite können mit ein paar Klicks auf ihre Validität überprüft werden. Das Browserfenster lässt sich bestimmte Größen wie z.B. 800&#215;600 verkleinern/vergrößern um die Webseite auch in anderen gängigen  Auflösungen zu überprüfen. Veraltete Elemente oder fehlerhafte Bilder lassen sich besonders hervorheben.</p>
<p style="padding-left: 30px;"><a href="https://addons.mozilla.org/en-US/firefox/addon/60">Zur Erweiterung</a><br />
<a href="http://chrispederick.com/work/web-developer/">Webseite der Web Developer Toolbar</a></p>
<h2>Firebug</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/firebug1.png"><img class="aligncenter size-full wp-image-1205" title="FireBug" src="http://antusblog.de/wp-content/uploads/2009/05/firebug1.png" alt="FireBug" width="400" height="267" /></a></p>
<p>Firebug ist wohl die umfangreichste Firefox-Erweiterung für Entwickler. HTML, CSS, JavaScript &#8211; für fast alles bringt Firebug die notwendigen Werkzeuge mit. Sogar der Ladevorgang von Webseiten lässt sich mit Firebug analysieren.</p>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/firebugjavascript.png"><img class="alignright size-thumbnail wp-image-1238" title="JavaScript im Firebug" src="http://antusblog.de/wp-content/uploads/2009/05/firebugjavascript-150x150.png" alt="JavaScript im Firebug" width="150" height="150" /></a>Der HTML-Quelltext der Seite wird übersichtlich dargestellt, man kann ihn sogar bearbeiten und sieht die Auswirkungen live im Browserfenster. Man muss auch nicht lange nach Elementen suchen, man rechtsklickt einfach im Browserfenster auf ein Element und wählt <em>Element untersuchen</em> aus, schon springt Firebug zur entsprechenden Stelle im Quelltext.</p>
<p>Selbiges gilt für CSS-Quelltexte, auch diese lassen sich durchsuchen und bearbeiten, die Änderungen kann man dann im Browserfenster sofort sehen. Für Farben und Bilder gibt es im Quelltext-Editor eine integrierte Vorschaufunktion, eine Auto-Vervollständigung erleichtert zusätzlich das Bearbeiten des Quelltextes.</p>
<p>Außerdem hebt Firebug im Browserfenster Außen- und Innenabstände sowie Rahmen farblich hervor, ein Layout-Reiter zeigt einem zusätzlich noch einmal die genauen Werte der Abstände an, auch diese können natürlich live bearbeitet werden.</p>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/firebugnetzwerk.png"><img class="alignright size-thumbnail wp-image-1232" title="Ladevorgang einer Webseite" src="http://antusblog.de/wp-content/uploads/2009/05/firebugnetzwerk-150x150.png" alt="Ladevorgang einer Webseite" width="150" height="150" /></a>Die Seite lädt langsam? Firebug verrät einem warum. Im Netzwerk-Reiter der Firebug-Erweiterung wird der gesamte Ladevorgang der Seite dargestellt. Für jede einzelne Datei die geladen wird, wird angezeigt wann der Ladevorgang beginnt, und wie lange es gedauert hat die Datei zu laden. Dabei unterscheidet Firebug auch zwischen Daten die aus dem Zwischenspeicher (Cache) geladen werden, und solchen die vom Webserver abgefragt werden müssen. Auch AJAX-Anfragen werden hier angezeigt.</p>
<p>Auch für JavaScript-Programmierer gibt es einige nützliche Funktionen. So kann man zum Beispiel Stellen im Quelltext festlegen, an der die Ausführung angehalten und die Werte aller Variablen angezeigt werden sollen. Es ist auch möglich den Quelltext Zeile für Zeile auszuführen, wobei man sehr gut beobachten kann wie sich die Werte von Variablen verändern. Es ist sogar möglich zu messen welche Funktionen wie lange ausgeführt werden, das ist sehr hilfreich wenn man seine Skripte optimieren möchte bzw. wenn diese zu langsam sind.</p>
<p>Und das ist noch lange nicht alles was Firebug kann!</p>
<p style="padding-left: 30px;"><a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Zur Erweiterung</a><br />
<a href="http://getfirebug.com/">Webseite von Firebug</a></p>
<h2>Dust-Me Selectors</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/dustmeselectors.png"><img class="aligncenter size-full wp-image-1219" title="Dust-Me Selectors" src="http://antusblog.de/wp-content/uploads/2009/05/dustmeselectors.png" alt="Dust-Me Selectors" width="400" height="200" /></a></p>
<p>Manchmal fügt man neue CSS-Selektoren hinzu, die andere ersetzen, vergisst aber die alten Selektoren zu entfernen, dabei wächst der Quelltext immer weiter, obwohl viele Selektoren gar nicht mehr benötigt werden würden. Diese Erweiterung findet unbenutzte CSS-Selektoren, und hilft einem dabei seine CSS-Dateien klein zu halten.</p>
<p style="padding-left: 30px;"><a href="http://antusblog.de/2009/04/05/unbenutzte-css-selektoren-finden-mit-dust-me-selectors/">Artikel über Dust-Me Selectors</a><br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/5392">Zur Erweiterung</a><br />
<a href="http://www.sitepoint.com/dustmeselectors/">Webseite von Dust-Me Selectors<br />
</a></p>
<h2>ColorZilla</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/colorzilla.png"><img class="aligncenter size-full wp-image-1247" title="ColorZilla" src="http://antusblog.de/wp-content/uploads/2009/05/colorzilla.png" alt="ColorZilla" width="400" height="200" /></a></p>
<p>Mit ColorZilla lassen sich alle Farben einer Webseite auslesen und in einer Palette darstellen, außerdem bietet die Erweiterung eine Farbpipette wie man sie aus Bildbearbeitungsprogrammen kennt, damit lassen sich die Farben jedes Pixels einer Webseite bestimmen. Hat man eine Farbe ausgewählt, kann man diese auch mit einem Klick gleich in die Zwischenablage kopieren, wobei einem auch noch mehrere Formate (#RRGGBB, rgb(&#8230;), etc.) zur Verfügung stehen. Auch eine Zoom-Funktion, mit der man die Webseite um bis zu 1000% vergrößert ansehen kann, bringt die Erweiterung mit.</p>
<p style="padding-left: 30px;"><a href="https://addons.mozilla.org/en-US/firefox/addon/271">Zur Erweiterung</a><br />
<a href="http://www.colorzilla.com/firefox/">Webseite von ColorZilla</a></p>
<h2>Screengrab</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/screengrab.png"><img class="aligncenter size-full wp-image-1216" title="Screengrab" src="http://antusblog.de/wp-content/uploads/2009/05/screengrab.png" alt="Screengrab" width="400" height="150" /></a></p>
<p>Screengrab ist eine Erweiterung die es einem ermöglicht Bilder von einer Webseite zu machen. Dabei kann man entweder den gesamten sichtbaren Bereich, einen ausgewählten Bereich, den gesamten Fensterinhalt oder ein Bild der kompletten Seite erstellen. Grade letztere Funktion ist sehr praktisch, denn normalerweise müsste man ein Bild machen, dann weiter runterscrollen, wieder ein Bild machen, etc. und die Bilder am Ende zusammenfügen. Screengrab erspart einem diese Arbeit.</p>
<p style="padding-left: 30px;"><a href="https://addons.mozilla.org/en-US/firefox/addon/1146">Zur Erweiterung</a><a href="http://www.screengrab.org/"><br />
Webseite von Screengrab</a></p>
<h2>MeasureIt</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/measureit.png"><img class="aligncenter size-full wp-image-1221" title="MeasureIt" src="http://antusblog.de/wp-content/uploads/2009/05/measureit.png" alt="MeasureIt" width="400" height="100" /></a></p>
<p>MeasureIt erlaubt es einem, überall auf einer Webseite ein Lineal anzuzeigen, mit dem man Abstände und Größen in Pixeln messen kann. Das ist sehr praktisch, wenn man überprüfen möchte, ob ein Element auch die gewünschte Höhe oder Breite einnimmt.</p>
<p style="padding-left: 30px;"><a href="https://addons.mozilla.org/de/firefox/addon/539">Zur Erweiterung</a><br />
<a href="http://www.kevinfreitas.net/extensions/measureit/">Webseite von MeasureIt</a></p>
<h2>FirePHP</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/firephp.png"><img class="aligncenter size-full wp-image-1243" title="FirePHP" src="http://antusblog.de/wp-content/uploads/2009/05/firephp.png" alt="FirePHP" width="400" height="200" /></a></p>
<p>Mit FirePHP kann man in PHP Fehlermeldungen, Log-Meldungen, Variablen, Ausnahmen etc. ausgeben, und diese werden dann direkt an die Konsole von Firebug gesendet. Das ist gerade bei der Entwicklung von AJAX-Anwendungen sehr praktisch, da man so Informationen über den Programmablauf erhält ohne dabei die AJAX-Antworten mit irgendwelchen var_dump()-Aufrufen o.Ä. zu zerstören. Um FirePHP zu benutzen werden Firebug und eine kleine PHP-Bibliothek benötigt, die die Funktionen und Klassen zur Ausgabe von Meldungen/Informationen enthält.</p>
<p style="padding-left: 30px;"><a href="https://addons.mozilla.org/en-US/firefox/addon/6149">Zur Erweiterung</a><br />
<a href="http://www.firephp.org/">Webseite von FirePHP</a><br />
<a href="http://www.christophdorn.com/Blog/2009/04/03/how-to-integrate-firephp-for-ajax-development/">Anleitung zur Benutzung von FirePHP (Englisch)</a></p>
<h2>YSlow</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/05/yslow.png"><img class="aligncenter size-full wp-image-1254" title="YSlow" src="http://antusblog.de/wp-content/uploads/2009/05/yslow.png" alt="YSlow" width="400" height="200" /></a>YSlow ist eine von Yahoo entwickelte Erweiterung, die eine Webseite analysiert, und anschließend Vorschläge macht, wie man die Geschwindigkeit der Webseite optimieren kann. CSS, Bilder, Cookies, die Auslieferung von Inhalten, der Server, JavaScript &#8211; alles wird von YSlow analysiert. Zusätzlich zu den Ergebnissen der Analyse werden dann auch noch Hinweise darauf gegeben was man tun muss um die Seite schneller zu machen. Bei der Analyse hat man die Wahl zwischen verschiedenen vorgegebenen Regeln (je nachdem um was für eine Seite es sich handelt) nach denen YSlow die Seite analysiert, wobei man auch eigene Regeln hinzufügen kann. Außerdem ist es möglich zu überprüfen ob Bilder optimiert werden können oder zum Beispiel fehlerhafte JavaScript-Quelltexte eingebunden werden.</p>
<p>Für YSlow wird ebenfalls Firebug vorausgesetzt.</p>
<p style="padding-left: 30px;"><a href="https://addons.mozilla.org/de/firefox/addon/5369">Zur Erweiterung</a><br />
<a href="http://developer.yahoo.com/yslow/">Webseite von YSlow</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/05/15/8-firefox-erweiterungen-fur-webentwickler/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Browser-Update.org &#8211; Benutzer über neue Browserversionen informieren</title>
		<link>http://www.antusblog.de/2009/04/05/browser-updateorg-benutzer-uber-neue-browserversionen-informieren/</link>
		<comments>http://www.antusblog.de/2009/04/05/browser-updateorg-benutzer-uber-neue-browserversionen-informieren/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 21:05:06 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Webgestaltung]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Browser-Update.org]]></category>
		<category><![CDATA[Java Script]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Sicherheitslücken]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=781</guid>
		<description><![CDATA[Viele Benutzer verwenden hoffnungslos veraltete Browser um im Internet zu surfen. Das ist sowohl für die Benutzer selbst als auch für Webdesigner von Nachteil. Neuere Browser sind komfortabler, schneller und vorallem sicherer. Denn veraltete, meist nicht mal mehr vom Hersteller unterstützte Browserversionen enthalten oft Sicherheitslücken und schützen den Benutzer nur mangelhaft vor Viren, Trojanern, Datendiebstahl [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2009/04/hinweis.png"><img class="size-medium wp-image-783 alignright" title="Diesen Warnhinweis sehen Besucher die einen veralteten Browser benutzen." src="http://antusblog.de/wp-content/uploads/2009/04/hinweis-300x44.png" alt="Diesen Warnhinweis sehen Besucher die einen veralteten Browser benutzen." width="300" height="44" /></a>Viele Benutzer verwenden hoffnungslos veraltete Browser um im Internet zu surfen. Das ist sowohl für die Benutzer selbst als auch für Webdesigner von Nachteil. Neuere Browser sind <strong>komfortabler</strong>, <strong>schneller</strong> und vorallem <strong>sicherer</strong>. Denn veraltete, meist nicht mal mehr vom Hersteller unterstützte Browserversionen enthalten oft <strong>Sicherheitslücken</strong> und schützen den Benutzer nur mangelhaft vor <strong>Viren</strong>, <strong>Trojanern</strong>, <strong>Datendiebstahl</strong> und anderen <strong>Bedrohungen</strong>. Auch für Webdesigner ist das ein Problem, denn sie müssen Rücksicht auf solche veralteten Browser nehmen und die von ihnen erstellten Seiten extra an die Fehler dieser Browser anpassen. Viele neue Techniken können sie nicht verwenden weil ein großer Prozentsatz der Benutzer Browser benutzt die diese nicht unterstützen.</p>
<p>Doch viele Benutzer wissen gar nicht das ihr Browser veraltet ist bzw. das man den Browser überhaupt aktualisieren kann. <a href="http://browser-update.org/" target="_blank">Browser-Update.org</a> ist eine noch relativ <a href="http://browser-update.org/blog/?p=10" target="_blank">neue</a> Initiative mit dem Ziel genau das zu ändern.</p>
<p><span id="more-781"></span></p>
<h2>Browser-Update.org</h2>
<p>Die Seite bietet einen kleinen JavaScript-Quelltext an, den man in die eigene Webseite einbinden kann. Dieser überprüft die Browserversion des Benutzers, und falls er einen veralteten Browser verwendet bekommt er einen kleinen unaufdringlichen Warnhinweis zu sehen, der ihn auf die Nachteile eines veralteten Browsers und die Möglichkeit selbigen zu aktualisieren hinweist. Der Hinweis enthält einen Link auf eine Seite auf der sich eine Liste von Gründen für eine Aktualisierung sowie Hinweise und Links zu aktuellen Browsern findet.</p>
<p>Wenn der Benutzer den Hinweis ignoriert wird selbiger auch erstmal einige Zeit lang nicht mehr angezeigt, der Benutzer wird also nicht dauerhaft von dem Hinweis genervt. Es ist auch möglich einzustellen bei welchen Versionen der Besucher eine Warnung angezeigt bekommen soll, und bei welchen nicht.</p>
<h2>Fast 400 Seiten benutzen das Skript bereits</h2>
<p>Laut den <a href="http://browser-update.org/stat.html" target="_blank">Statistiken</a> von Browser-Update.org wird das Skript bereits von fast 400 Seiten verwendet und konnte bereits fast 500 Benutzer dazu überreden ihren Browser zu aktualisieren (wobei ich mich frage wie das gemessen wird).</p>
<p>Ich finde diese Initiative sinnvoll, deswegen läuft dieses Skript ab heute auch auf meinem Blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/04/05/browser-updateorg-benutzer-uber-neue-browserversionen-informieren/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Unbenutzte CSS-Selektoren finden mit Dust-Me Selectors</title>
		<link>http://www.antusblog.de/2009/04/05/unbenutzte-css-selektoren-finden-mit-dust-me-selectors/</link>
		<comments>http://www.antusblog.de/2009/04/05/unbenutzte-css-selektoren-finden-mit-dust-me-selectors/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 16:47:43 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox-Erweiterung]]></category>
		<category><![CDATA[optimieren]]></category>
		<category><![CDATA[Selektoren]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=759</guid>
		<description><![CDATA[Wenn man nicht mehr benötigte HTML-Elemente entfernt oder CSS-Selektoren durch andere ersetzt kann es passieren das man vergisst die alten bzw. nicht mehr benötigten Selektoren aus der CSS-Datei zu entfernen. So sammeln sich über die Zeit immer mehr Selektoren an die gar nicht mehr benötigt werden und nur unnötig die CSS-Datei aufblähen. Mit der Firefox-Erweiterung [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2009/04/unusedselectors.png"><img class="aligncenter size-full wp-image-765" title="Liste von unbenutzten CSS-Selektoren" src="http://antusblog.de/wp-content/uploads/2009/04/unusedselectors.png" alt="Liste von unbenutzten CSS-Selektoren" width="400" height="150" /></a></p>
<p>Wenn man nicht mehr benötigte HTML-Elemente entfernt oder CSS-Selektoren durch andere ersetzt kann es passieren das man vergisst die alten bzw. nicht mehr benötigten Selektoren aus der CSS-Datei zu entfernen. So sammeln sich über die Zeit immer mehr Selektoren an die gar nicht mehr benötigt werden und nur unnötig die CSS-Datei aufblähen. Mit der Firefox-Erweiterung <a href="http://www.sitepoint.com/dustmeselectors/" target="_blank">Dust-Me Selectors</a> lassen sich solche unbenutzten Selektoren sehr einfach aufspüren.</p>
<p><span id="more-759"></span></p>
<h2>Bedienung</h2>
<p>Nach der Installation der Erweiterung und dem obligatorischen Firefox-Neustart findet sich in der Statusleiste unten rechts ein kleiner pinker Staubwedel. Klickt man darauf wird die Überprüfung der geöffneten Seite gestartet. Nach ein paar Sekunden öffnet sich ein Ergebnis-Fenster in dem alle unbenutzten CSS-Selektoren inklusive der Zeile in der sie definiert sind angezeigt werden.</p>
<h3>Automatische Überprüfung</h3>
<p><a href="http://antusblog.de/wp-content/uploads/2009/04/menue.png"><img class="alignright size-full wp-image-776" title="Nach einem Rechtsklick auf den Staubwedel öffnet sich dieses Menü" src="http://antusblog.de/wp-content/uploads/2009/04/menue.png" alt="Nach einem Rechtsklick auf den Staubwedel öffnet sich dieses Menü" width="252" height="162" /></a>Meistens werden aber nicht alle Selektoren auf einer Seite benutzt, weswegen man mehrere HTML-Dateien überprüfen will. Hier gibt es zwei Möglichkeiten.</p>
<p>Die eine Möglichkeit besteht darin die automatische Überprüfung einzuschalten (Rechtsklick auf den Staubwedel, Automation-&gt;Run automatically) und alle Seiten die man überprüfen will anzusurfen.</p>
<p>Die andere Möglichkeit ist sogar noch einfacher, es wird allerdings eine Sitemap (Seite die Links zu allen zu überprüfenden Seiten enthält) benötigt. Hat man eine solche Sitemap, klickt man einfach auf Automation-&gt;Spider Sitemap, gibt dort die Adresse der Sitemap an und klickt auf Go. Dann werden automatisch alle in der Sitemap enthaltenen Links überprüft.</p>
<p>Ist die Überprüfung abgeschlossen öffnet sich ein Fenster welches die Ergebnisse anzeigt.</p>
<p><a href="http://antusblog.de/wp-content/uploads/2009/04/dustmeselectorsfenster.png"><img class="aligncenter size-full wp-image-770" title="Ergebnis-Fenster" src="http://antusblog.de/wp-content/uploads/2009/04/dustmeselectorsfenster.png" alt="Ergebnis-Fenster" width="460" height="480" /></a></p>
<p>Anhand der Ergebnisse ist es nun ein leichtes die entsprechenden CSS-Dateien von nicht mehr benötigten Selektoren zu befreien.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/04/05/unbenutzte-css-selektoren-finden-mit-dust-me-selectors/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Transparente Farben und Elemente mit CSS</title>
		<link>http://www.antusblog.de/2009/03/19/transparente-farben-und-elemente-mit-css/</link>
		<comments>http://www.antusblog.de/2009/03/19/transparente-farben-und-elemente-mit-css/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 17:37:22 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Webgestaltung]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Farben]]></category>
		<category><![CDATA[Transparente Elemente]]></category>
		<category><![CDATA[Transparenz]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=491</guid>
		<description><![CDATA[Mit CSS3 bekommen Webdesigner zwei neue Möglichkeiten um Webseiten durch transparente Elemente und Farben interessanter zu gestalten. Wie man Elemente transparent gestaltet und bei Farbangaben zusätzlich auch die Deckkraft angibt erfahrt ihr in diesem Artikel. Transparente Elemente mit opacity Die CSS3-Eigenschaft opacity legt die Deckkraft eines Elementes sowie aller seiner Kind-Elemente bzw. Inhalte fest. Diese [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2009/03/transparent.png"><img class="alignleft size-full wp-image-571" title="Transparenz" src="http://antusblog.de/wp-content/uploads/2009/03/transparent.png" alt="Transparenz" width="150" height="150" /></a>Mit CSS3 bekommen Webdesigner zwei neue Möglichkeiten um Webseiten durch transparente Elemente und Farben interessanter zu gestalten. Wie man Elemente transparent gestaltet und bei Farbangaben zusätzlich auch die Deckkraft angibt erfahrt ihr in diesem Artikel.<br />
<span id="more-491"></span></p>
<h2>Transparente Elemente mit opacity</h2>
<p>Die CSS3-Eigenschaft <code>opacity</code> legt die Deckkraft eines Elementes sowie aller seiner Kind-Elemente bzw. Inhalte fest. Diese Eigenschaft wird zwar erst mit CSS3 in den Standard aufgenommen, die meisten aktuellen Browser (außer dem Internet Explorer) unterstützen sie aber bereits.</p>
<p>Sehr alte Mozilla/Webkit-Browser kennen nur die Eigenschaften <code>-moz-opacity</code> und <code>-khtml-opacity</code>, da diese Browser allerdings heutzutage kaum noch verwendet werden, kann man diese auch weglassen. Für den Internet Explorer gibt es die proprietäre Eigenschaft <code>filter: alpha(opacity=XXX)</code> mit dem die Deckkraft eines Elementes verändert werden kann. Ab Version 8 des Internet Explorers unterstützt dieser zusätzlich auch noch die Schreibweise <code>-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=XXX)";</code>, diese kann man aber auch weglassen, da der IE 8 immer noch die alte Schreibweise unterstützt.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.halbtransparent</span> <span style="color: #00AA00;">&#123;</span>
    opacity<span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* CSS3 (Neuere Browser außer Internet Explorer) */</span>
    filter<span style="color: #00AA00;">:</span>alpha<span style="color: #00AA00;">&#40;</span>opacity<span style="color: #00AA00;">=</span><span style="color: #cc66cc;">50</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Internet Explorer 4-7 */</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/* Folgende Eigenschaften können auch weggelassen werden, fast alle Browser verstehen
       die beiden obigen Eigenschaften. */</span>
    -moz-opacity<span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Gecko (Ältere Mozilla-Browser)  */</span>
    -khtml-opacity<span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Alte Versionen von Konqueror oder Safari */</span>
    -ms-filter<span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;progid:DXImageTransform.Microsoft.Alpha(Opacity=50)&quot;</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Internet Explorer 8 */</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><a href="http://antusblog.de/wp-content/uploads/2009/03/transparent1.png"><img class="alignright size-full wp-image-573" title="Deckkraft" src="http://antusblog.de/wp-content/uploads/2009/03/transparent1.png" alt="Deckkraft" width="200" height="300" /></a>Die Eigenschaften <code>opacity</code>, <code>-moz-opacity</code> und <code>-khtml-opacity</code> erwarten eine numerische Angabe von 0.00 (komplett durchsichtig) bis 1.00 (keine Transparenz). Die beiden Filter für den Internet Explorer erwarten eine Angabe von 0 (unsichtbar) bis 100 (100% sichtbar).</p>
<p>Falls das Element im Internet Explorer trotz richtiger CSS-Eigenschaften nicht transparent dargestellt wird kann das daran liegen das es nicht die Eigenschaft <code>hasLayout</code> hat. Das lässt sich zum Beispiel durch das hinzufügen von <code>zoom:1;</code> beheben. <a href="http://onhavinglayout.fwpf-webdesign.de/" target="_blank">Mehr Informationen über hasLayout</a>.</p>
<h2>Farben mit verringerter Deckkraft: RGBA bzw. HSLA</h2>
<p>Mit CSS 1 und 2 hat man 3 Möglichkeiten um Farben anzugeben: Im hexadezimalen Format, z.B. <code>#RRGGBB</code>, als Farbname, z.B. <code>red</code>, oder in der Form <code>rgb(rrr, ggg, bbb)</code>. Mit CSS3 kommen noch <code>rgba(rrr, ggg, bbb, a.aa)</code> sowie <code>hsla(hhh, sss%, lll%, a.aa)</code> hinzu. Das A in RGBA bzw. HSLA steht für Alphakanal, und regelt die Deckkraft der Farbe.</p>
<p>Das macht es viel leichter beispielsweise nur den Hintergrund eines Elements durchsichtig zu gestalten während die Inhalte voll sichtbar bleiben.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.transparenter_hg</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span>rgba<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">0.50</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Bei der HSL(A)-Angabe wird die Farbe nicht über die Rot-, Grün-, und Blauanteile der Farbe definiert sondern über den Farbton (Hue), die Farbsättigung (Saturation) und die Helligkeit (Lightness). Der <a href="http://de.wikipedia.org/wiki/HSV-Farbraum" target="_blank">HSL-Farbraum</a> ist für Menschen einfacher zu benutzen als der RGB-Farbraum, da man nur jeweils einen Wert verändern muss um Helligkeit, Sättigung und Farbe zu ändern.</p>
<h2>Browserunterstützung</h2>
<p>Ich habe mal ausprobiert welcher Browser welche Eigenschaften versteht, hier eine kleine Tabelle:</p>
<table border="0">
<thead>
<tr>
<th>Browser</th>
<th>opacity</th>
<th>-moz-opacity</th>
<th>-khtml-opacity</th>
<th>filter: alpha</th>
<th>-ms-filter: alpha</th>
<th>RGBA und HSLA</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mozilla Firefox 3.1</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja</td>
</tr>
<tr>
<td>Mozilla Firefox 3.0.6</td>
<td>Ja</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja</td>
</tr>
<tr>
<td>Mozilla Firefox 2.0.0.19</td>
<td>Ja</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
</tr>
<tr>
<td>Firefox 0.8</td>
<td>Nein</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
</tr>
<tr>
<td>Epiphany 2.22</td>
<td>Ja</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja</td>
</tr>
<tr>
<td>Opera 8.54</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
</tr>
<tr>
<td>Safari 3.2.1</td>
<td>Ja</td>
<td>Nein</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja</td>
</tr>
<tr>
<td>Opera 9.64</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
</tr>
<tr>
<td>Internet Explorer 7</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
</tr>
<tr>
<td>Chrome 1.0</td>
<td>Ja</td>
<td>Nein</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja, aber ohne Transparenz</td>
</tr>
<tr>
<td>Internet Explorer 5.5</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja</td>
<td>Nein</td>
<td>Nein</td>
</tr>
<tr>
<td>Internet Explorer 8</td>
<td>Nein</td>
<td>Nein</td>
<td>Nein</td>
<td>Ja</td>
<td>Ja</td>
<td>Nein</td>
</tr>
</tbody>
</table>
<p>Mein Fazit ist: Transparente Elemente sind heutzutage kein Problem mehr, es wird aber noch einige Zeit dauern bis man RGBA/HSLA benutzen kann.</p>
<h2>Beispielseite</h2>
<p>Ich habe eine kleine Beispielseite mit ein paar transparenten Texten und Elementen sowie Farben mit reduzierter Deckkraft erstellt um das ganze mal zu demonstrieren.</p>
<p style="padding-left: 30px;"><a href="http://antusblog.de/demos/1-transparenz-css/transparenz.html" target="_blank">Zur Beispielseite</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/03/19/transparente-farben-und-elemente-mit-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

