<?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>RE-Design - Enrico Reinsdorf &#187; Programmierung</title>
	<atom:link href="http://www.re-design.de/category/mediales-internet/programmierung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.re-design.de</link>
	<description>Trainer für Konzeption und Umsetzung von medialen Internet-Projekten</description>
	<lastBuildDate>Fri, 28 Oct 2011 19:26:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PostIt &#8211; mit HTML5 und CSS3</title>
		<link>http://www.re-design.de/2011/01/19/postit-mit-html5-und-css3/</link>
		<comments>http://www.re-design.de/2011/01/19/postit-mit-html5-und-css3/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 09:54:45 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.re-design.de/2011/01/19/postit-mit-html5-und-css3/</guid>
		<description><![CDATA[Durch ein Video-Tutorial habe ich gesehen wie man mit reinem HTML und CSS in modernen Browsern ein PostIt bzw. einen angeklebten Zettel&#160; designen kann. Ich habe dann den Quellcode nachgeschrieben und auf meine Bedürfnisse angepasst. Der HTML-Code ist recht einfach. HTML-Formatierung &#60;!DOCTYPE html&#62; &#60;html&#62; &#60;head&#62; &#60;meta charset=&#34;UTF-8&#34;&#62; &#60;title&#62;RE-Design – Weblabor – HTML5 – PostIt&#60;/title&#62; &#60;link [...]]]></description>
			<content:encoded><![CDATA[<p>Durch ein Video-Tutorial habe ich gesehen wie man mit reinem HTML und CSS in modernen Browsern ein <a href="http://de.wikipedia.org/wiki/Klebezettel" rel="nofollow">PostIt</a> bzw. einen angeklebten Zettel&#160; designen kann.</p>
<p>Ich habe dann den Quellcode nachgeschrieben und auf meine Bedürfnisse angepasst. Der HTML-Code ist recht einfach.</p>
<p>  <span id="more-1044"></span>
<pre style="font-family: consolas,; font-size: small" class="html4strict" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">HTML-Formatierung</div>
<ol>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #00bbdd">&lt;!DOCTYPE html&gt;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold">html</span></a>&gt;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold">head</span></a>&gt;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold">meta</span></a> <span style="color: #000066">charset</span><span style="color: #66cc66">=</span><span style="color: #ff0000">&quot;UTF-8&quot;</span>&gt;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold">title</span></a>&gt;</span>RE-Design – Weblabor – HTML5 – PostIt<span style="color: #009900">&lt;<span style="color: #66cc66">/</span><a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold">title</span></a>&gt;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/link.html"><span style="color: #000000; font-weight: bold">link</span></a> <span style="color: #000066">href</span><span style="color: #66cc66">=</span><span style="color: #ff0000">'http://fonts.googleapis.com/css?family=Homemade+Apple'</span> <span style="color: #000066">rel</span><span style="color: #66cc66">=</span><span style="color: #ff0000">'stylesheet'</span> <span style="color: #000066">type</span><span style="color: #66cc66">=</span><span style="color: #ff0000">'text/css'</span>&gt;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/link.html"><span style="color: #000000; font-weight: bold">link</span></a> <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;styles/main.css&quot;</span>&gt;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<span style="color: #66cc66">/</span><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold">head</span></a>&gt;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold">body</span></a>&gt;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">div</span></a> <span style="color: #000066">class</span><span style="color: #66cc66">=</span><span style="color: #ff0000">&quot;postit&quot;</span>&gt;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #009900">&lt;<a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold">p</span></a>&gt;</span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam viverra, quam nec rutrum auctor, lorem lectus porttitor augue, vel pellentesque sem leo nec nisi. Fusce quis ligula nisi.<span style="color: #009900">&lt;<span style="color: #66cc66">/</span><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold">p</span></a>&gt;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #009900">&lt;<a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold">p</span></a>&gt;</span>Aliquam nec tellus elit.<span style="color: #009900">&lt;<span style="color: #66cc66">/</span><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold">p</span></a>&gt;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<span style="color: #66cc66">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold">div</span></a>&gt;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<span style="color: #66cc66">/</span><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold">body</span></a>&gt;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #009900">&lt;<span style="color: #66cc66">/</span><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold">html</span></a>&gt;</span></div>
</li>
</ol>
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">Created by Enrico Reinsdorf - RE-Design</div>
</pre>
<p>Wie ihr seht wird das PostIt durch einen DIV-Tag präsentiert in dem 2 Absätze vorhanden sind.</p>
<pre style="font-family: consolas,; font-size: small" class="css" courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?" new?,="New?," courier="courier">
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">CSS-Formatierung</div>
<ol>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #6666ff">.postit</span> <span style="color: #00aa00">{</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">width</span><span style="color: #00aa00">:</span> <span style="color: #933">700px</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">position</span><span style="color: #00aa00">:</span> <span style="color: #993333">relative</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">margin</span><span style="color: #00aa00">:</span> <span style="color: #993333">auto</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">padding</span><span style="color: #00aa00">:</span> <span style="color: #933">2em</span> <span style="color: #cc66cc">0</span> <span style="color: #933">1em</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">color</span><span style="color: #00aa00">:</span> <span style="color: #cc00cc">#212121</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">&#160;</div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-webkit-border-bottom-left-radius<span style="color: #00aa00">:</span> <span style="color: #933">20px</span> <span style="color: #933">500px</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-webkit-border-bottom-right-radius<span style="color: #00aa00">:</span> <span style="color: #933">500px</span> <span style="color: #933">30px</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-webkit-border-top-right-radius<span style="color: #00aa00">:</span> <span style="color: #933">5px</span> <span style="color: #933">100px</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">&#160;</div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-moz-border-radius-bottomleft<span style="color: #00aa00">:</span> <span style="color: #933">20px</span> <span style="color: #933">500px</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-moz-border-radius-bottomright<span style="color: #00aa00">:</span> <span style="color: #933">500px</span> <span style="color: #933">30px</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-moz-border-radius-topright<span style="color: #00aa00">:</span> <span style="color: #933">5px</span> <span style="color: #933">100px</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">&#160;</div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">background</span><span style="color: #00aa00">:</span> <span style="color: #cc00cc">#fcf59c</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">background</span><span style="color: #00aa00">:</span> -moz-repeating-linear-gradient<span style="color: #00aa00">(</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #000000; font-weight: bold">top</span><span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #cc00cc">#fcf59c</span><span style="color: #00aa00">,</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #cc00cc">#fcf59c</span> <span style="color: #933">18px</span><span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #cc00cc">#81cbbc</span> <span style="color: #933">20px</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">				<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">background</span><span style="color: #00aa00">:</span> -webkit-gradient<span style="color: #00aa00">(</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					linear<span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #000000; font-weight: bold">left</span> <span style="color: #000000; font-weight: bold">top</span><span style="color: #00aa00">,</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #000000; font-weight: bold">left</span> <span style="color: #000000; font-weight: bold">bottom</span><span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					color-stop<span style="color: #00aa00">(</span><span style="color: #cc66cc">0</span><span style="color: #00aa00">,</span> <span style="color: #cc00cc">#fcf59c</span><span style="color: #00aa00">)</span><span style="color: #00aa00">,</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					color-stop<span style="color: #00aa00">(</span>.9<span style="color: #00aa00">,</span> <span style="color: #cc00cc">#fcf59c</span><span style="color: #00aa00">)</span><span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					color-stop<span style="color: #00aa00">(</span><span style="color: #cc66cc">1</span><span style="color: #00aa00">,</span> <span style="color: #cc00cc">#81cbbc</span><span style="color: #00aa00">)</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">				<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-webkit-background-<span style="color: #000000; font-weight: bold">size</span><span style="color: #00aa00">:</span> <span style="color: #933">100%</span> <span style="color: #933">20px</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">&#160;</div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-webkit-box-shadow<span style="color: #00aa00">:</span> <span style="color: #cc66cc">0</span> <span style="color: #933">2px</span> <span style="color: #933">10px</span> <span style="color: #933">1px</span> rgba<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</span><span style="color: #00aa00">,</span>.2<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-moz-box-shadow<span style="color: #00aa00">:</span> <span style="color: #cc66cc">0</span> <span style="color: #933">2px</span> <span style="color: #933">10px</span> <span style="color: #933">1px</span> rgba<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</span><span style="color: #00aa00">,</span>.2<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	box-shadow<span style="color: #00aa00">:</span> <span style="color: #cc66cc">0</span> <span style="color: #933">2px</span> <span style="color: #933">10px</span> <span style="color: #933">1px</span> rgba<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</span><span style="color: #00aa00">,</span>.2<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #00aa00">}</span></div>
</li>
</ol>
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">Created by Enrico Reinsdorf - RE-Design</div>
</pre>
<p>In der CSS-Datei wird als erstes der Div-Container formatiert. Interessant an der Formatierung ist die Gestaltung der Grundlinien. Über einen Verlauf, der sich alle 40 Pixel wiederholt erreiche ich ein Linienmuster.</p>
<p>Weiterhin habe ich die Ecken asymmetrisch abgerundet, so dass der Eindruck des Biegens entsteht.</p>
<p>Zum Schluss bekam der DIV-Container noch einen Drop-Shadow. Dadurch wirkt das Ganze etwas plastischer.</p>
<pre style="font-family: consolas,; font-size: small" class="css" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">CSS-Formatierung</div>
<ol>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #6666ff">.postit</span> p <span style="color: #00aa00">{</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">font-family</span><span style="color: #00aa00">:</span> <span style="color: #ff0000">'Homemade Apple'</span><span style="color: #00aa00">,</span> <span style="color: #993333">cursive</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">font-size</span><span style="color: #00aa00">:</span> <span style="color: #933">2em</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">padding</span><span style="color: #00aa00">:</span> <span style="color: #cc66cc">0</span> <span style="color: #933">2em</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">line-height</span><span style="color: #00aa00">:</span> <span style="color: #933">1.5em</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">margin</span><span style="color: #00aa00">:</span> <span style="color: #cc66cc">0</span> <span style="color: #cc66cc">0</span> <span style="color: #933">1em</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #00aa00">}</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #6666ff">.postit</span> p<span style="color: #3333ff">:last-child </span><span style="color: #00aa00">{</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">margin-bottom</span><span style="color: #00aa00">:</span> <span style="color: #cc66cc">0</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #00aa00">}</span></div>
</li>
</ol>
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">Created by Enrico Reinsdorf - RE-Design</div>
</pre>
<p>Um dann die Absätze den Hintergrund-Linien anzupassen, habe ich den Zeilenabstand und die Schriftgröße verändert. Auch habe ich die Grundeinstellungen für <font face="Courier New">margin</font> und <font face="Courier New">padding</font> angepasst.</p>
<pre style="font-family: consolas,; font-size: small" class="css" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">CSS-Formatierung</div>
<ol>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #6666ff">.postit</span><span style="color: #3333ff">:before </span><span style="color: #00aa00">{</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">content</span><span style="color: #00aa00">:</span> <span style="color: #ff0000">' '</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<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></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">top</span><span style="color: #00aa00">:</span> <span style="color: #933">-10px</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">left</span><span style="color: #00aa00">:</span> <span style="color: #933">40%</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">width</span><span style="color: #00aa00">:</span> <span style="color: #933">130px</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<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></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">display</span><span style="color: #00aa00">:</span> <span style="color: #993333">block</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">background</span><span style="color: #00aa00">:</span> rgba<span style="color: #00aa00">(</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span>.3<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">background</span><span style="color: #00aa00">:</span> -webkit-gradient<span style="color: #00aa00">(</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					linaer<span style="color: #00aa00">,</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #993333">center</span> <span style="color: #993333">center</span><span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					color-stop<span style="color: #00aa00">(</span> <span style="color: #cc66cc">0</span><span style="color: #00aa00">,</span>  rgba<span style="color: #00aa00">(</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span>.2<span style="color: #00aa00">)</span><span style="color: #00aa00">)</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					color-stop<span style="color: #00aa00">(</span> .9<span style="color: #00aa00">,</span>  rgba<span style="color: #00aa00">(</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span>.3<span style="color: #00aa00">)</span><span style="color: #00aa00">)</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					color-stop<span style="color: #00aa00">(</span> <span style="color: #cc66cc">1</span><span style="color: #00aa00">,</span>  rgba<span style="color: #00aa00">(</span><span style="color: #cc66cc">127</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">127</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">127</span><span style="color: #00aa00">,</span>.5<span style="color: #00aa00">)</span><span style="color: #00aa00">)</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">				<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	<span style="color: #000000; font-weight: bold">background</span><span style="color: #00aa00">:</span> -moz-radial-gradient<span style="color: #00aa00">(</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					<span style="color: #993333">center</span> <span style="color: #993333">center</span><span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					ellipse<span style="color: #00aa00">,</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					rgba<span style="color: #00aa00">(</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span>.2<span style="color: #00aa00">)</span><span style="color: #00aa00">,</span> </div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					rgba<span style="color: #00aa00">(</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">255</span><span style="color: #00aa00">,</span>.3<span style="color: #00aa00">)</span> <span style="color: #933">90%</span><span style="color: #00aa00">,</span> </div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">					rgba<span style="color: #00aa00">(</span><span style="color: #cc66cc">127</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">127</span><span style="color: #00aa00">,</span><span style="color: #cc66cc">127</span><span style="color: #00aa00">,</span>.5<span style="color: #00aa00">)</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">				<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-webkit-transform<span style="color: #00aa00">:</span> rotate<span style="color: #00aa00">(</span>-3deg<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	-moz-transform<span style="color: #00aa00">:</span> rotate<span style="color: #00aa00">(</span>-3deg<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li style="background-color: #f4f4f4">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px">	transform<span style="color: #00aa00">:</span> rotate<span style="color: #00aa00">(</span>-3deg<span style="color: #00aa00">)</span><span style="color: #00aa00">;</span></div>
<li>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="color: #00aa00">}</span></div>
</li>
</ol>
<div style="text-align: center; background-color: #4bacc6; color: #ffffff; font-weight: bold">Created by Enrico Reinsdorf - RE-Design</div>
</pre>
<p>Zum Schluss noch der Klebestreifen am oberen Rand des Zettels. Dieser wird mit der Pseudo-Klasse <font face="Courier New">:before</font> und einem Leerzeichen realisiert. Durch die absolute Positionierung und einer kleinen Rotation wirkt das Ganze doch recht realistisch. Hinzu kommt dass die Farbe der Streifens durch einen Transparenzwert und einen leichten, radialen Verlauf diese Wirkung unterstützt.</p>
<p>Ein kleiner Wermutstropfen bleibt trotz des beeindruckenden Ergebnis übrig, leider funktioniert dieses Beispiel nur in Standardkonformen Browsern, also nicht wirklich im IE8.</p>
<p>Natürlich habe ich diese kleine <a href="http://weblabor.re-design.de/HTML5/PostIt/demo.html">Demo</a> auch online gelegt und ihr bekommt noch den <a href="http://downloads.re-design.de/HTML5/PostIt.zip">Download</a> dazu.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li>Keine weiteren Beiträge gefunden!</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2011/01/19/postit-mit-html5-und-css3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offline Adressbuch</title>
		<link>http://www.re-design.de/2011/01/12/offline-adressbuch/</link>
		<comments>http://www.re-design.de/2011/01/12/offline-adressbuch/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 10:30:39 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[localstorage]]></category>

		<guid isPermaLink="false">http://www.re-design.de/2011/01/12/offline-adressbuch/</guid>
		<description><![CDATA[Gerade habe ich eine kleine JavaScript-Application geschrieben. Schon im Januar 2008 habe ich ein Tutorial veröffentlicht in dem ich erklärt habe, wie man mit PHP und AJAX ein Adressbuch verwirklicht. Nun habe ich diese Anwendung neu geschrieben und das permanente Speichern der Daten in den lokalen Speicher ausgelagert. So kann die Anwendung auch im Offline-Betrieb [...]]]></description>
			<content:encoded><![CDATA[<p>Gerade habe ich eine kleine JavaScript-Application geschrieben. Schon im Januar 2008 habe ich <a title="AJAX-Addressbook-Tutorial" href="http://weblabor.re-design.de/JavaScript/Offline_Adressbuch/addressbook.html">ein Tutorial</a> veröffentlicht in dem ich erklärt habe, wie man mit PHP und AJAX ein Adressbuch verwirklicht. Nun habe ich diese Anwendung neu geschrieben und das permanente Speichern der Daten in den lokalen Speicher ausgelagert. So kann die Anwendung auch im Offline-Betrieb der Browsers betrieben werden.</p>
<p>weiter zur <a title="JavaScript-Application Offline-Addressbook Demohref=" href="http://weblabor.re-design.de/HTML5/Addressbook/addressbook.html">Demo</a> bzw. zum <a title="JavaScript-Application Offline-Addressbook Download" href="http://downloads.re-design.de/HTML5/Offline_Adressbuch/REDAdrbook.zip">Download</a></p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2011/02/24/javascript-grundlagen-4/" title="JavaScript &ndash; Grundlagen">JavaScript &ndash; Grundlagen</a></li><li><a href="http://www.re-design.de/2011/02/24/html-css-grundlagen-2/" title="HTML &amp; CSS &ndash; Grundlagen">HTML &amp; CSS &ndash; Grundlagen</a></li><li><a href="http://www.re-design.de/2011/02/12/javascript-grundlagen-3/" title="JavaScript &ndash; Grundlagen">JavaScript &ndash; Grundlagen</a></li><li><a href="http://www.re-design.de/2011/01/15/javascript-grundlagen-2/" title="JavaScript &ndash; Grundlagen">JavaScript &ndash; Grundlagen</a></li><li><a href="http://www.re-design.de/2010/12/20/html5-buch/" title="HTML5 &ndash; Buch">HTML5 &ndash; Buch</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2011/01/12/offline-adressbuch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web-Editor auf Basis von HTML5, CSS und JavaScript</title>
		<link>http://www.re-design.de/2010/12/23/web-editor-auf-basis-von-html5-css-und-javascript/</link>
		<comments>http://www.re-design.de/2010/12/23/web-editor-auf-basis-von-html5-css-und-javascript/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 15:08:00 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://www.re-design.de/2010/12/23/web-editor-auf-basis-von-html5-css-und-javascript/</guid>
		<description><![CDATA[Gerade habe ich ein kleines Experiment mit den Möglichkeiten von HTML5 gemacht. Bis jetzt gibt es ja schon viele Online-Editoren, so genannte WYSIWYG-Editoren. Leider funktionieren viel nur mit iframes, ein Tag den ich persönlich nicht mag. Nach dem Lesen des HTML5-Buches von Peter Kröner erstellte ich mir einen kleinen eigenen Editor. Durch das contenteditable-Attribute kann [...]]]></description>
			<content:encoded><![CDATA[<p>Gerade habe ich ein kleines Experiment mit den Möglichkeiten von HTML5 gemacht. Bis jetzt gibt es ja schon viele Online-Editoren, so genannte <abbr title="What you see is what you get">WYSIWYG</abbr>-Editoren. Leider funktionieren viel nur mit <code>iframes</code>, ein Tag den ich persönlich nicht mag. Nach dem Lesen des HTML5-Buches von Peter Kröner erstellte ich mir einen kleinen eigenen Editor.</p>
<p>Durch das <code>contenteditable</code>-Attribute kann jeder Inhalt eines beliebige HTML-Tag von Benutzer geändert werden. Eine wunderbare Sache! So habe ich mit ein bisschen CSS für die Formatierung und JavaScript für das Ein- und Ausschalten eine ersten Entwurf eines Online-Editors geschaffen.</p>
<p>Hier geht es zur <a href="http://weblabor.re-design.de/HTML5/WebEditor/">Demonstration</a> und hier findet ihr den <a href="http://downloads.re-design.de/HTML5/WebEditor.zip">Download</a>.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2010/12/20/html5-buch/" title="HTML5 &ndash; Buch">HTML5 &ndash; Buch</a></li><li><a href="http://www.re-design.de/2010/11/05/webdesignaufbau/" title="Webdesign&ndash;Aufbau">Webdesign&ndash;Aufbau</a></li><li><a href="http://www.re-design.de/2010/10/08/webdesigneinzelcoaching/" title="Webdesign&ndash;Einzelcoaching">Webdesign&ndash;Einzelcoaching</a></li><li><a href="http://www.re-design.de/2010/10/08/webprogrammierung-mit-html-und-css/" title="Webprogrammierung mit HTML und CSS">Webprogrammierung mit HTML und CSS</a></li><li><a href="http://www.re-design.de/2010/10/08/html-aufbau/" title="HTML Aufbau">HTML Aufbau</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2010/12/23/web-editor-auf-basis-von-html5-css-und-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>12 Animationen für Flash CS4</title>
		<link>http://www.re-design.de/2009/05/06/12-animationen-fur-flash-cs4/</link>
		<comments>http://www.re-design.de/2009/05/06/12-animationen-fur-flash-cs4/#comments</comments>
		<pubDate>Wed, 06 May 2009 06:44:19 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.re-design.de/?p=503</guid>
		<description><![CDATA[Auf der Adobe Developer Seite wurde 12 neue Tutorials für Flash CS4 hinterlegt, in den Möglichkeiten zur Animationserstellung erklärt wird. Animation Learning Guide for Flash CS4 Professional &#124; Adobe Developer Connection. Ähnliche BeiträgeSkype-AnimationFlash GrundlagenFlash &#8211; Grundlagen und AufbauFlash Programmierung &#8211; LR Health &#38; BeautyFlash Grundlagen]]></description>
			<content:encoded><![CDATA[<p>Auf der Adobe Developer Seite wurde 12 neue Tutorials für Flash CS4 hinterlegt, in den Möglichkeiten zur Animationserstellung erklärt wird.</p>
<p><a href="http://www.adobe.com/devnet/flash/learning_guide/animation/">Animation Learning Guide for Flash CS4 Professional | Adobe Developer Connection</a>.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/03/15/skype-animation/" title="Skype-Animation">Skype-Animation</a></li><li><a href="http://www.re-design.de/2010/12/08/flash-grundlagen-5/" title="Flash Grundlagen">Flash Grundlagen</a></li><li><a href="http://www.re-design.de/2010/11/27/flash-grundlagen-und-aufbau/" title="Flash &ndash; Grundlagen und Aufbau">Flash &ndash; Grundlagen und Aufbau</a></li><li><a href="http://www.re-design.de/2010/11/03/flash-programmierung-lr-health-beauty/" title="Flash Programmierung &#8211; LR Health &amp; Beauty">Flash Programmierung &#8211; LR Health &amp; Beauty</a></li><li><a href="http://www.re-design.de/2010/10/31/flash-grundlagen-4/" title="Flash Grundlagen">Flash Grundlagen</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2009/05/06/12-animationen-fur-flash-cs4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skype-Animation</title>
		<link>http://www.re-design.de/2008/03/15/skype-animation/</link>
		<comments>http://www.re-design.de/2008/03/15/skype-animation/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 10:54:57 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=118</guid>
		<description><![CDATA[Da ich meinen Laptop gerade neu installiert habe, war ich seit langem mal wieder auf der Website von Skype. Dabei ist mir erst jetzt aufgefallen, das sie unter &#34;use skype&#34; eine tolle Animation haben. Erst dachte ich es w&#228;re, wie &#252;blich, mit Flash gemacht worden. Aber beim genaueren hinsehen, habe ich schnell festgestellt, dass das [...]]]></description>
			<content:encoded><![CDATA[<p>Da ich meinen Laptop gerade neu installiert habe, war ich seit langem mal wieder auf der <a href="http://www.skype.com/intl/de/" rel="nofollow">Website von Skype</a>. Dabei ist mir erst jetzt aufgefallen, das sie unter &quot;<a href="http://www.skype.com/intl/de/useskype/" rel="nofollow">use skype</a>&quot; eine tolle Animation haben. Erst dachte ich es w&#228;re, wie &#252;blich, mit Flash gemacht worden. Aber beim genaueren hinsehen, habe ich schnell festgestellt, dass das ganze komplett in JavaScript umgesetzt wurde.</p>
<p>Ein Kompliment an dieser Stelle von mir. Die Animation wird sehr schnell geladen, l&#228;uft fl&#252;ssig ab und reagiert sogar leicht auf die Mausbewegungen. So wird bestimmt irgendwann einmal Flash komplett durch offene Standards ersetzt. Nicht das ich Flash nicht mag, aber hier findet man ein gutes Beispiel wie es Pluginfrei funktioniert.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2009/05/06/12-animationen-fur-flash-cs4/" title="12 Animationen für Flash CS4">12 Animationen für Flash CS4</a></li><li><a href="http://www.re-design.de/2011/02/24/javascript-grundlagen-4/" title="JavaScript &ndash; Grundlagen">JavaScript &ndash; Grundlagen</a></li><li><a href="http://www.re-design.de/2011/02/12/javascript-grundlagen-3/" title="JavaScript &ndash; Grundlagen">JavaScript &ndash; Grundlagen</a></li><li><a href="http://www.re-design.de/2011/01/15/javascript-grundlagen-2/" title="JavaScript &ndash; Grundlagen">JavaScript &ndash; Grundlagen</a></li><li><a href="http://www.re-design.de/2011/01/12/offline-adressbuch/" title="Offline Adressbuch">Offline Adressbuch</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2008/03/15/skype-animation/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>vereinfachter CSS-Import von verschiedenen Medien</title>
		<link>http://www.re-design.de/2008/02/23/vereinfachter-css-import-von-verschiedenen-medien/</link>
		<comments>http://www.re-design.de/2008/02/23/vereinfachter-css-import-von-verschiedenen-medien/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 23:28:50 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=111</guid>
		<description><![CDATA[In meinem letzten Artikel habe ich &#252;ber die Probleme beim Import von externen CSS-Dateien berichtet. Nun habe ich eine vereinfachten Import gefunden, denn das Einbinden von bis zu 6 Dateien bl&#228;ht nicht nur der Quellcode auf, sondern sieht auch irgendwie un&#252;bersichtlich aus. Ich wei&#223;, diese Idee ist nicht unbedingt die neuste, aber sie gef&#228;llt mir [...]]]></description>
			<content:encoded><![CDATA[<p>In meinem letzten Artikel habe ich &#252;ber die Probleme beim <a title="CSS Import macht Probleme" href="http://www.re-design.de/workbook/index.php?p=110" rel="relatesed">Import von externen <abbr title="Cascading Stylesheet">CSS</abbr>-Dateien</a> berichtet. Nun habe ich eine vereinfachten Import gefunden, denn das Einbinden von bis zu 6 Dateien bl&#228;ht nicht nur der Quellcode auf, sondern sieht auch irgendwie un&#252;bersichtlich aus.</p>
<p>Ich wei&#223;, diese Idee ist nicht unbedingt die neuste, aber sie gef&#228;llt mir und deshalb schreibe ich dar&#252;ber</p>
<p><span id="more-111"></span></p>
<p>Also, im Grunde reicht es, wie gehabt, &#252;ber den <code>&lt;link&gt;</code>-Tag die externen <abbr title="Cascading Stylesheet">CSS</abbr>-Dateien einzubinden. Diese mal werden aber nicht alle direkt per Link eingebunden, sondern nur eine zentrale Verwaltungsdatei pro Ausgabemedium, die dann die Restlichen nachl&#228;dt.</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   1:</span> <span style="color: #0000ff">&lt;!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">html</span> <span style="color: #ff0000">PUBLIC</span> <span style="color: #0000ff">&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span> <span style="color: #0000ff">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span> <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #ff0000">lang</span><span style="color: #0000ff">=&quot;de&quot;</span> <span style="color: #ff0000">xml:lang</span><span style="color: #0000ff">=&quot;de&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   3:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   4:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">meta</span> <span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">=&quot;Content-Type&quot;</span> <span style="color: #ff0000">content</span><span style="color: #0000ff">=&quot;text/html; charset=utf-8&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   5:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span>RE-Design - CSS - externe Stylesheets<span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   6:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">link</span> <span style="color: #ff0000">rel</span><span style="color: #0000ff">=&quot;stylesheet&quot;</span> <span style="color: #ff0000">href</span><span style="color: #0000ff">=&quot;screen/zentral.css&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;text/css&quot;</span> <span style="color: #ff0000">media</span><span style="color: #0000ff">=&quot;screen&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   7:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">link</span> <span style="color: #ff0000">rel</span><span style="color: #0000ff">=&quot;stylesheet&quot;</span> <span style="color: #ff0000">href</span><span style="color: #0000ff">=&quot;print/zentral.css&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;text/css&quot;</span> <span style="color: #ff0000">media</span><span style="color: #0000ff">=&quot;screen&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   8:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">link</span> <span style="color: #ff0000">rel</span><span style="color: #0000ff">=&quot;stylesheet&quot;</span> <span style="color: #ff0000">href</span><span style="color: #0000ff">=&quot;handheld/zentral.css&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;text/css&quot;</span> <span style="color: #ff0000">media</span><span style="color: #0000ff">=&quot;screen&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   9:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  10:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span> <span style="color: #ff0000">dir</span><span style="color: #0000ff">=&quot;ltr&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  11:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  12:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  13:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<p>Die zentrale Medien-Datei bekommt dann folgenden Code:</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   1:</span> <span style="color: #008000">/* CSS Document */</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   2:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   3:</span> <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'reset.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   4:</span> <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'layout.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   5:</span> <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'design.css'</span>);</pre>
</p></div>
</div>
<p>Es gibt also f&#252;r jedes Ausgabe-Design einen eigenen Style-Ordner in dem dann jeweils eine <abbr title="Cascading Stylesheet">CSS</abbr>-Datei f&#252;r den global Reset, das grundlegende Layout und die weiteren Design-Angaben, wie z.B. Farb- und Typographie-Angaben, definiert werden.</p>
<h4>@Media-Regel</h4>
<p>Ein weitere Ansatz w&#228;re die Nutzung der <code>@import</code>-Regel von <abbr title="Cascading Stylesheet">CSS</abbr>. Diesen habe ich aber leider noch nicht in allen, heutzutage genutzten Browsern getestet. Hierbei reicht es wieder in der <abbr title="Hypertext Markup Language">HTML</abbr>-Datei nur eine externe CSS-Datei einzubinden und in der <abbr title="Cascading Stylesheet">CSS</abbr>-Datei werden die nachzuladenen Datei durch die <code>@media</code>-Regel von einander getrennt.</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   1:</span> <span style="color: #0000ff">&lt;!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">html</span> <span style="color: #ff0000">PUBLIC</span> <span style="color: #0000ff">&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span> <span style="color: #0000ff">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span> <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #ff0000">lang</span><span style="color: #0000ff">=&quot;de&quot;</span> <span style="color: #ff0000">xml:lang</span><span style="color: #0000ff">=&quot;de&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   3:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   4:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">meta</span> <span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">=&quot;Content-Type&quot;</span> <span style="color: #ff0000">content</span><span style="color: #0000ff">=&quot;text/html; charset=utf-8&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   5:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span>RE-Design - CSS - externe Stylesheets<span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   6:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">link</span> <span style="color: #ff0000">rel</span><span style="color: #0000ff">=&quot;stylesheet&quot;</span> <span style="color: #ff0000">href</span><span style="color: #0000ff">=&quot;zentral.css&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;text/css&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   7:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   8:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   9:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span> <span style="color: #ff0000">dir</span><span style="color: #0000ff">=&quot;ltr&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  10:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  11:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   1:</span> <span style="color: #008000">/* CSS Document */</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   2:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   3:</span> <span style="color: #cc6633">@media</span> screen {</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   4:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'screen/reset.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   5:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'screen/layout.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   6:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'screen/design.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   7:</span> }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   8:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   9:</span> <span style="color: #cc6633">@media</span> print {</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  10:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'print/reset.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  11:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'print/layout.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  12:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'print/design.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  13:</span> }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  14:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  15:</span> <span style="color: #cc6633">@media</span> handheld {</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  16:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'handheld/reset.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  17:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'handheld/layout.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  18:</span>     <span style="color: #cc6633">@import</span> url(<span style="color: #006080">'handheld/design.css'</span>);</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  19:</span> }</pre>
</p></div>
</div>
<p>Wer in diesem Zusammenhang Erfahrung oder vielleicht Verweise zu weiterf&#252;hrenden Informationen hat, kann ja hier einen Kommentar abgeben.</p>
<p>Auf jeden Fall werde ich nat&#252;rlich an der Sache dran bleiben und &#252;ber neue Erkenntnisse berichten.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/04/26/dreamweaver-schulung-fr-den-solar-verlag/" title="Dreamweaver-Schulung f&#252;r den Solar Verlag">Dreamweaver-Schulung f&#252;r den Solar Verlag</a></li><li><a href="http://www.re-design.de/2008/03/01/transcending-css/" title="Transcending CSS">Transcending CSS</a></li><li><a href="http://www.re-design.de/2008/03/01/little-boxes/" title="Little Boxes">Little Boxes</a></li><li><a href="http://www.re-design.de/2008/03/01/das-website-handbuch/" title="Das Website Handbuch">Das Website Handbuch</a></li><li><a href="http://www.re-design.de/2008/02/25/css-seminar-bei-vva/" title="CSS-Seminar bei VVA">CSS-Seminar bei VVA</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2008/02/23/vereinfachter-css-import-von-verschiedenen-medien/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS Import macht Probleme</title>
		<link>http://www.re-design.de/2008/02/11/css-import-macht-probleme/</link>
		<comments>http://www.re-design.de/2008/02/11/css-import-macht-probleme/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 12:38:42 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=110</guid>
		<description><![CDATA[Gestern habe ich bei einem Projekt versucht &#252;ber die @import-Regel in CSS externe Dateien nachzuladen und bin auf eine sehr interessant Problematik gesto&#223;en. &#220;blicherweise importieren ja fast alle Webentwickler und -designer ihre externen CSS-Dateien mit dem HTML eigenen Tag &#60;link rel=&#34;stylesheet&#34; href=&#34;path/to/file.css&#34; type=&#34;text/css&#34; /&#62;. Wenn man nur auch noch unterschiedliche Design f&#252;r die verschiedenen Ausgabemedien [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern habe ich bei einem Projekt versucht &#252;ber die <code>@import-Regel</code> in <acronym title="Cascading Stylesheet">CSS</acronym> externe Dateien nachzuladen und bin auf eine sehr interessant Problematik gesto&#223;en.</p>
<p>&#220;blicherweise importieren ja fast alle Webentwickler und -designer ihre externen <acronym title="Cascading Stylesheet">CSS</acronym>-Dateien mit dem <acronym title="Hypertext Markup Language">HTML</acronym> eigenen Tag <code>&lt;link rel=&quot;stylesheet&quot; href=&quot;path/to/file.css&quot; type=&quot;text/css&quot; /&gt;</code>. Wenn man nur auch noch unterschiedliche Design f&#252;r die verschiedenen Ausgabemedien einbinden m&#246;chte, erweitert man diesen Tag mit dem Attribute <code>media=&quot;screen&quot;</code>.</p>
<p>Um eine bessere Trennung im Design zu bekommen, benutze ich 2 <acronym title="Cascading Stylesheet">CSS</acronym>-Dateien. Eine f&#252;r das Layout und eine f&#252;r die Farben und die Typographie. Nun entsteht aber der unsch&#246;ne Umstand, dass ich f&#252;r jedes Ausgabemedium 2 externe Dateien einbinden muss. Wenn ich also f&#252;r den Bildschirm, den Drucker und den mobilen Endger&#228;ten jeweils ein Design entwerfen, so sind das insgesamt 6 externe <acronym title="Cascading Stylesheet">CSS</acronym>-Dateien, plus einer Normalisierungsdatei. All dies &#252;ber den <code>&lt;link&gt;</code>-Tag zu machen, finde ich umst&#228;ndlich.</p>
<p>Sch&#246;ner w&#228;re es doch man k&#246;nnte nur eine externe <acronym title="Cascading Stylesheet">CSS</acronym>-Datei einbinden und der Rest wird dann von ihr geladen. Dann sieht der Quellcode etwas aufger&#228;umter aus.</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   1:</span> <span style="color: #0000ff">&lt;!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">html</span> <span style="color: #ff0000">PUBLIC</span> <span style="color: #0000ff">&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span> <span style="color: #0000ff">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span> <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #ff0000">lang</span><span style="color: #0000ff">=&quot;de&quot;</span> <span style="color: #ff0000">xml:lang</span><span style="color: #0000ff">=&quot;de&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   3:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   4:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">meta</span> <span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">=&quot;Content-Type&quot;</span> <span style="color: #ff0000">content</span><span style="color: #0000ff">=&quot;text/html; charset=utf-8&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   5:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span>RE-Design - CSS - @import<span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   6:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">style</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;text/css&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   7:</span> /*<span style="color: #0000ff">&lt;!</span>[CDATA[*/</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   8:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   9:</span> @import url('style/import.css');</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  10:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  11:</span> /*]]<span style="color: #0000ff">&gt;</span>*/</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  12:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">style</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">  13:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<p>Wenn man nun in der <acronym title="Cascading Stylesheet">CSS</acronym>-Datei die restlichen Dateien l&#228;dt, w&#228;re ja alles in Ordnung.</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   1:</span> @import url('normalization<span style="color: #cc6633">.css</span>');</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   2:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   3:</span> @import url('screen_layout<span style="color: #cc6633">.css</span>'<span style="color: #006080">) screen;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   4:</span> @import url('screen_design<span style="color: #cc6633">.css</span>'<span style="color: #006080">) screen;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   5:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   6:</span> @import url('print_layout<span style="color: #cc6633">.css</span>'<span style="color: #006080">) print;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   7:</span> @import url('print_design<span style="color: #cc6633">.css</span>'<span style="color: #006080">) print;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   8:</span>&#160; </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   9:</span> @import url('handheld_layout<span style="color: #cc6633">.css</span>'<span style="color: #006080">) handheld;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">  10:</span> @import url('handheld_design<span style="color: #cc6633">.css</span>'<span style="color: #006080">) handheld;</span></pre>
</p></div>
</div>
<p>Doch leider macht an dieser Stelle der Internet Explorer uns wieder einmal einen Strich durch die Rechnung. Denn der ignoriert die <code>@import</code>-Regel wenn sie mit dem Zusatz der Medienausgabe belegt wird. In diesem Fall w&#252;rde also nur die Normalisierungsdatei geladen.</p>
<p>Interessant ist auch, dass mein &#252;ber alles geliebter Opera-Browser nur die <code>screen</code>-Erweiterung versteht und die anderen ignoriert, was bedeutet: er druckt das Screendesign aus.</p>
<h4>Fazit</h4>
<p>Mein Fazit zu diesem Experimentes ist, dass ich <em>leider</em> wieder zur&#252;ck zum <code>&lt;link&gt;</code>-Tag gehen muss, um eine volle Unterst&#252;tzung aller Browser zu haben. Eigentlich schade, denn es ist doch eigentlich eine einfache und bequeme Art zu arbeiten.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/01/28/jahresabonnement-des-spotlight-verlag/" title="Jahresabonnement des Spotlight Verlag">Jahresabonnement des Spotlight Verlag</a></li><li><a href="http://www.re-design.de/2008/01/13/umsetzung-von-print-design/" title="Umsetzung von Print-Design">Umsetzung von Print-Design</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2007/12/20/button-wieder-neu-entdeckt/" title="Button wieder neu entdeckt">Button wieder neu entdeckt</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2008/02/11/css-import-macht-probleme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AJAX Adressbuch</title>
		<link>http://www.re-design.de/2008/01/29/ajax-adressbuch/</link>
		<comments>http://www.re-design.de/2008/01/29/ajax-adressbuch/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 12:37:43 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[adressbuch]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=107</guid>
		<description><![CDATA[In meinem Adventskalender habe ich ein kleines Tutorial über die Erstellung eines Adressbuch per AJAX geschrieben. Leider waren aber die Demodateien nicht direkt benutzbar. Ich habe sie nun korrigiert und stelle sie euch hiermit zur Verfügung. AJAX Adressbuch 1.1 Bugfix: Ich habe eine SQL-Datei hinzugefügt, um die Datenbank schneller zu installieren. Jetzt muss nur noch [...]]]></description>
			<content:encoded><![CDATA[<p>In meinem <a href="http://www.re-design.de/workbook/?p=103" title="Alle Türchen sind offen">Adventskalender</a> habe ich ein kleines Tutorial über die Erstellung eines <a href="http://www.re-design.de/workbook/?p=89" title="AJAX Adressbuh Tutorial Teil 1">Adressbuch per AJAX</a> geschrieben. Leider waren aber die Demodateien nicht direkt benutzbar. Ich habe sie nun korrigiert und stelle sie euch hiermit zur Verfügung.</p>
<ul>
<li> <a href="http://www.re-design.de/workbook/wp-content/uploads/2008/01/ajax-adressbuch-11.zip" title="AJAX Adressbuch 1.1">AJAX Adressbuch 1.1</a></li>
</ul>
<p>Bugfix:</p>
<ol>
<li>Ich habe eine SQL-Datei hinzugefügt, um  die Datenbank schneller zu installieren. Jetzt muss nur noch in der include-Datei der Zugriff auf die Datenbank geregelt werden.</li>
<li>Der init()-Methode des Adressbuches wird jetzt der Form-Container übergeben, so dass das Adressbuch flexibler auf das DOM reagieren kann.</li>
<li>Die Literal-Namen wurden in eine einheitliche Schreibweise (RED_AdrBook, RED_AJAX) umbenannt.</li>
<li>Eine update-Funktion für bestehende Datensätze wurde hinzugefügt.</li>
<li>Eine Lösch-Funktion wurde hinzugefügt. Deswegen wurde ein delete.php-Script, welches einen Datensatz löscht, angelget.</li>
<li>Die Anzahl der Datensätze und der aktuelle Datensatz wird nun im Interface angezeigt.</li>
</ol>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/" title="AJAX Adressbuch &#8211; Tutorial Teil 4">AJAX Adressbuch &#8211; Tutorial Teil 4</a></li><li><a href="http://www.re-design.de/2008/12/21/tag-21-erweiterung-durch-ajax/" title="Tag 21 – Erweiterung durch AJAX">Tag 21 – Erweiterung durch AJAX</a></li><li><a href="http://www.re-design.de/2007/12/24/alle-tuerchen-von-2007-sind-offen/" title="Alle T&#252;rchen von 2007 sind offen">Alle T&#252;rchen von 2007 sind offen</a></li><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2008/01/29/ajax-adressbuch/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AJAX Adressbuch &#8211; Tutorial Teil 4</title>
		<link>http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/</link>
		<comments>http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 00:00:28 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[adressbuch]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=101</guid>
		<description><![CDATA[Nun ist es soweit, heute ist Weihnachten und das letzte Türchen hat sich geöffnet. Der letzte Teil meine Adressbuches steht noch aus und das möchte ich euch jetzt geben. Es ist der serverseitige Teil meine kleinen Weanwendung. Ich habe dazu eine mySQL-Datenbank angelegt und greife mit PHP auf den Datenbestand zu. Ähnlich wie in Teil [...]]]></description>
			<content:encoded><![CDATA[<p>Nun ist es soweit, heute ist Weihnachten und das letzte Türchen hat sich geöffnet. Der letzte Teil meine Adressbuches steht noch aus und das möchte ich euch jetzt geben. Es ist der serverseitige Teil meine kleinen Weanwendung. Ich habe dazu eine <a href="http://www.mysql.com">mySQL-Datenbank</a> angelegt und greife mit PHP auf den Datenbestand zu.</p>
<p><span id="more-101"></span></p>
<p>Ähnlich wie in <a title="AJAX Adressbuch Teil 2" href="http://www.re-design.de/workbook/?p=91">Teil 2</a> und <a title="AJAX Adressbuch Teil 3" href="http://www.re-design.de/workbook/?p=96">Teil 3</a> werde ich mehrere Datei benutzen um alles geordnet zu haben. Aber als erstes die Scripte zum Erzeugen der Datenbank und des Datenbestandes.</p>
<ol class="Sourcecode">
<li><code>CREATE DATABASE `demodb` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE `demodb`;</code></li>
</ol>
<ol class="Sourcecode">
<li><code>CREATE TABLE `mitarbeiter` (</code></li>
<li><code> `id` int(11) NOT NULL auto_increment,</code></li>
<li><code> `nachname` varchar(255) NOT NULL,</code></li>
<li><code> `vorname` varchar(255) NOT NULL,</code></li>
<li><code> `email` varchar(255) NOT NULL,</code></li>
<li><code> `telefon` varchar(255) NOT NULL,</code></li>
<li><code>PRIMARY KEY (`id`)</code></li>
<li><code>); </code></li>
</ol>
<p>Also <a title="phpMyAdmin | MySQL Database Administration Tool" href="http://www.phpmyadmin.net">phpMyAdmin</a>, das ultimative Datenbank-Tool, öffnen und die Codes einfügen. Dazu noch einen Datenbank-Benutzer und ein dazugehöriges Passwort anlegen. In meinem Fall heißt der Benutzer &#8220;<code>demouser</code>&#8221; und sein Passwort ist &#8220;<code>password</code>&#8220;.</p>
<p>Als nächstes lege ich mir immer eine PHP-Datei an, die die Verbindung zur Datenbank regelt. Somit muss ich die Daten nicht in jedes Script hineinschreiben.</p>
<ol class="Sourcecode">
<li><code>&lt;?php</code></li>
<li><code>$connect = mysql_connect('localhost', 'demouser', 'password');</code></li>
<li><code>mysql_select_db('mitarbeiter', $connect);</code></li>
<li><code>?&gt;</code></li>
</ol>
<p>In der Variable <code>$connect</code> wird dann die Verbindung zum Datenbank-Server gespeichert und kann von nun an genutzt werden. Ich habe hier der Einfachheit halber auf Fehlermeldungen verzichtet.</p>
<ol class="Sourcecode">
<li><code>header('Content-Type: text/xml');</code></li>
<li><code>$xml = new DOMDocument('1.0', 'utf-8');</code></li>
<li><code>$root = $xml-&gt;createElement('mitarbeiter');</code></li>
<li><code>$xml-&gt;appendChild($root);</code></li>
<li></li>
<li></li>
<li><code>echo $xml-&gt;saveXML();</code></li>
</ol>
<p>Um mit PHP eine <abbr title="Extensable Markup Language">XML</abbr>-Ausgabe zu erzeugen, reicht der obige Quellcode. Wichtig dabei ist das der richtige Header an den Browser geschickt wird.</p>
<p>Danach wird ein XML-Objekt mit dem Zeichensatz &#8220;utf-8&#8243; generiert. Weiterhin wird ein Hauptknoten erzeugt und an das XML-Dokument dran gehangen. Zum Schluss alles an den Browser geschickt.</p>
<p>Soweit die Grundstruktur der XML-Ausgabe. Aber es fehlen ja noch die eigentlichen Inhalte aus der Datenbank.</p>
<ol class="Sourcecode">
<li><code>&lt;?php</code></li>
<li><code>include_once('include.php');</code></li>
<li></li>
<li><code>$sql = 'SELECT * FROM personen ORDER BY nachname';</code></li>
<li><code>$result = mysql_query($sql, $connect);</code></li>
<li><code>while($rs = mysql_fetch_assoc($result))</code></li>
<li><code>{</code></li>
<li><code> $nachname = $xml-&gt;createElement('nachname');</code></li>
<li><code> $nachname-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['nachname'])));</code></li>
<li><code> $vorname = $xml-&gt;createElement('vorname');</code></li>
<li><code> $vorname-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['vorname'])));</code></li>
<li><code> $email = $xml-&gt;createElement('email');</code></li>
<li><code> $email-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['email'])));</code></li>
<li><code> $telefon = $xml-&gt;createElement('telefon');</code></li>
<li><code> $telefon-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['telefon'])));</code></li>
<li><code> $person = $xml-&gt;createElement('person');</code></li>
<li><code> $person-&gt;setAttribute('id', $rs['id']);</code></li>
<li><code> $person-&gt;appendChild($nachname);</code></li>
<li><code> $person-&gt;appendChild($vorname);</code></li>
<li><code> $person-&gt;appendChild($email);</code></li>
<li><code> $person-&gt;appendChild($telefon);</code></li>
<li><code> $root-&gt;appendChild($person);</code></li>
<li><code>}</code></li>
<li></li>
<li><code>mysql_close($connect);</code></li>
<li><code>?&gt;</code></li>
</ol>
<p>Dazu binde ich als erstes die externe Datei zum Verbinden mit dem Datenbank-Server ein. Danach speichere ich das <abbr title="Structed Query Language">SQL</abbr>-Statement in einer Variablen zwischen und hole von der Datenbank alle Ergebnisse dieser Anfrage.</p>
<p>In der darauffolgenden <code>while</code>-Schleife werden neue Knoten erzeugt und an den Root dran gehangen. Dabei setzt sich der Nachname-Knoten z.B. wie folgt zusammen. Ich erzeuge als erstes einen <code>&lt;nachname&gt;</code>-Tag und hänge dann mit der <code>createTextNode()</code>-Methode einen Text-Knoten dran. Den Text den ich da dran hänge, konvertiere ich zuvor noch mit der <code>iconv()</code>-Funktion in den richtigen Zeichensatz. Zum Schluss hänge ich dem <code>&lt;person&gt;</code>-Tag alle Unterknoten dran.</p>
<p>Soweit die Ausgabe zum Browser, bzw. zu JavaScript und meiner <abbr title="Asyncron JavaScript and XML">AJAX</abbr>-Klasse. Was noch fehlt ist ein Script um Daten von JavaScript in Empfang zu nehmen und in die Datenbank einzufügen.</p>
<ol class="Sourcecode">
<li><code>&lt;?php</code></li>
<li><code>include('include.php');</code></li>
<li><code>$sql = sprintf('REPLACE INTO personen SET</code></li>
<li><code> id=%d, </code></li>
<li><code> nachname="%s", </code></li>
<li><code> vorname="%s", </code></li>
<li><code> email="%s",</code></li>
<li><code> telefon="%s"'</code></li>
<li><code> ,$_POST['f0'],$_POST['f1'],$_POST['f2'],$_POST['f3'],$_POST['f4']);</code></li>
<li><code>mysql_query($sql, $connect);</code></li>
<li><code>mysql_close();</code></li>
<li><code>?&gt;</code></li>
</ol>
<p>Auch hier ist der Quellcode sehr überschaubar. Als erstes binde ich wieder Das Script zum Erzeugen einer Verbindung zum Datenbank-Server ein. Dann speichere ich wieder in einer Variablen das SQL-Statement zwischen. Um ein korrektes Ergebnis zu bekommen, verwende ich hier die sprinf()-Funktion. Diese bietet mir eine kleiner Kontrolle über die übergebenen Werte. Zum Schluss schicke ich das Ganze nur noch an der Server und fertig ist das Einfügen neuer oder das Ändern von bestehenden Datensätzen. Ich verwende dazu immer ganz gern das REPLACE-Statement. Wenn dieses Statement keine ID besitzt wird ein neuer Datensatz erzeugt, ansonsten wird der Bestehende verändert.</p>
<ul>
<li><a title="komplettes Set" href="ftp://weblabor.re-design.de/AJAX-Adressbuch.zip">Download</a></li>
</ul>
<p>So und das war es auch schon mit der serverseitigen Programmierung. Gerade mal 3 kleine Script brauche ich hier um der ganzen Webanwendung auch das Speichern auf dem Server bzw. das Einlesen von Daten hinzuzufügen.</p>
<p>Ich hoffe es hat euch gefallen 24 meist kleine Beträge aus meinen Arbeitsalltag zu lesen. Ich gebe zu, es war nicht immer leicht die Texte rechtzeitig fertig zu stellen und ich verspreche, wie immer und alle, nächstes Jahr rechtzeitig mit den Vorbereitungen zu beginnen.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/01/29/ajax-adressbuch/" title="AJAX Adressbuch">AJAX Adressbuch</a></li><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2009/03/04/einzelcoaching-php-xml-schulung/" title="Einzelcoaching &ndash; PHP-XML Schulung">Einzelcoaching &ndash; PHP-XML Schulung</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AJAX Abressbuch &#8211; Tutorial Teil 3</title>
		<link>http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/</link>
		<comments>http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/#comments</comments>
		<pubDate>Sun, 23 Dec 2007 00:00:24 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Webanwendung]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=96</guid>
		<description><![CDATA[Im dritten Teil meines Tutorials möchte ich euch zeigen wie ich per JavaScript eine Verbindung zum Server aufbaue und Daten zum Server schicke bzw. vom Server hole. Durch die Beschreibung in Teil 1 und Teil 2 meines Tutorials habe ich hoffentlich eine gute Basis geschaffen einen Schritt weiter zu gehen. Ok, als erstes wieder einmal [...]]]></description>
			<content:encoded><![CDATA[<p>Im dritten Teil meines Tutorials möchte ich euch zeigen wie ich per JavaScript eine Verbindung zum Server aufbaue und Daten zum Server schicke bzw. vom Server hole. Durch die Beschreibung in <a title="AJAX Adressbuch Teil 1" href="http://www.re-design.de/workbook/?p=89">Teil 1</a> und <a title="AJAX Adressbuch Teil 2" href="http://www.re-design.de/workbook/?p=91">Teil 2</a> meines Tutorials habe ich hoffentlich eine gute Basis geschaffen einen Schritt weiter zu gehen.</p>
<p><span id="more-96"></span></p>
<p>Ok, als erstes wieder einmal die Zusammenfassung aller Eigenschaften und Methoden der RED-Ajax-Objektes.</p>
<ol class="Sourcecode">
<li><code>// JavaScript Document</code></li>
<li><code>var RED_Ajax =</code></li>
<li><code>{</code></li>
<li><code> req : null,</code></li>
<li><code> url : null,</code></li>
<li><code> method : 'GET',</code></li>
<li><code> async : false,</code></li>
<li><code> body : null,</code></li>
<li><code> headers : [],</code></li>
<li><code> timer : null,</code></li>
<li><code> responseXML : null,</code></li>
<li><code> responseText : null,</code></li>
<li><code> init : function()</code> <code>{</code> <code>},</code></li>
<li><code> run : function()</code> <code>{</code> <code>},</code></li>
<li><code> header : function() </code><code>{</code><code>},<br />
</code></li>
<li><code> response : function()</code> <code>{</code><code>},<br />
</code></li>
<li><code> callback : function() {},</code></li>
<li><code> update : function() {},</code></li>
<li><code> error : function()</code> <code>{</code> <code>}</code></li>
<li><code>}</code></li>
</ol>
<p>Ich werde jetzt nicht alle Eigenschaften im Detail erklären, denn das passiert auf jeden Fall noch bei der Erklärung der einzelnen Methoden. Ich fange lieber direkt mit den Methoden an.</p>
<ol class="Sourcecode">
<li><code> init : function()</code></li>
<li><code> {</code></li>
<li><code> this.req = (window.XMLHttpRequest)</code></li>
<li><code> ?</code></li>
<li><code> new XMLHttpRequest()</code></li>
<li><code> :</code></li>
<li><code> ((window.ActiveXObject)</code></li>
<li><code> ?</code></li>
<li><code> new ActiveXObject('Microsoft.XMLHTTP')</code></li>
<li><code> :</code></li>
<li><code> null</code></li>
<li><code> );</code></li>
<li></li>
<li><code> if(this.req != null)</code></li>
<li><code> {</code></li>
<li><code> this.req.onreadystatechange = this.response;</code></li>
<li><code> }</code></li>
<li><code> },</code></li>
</ol>
<p>Wie immer gibt es bei mir eine <code>init()</code>-Methode. Diese hier legt in der reg-Eigenschaft ein Objekt ab, welche eine Verbindung zum Server aufbauen kann. Da jeder Browser ein anderes Objekt dazu benutzt, muss hier immer erst noch geprüft werden ob das ganze auch funktioniert. Wenn alles geklappt hat wird noch auf den readystatechange-Event ein Methodenverweise gemacht.</p>
<ol class="Sourcecode">
<li><code> run : function(u,m,f,b)</code></li>
<li><code> {</code></li>
<li><code> this.method = m || this.method;</code></li>
<li><code> this.async = f || this.async;</code></li>
<li><code> this.body = b || this.body;</code></li>
<li><code> this.url = u;</code></li>
<li><code> if(this.req != null)</code></li>
<li><code> {</code></li>
<li><code> this.req.open(this.method, this.url, this.async);</code></li>
<li><code> if(this.headers.length &gt; 0)</code></li>
<li><code> {</code></li>
<li><code> for(var i=0; i&lt;this.headers.length; i+=2)</code></li>
<li><code> {</code></li>
<li><code> this.req.setRequestHeader(this.headers[i], this.headers[i+1]);</code></li>
<li><code> }</code></li>
<li><code> }</code></li>
<li><code> this.req.send(this.body);</code></li>
<li><code> }</code></li>
<li><code> },</code></li>
</ol>
<p>Um dann aber auch die eigentlichen Daten vom bzw. zum Server zu schicken gibt es die <code>run()</code>-Methode. Ihr kann bis zu 4 Parameter mit übergeben werden, wobei der erste, die <abbr title="Uniform Resource Location">URL</abbr>-Angabe, nur Pflicht ist. Die weiteren Parameter sind die Übertragungsmethode (<code>GET</code> oder <code>POST</code>), ob die Ubertragung synchron (<code>true</code>) oder asynchron (<code>false</code>) stattfinden soll und der beim Senden mitgelieferte Body.</p>
<p>Bevor der Request aber geschickt wird, werden die im Vorfeld gesetzte Header-Angaben verarbeitet.</p>
<ol class="Sourcecode">
<li><code> header : function(k,v)</code></li>
<li><code> {</code></li>
<li><code> if(k != null)</code></li>
<li><code> {</code></li>
<li><code> this.headers.push(k);</code></li>
<li><code> this.headers.push(v);</code></li>
<li><code> }</code></li>
<li><code> }, </code></li>
</ol>
<p>Um eine Header-Angabe, die später mit übertragen werden soll, zu setzten, reicht es die <code>header()</code>-Methode mit ihren beiden Parametern <code>key</code> und <code>value</code> aufzurufen.</p>
<ol class="Sourcecode">
<li><code> response : function()</code></li>
<li><code> {</code></li>
<li><code> var a = ajax.req;</code></li>
<li><code> switch(a.readyState)</code></li>
<li><code> {</code></li>
<li><code> case 1:</code></li>
<li><code> break;</code></li>
<li><code> case 2:</code></li>
<li><code> this.timer = window.setTimeout(this.error, 10000);</code></li>
<li><code> break;</code></li>
<li><code> case 3: </code></li>
<li><code> this.timer = window.setTimeout(this.error, 10000);</code></li>
<li><code> break;</code></li>
<li><code> case 4:</code></li>
<li><code> window.clearTimeout(this.timer);</code></li>
<li><code> if(a.status==200 || a.statusText=='OK')</code></li>
<li><code> {</code></li>
<li><code> RED_Ajax.responseXML = a.responseXML;</code></li>
<li><code> RED_Ajax.responseText = a.responseText;</code></li>
<li><code> RED_Ajax.callback();</code></li>
<li><code> }</code></li>
<li><code> }</code></li>
<li><code> }, </code></li>
</ol>
<p>Beim Ausführen der Sende- bzw. Empfang-Vorganges durchläuft das Verbindungsobjekt verschiedene Stadien, die in der <code>response()</code>-Methode geprüft werden. Folgende Stati gibt es:</p>
<ol>
<li>Das Verbindungsobjekt existiert aber die <code>open()</code>-Methode wurde noch nicht aufgerufen.</li>
<li>Die <code>send()</code>-Methode wurde noch nicht ausgeführt.</li>
<li>Die <code>send()</code>-Methode wurde zwar ausgeführt, aber der Server hat noch nichts zurück geschickt.</li>
<li>Der Server hat angefangen Daten zu übermitteln, aber ist damit noch nicht fertig.</li>
<li>Der Übermittlungsvorgang wurde beendet und alle Date sind angekommen.</li>
</ol>
<p>Um den Übertragungsvorgang auch irgendwann abzubrechen, falls ein Fehler aufgetreten ist, habe ich im Status 2 und 3 eine Timeout eingefügt und hebe ihn im Status 4 wieder auf, da da ja alles angekommen ist. Wenn dann auch noch der Server mit &#8220;alles ok&#8221; übertragen hat, dann werden die übertragenen Werte einmal als reine Text und als <abbr title="Extentable Markup Language">XML</abbr>-Objekt abgespeichert. Zum Schluss rufe ich nur noch die <code>callback()</code>-Methode auf.</p>
<ol class="Sourcecode">
<li><code> callback : function(){},</code></li>
<li><code> update : function(){}</code>,</li>
</ol>
<p>Meine <code>callback()</code>-Methode ist ein sogenannter Huck und muss erst noch definiert werden. Ich habe deshalb offen gelassen, weil die Verarbeitung der übertragenen Daten sehr unterschiedlich sein kann. In Teil 2 habe ich erklärt wo und wie man diese Definition einsetzt.</p>
<p>Auch habe ich eine <code>update()</code>-Methode zwar eingesetzt, aber noch nicht definiert. Hier lasse ich mir die Möglichkeit offen zu einem späteren Zeitpunkt einen zyklischen Aufruf des Server zu bauen.</p>
<ol class="Sourcecode">
<li><code> error : function()</code></li>
<li><code> {</code></li>
<li><code> alert('Die Zeit ist um!');</code></li>
<li><code> this.req.abort();</code></li>
<li><code> }</code></li>
</ol>
<p>Meine letzte Methode ist die <code>error()</code>-Methode. Sie dient ausschließlich dazu bei zu langen Ladezeiten diesen Vorgang abzugrechen.</p>
<p>Wie immer gibt es zum Schluss den Download der beschriebenen Dateien:</p>
<ul>
<li><a title="RED_AJAX Datei" href="ftp://weblabor.re-design.de/AJAX-Adressbuch.zip">RED_AJAX Datei</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/" title="AJAX Adressbuch &#8211; Tutorial Teil 4">AJAX Adressbuch &#8211; Tutorial Teil 4</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AJAX Adressbuch &#8211; Tutorial Teil 2</title>
		<link>http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/</link>
		<comments>http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 00:00:22 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=91</guid>
		<description><![CDATA[Nachdem ich gestern erklärt habe wie die HTML-Datei, das dazugehörige CSS-Design und die XML-Datenstruktur aufgebaut sind, werde ich mich nun der clientseitigen Programmierung widmen. Die Programmierung besteht hier nun aus 2 JavaScript-Dateien. Die eine ist für die Verarbeitung der Daten und die andere regelt die Übertragung zum und vom Server. Fangen wir nun mir der [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich <a title="AJAX Adressbuch Teil 1" href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/">gestern</a> erklärt habe wie die <abbr title="Hypertext Markup Language">HTML</abbr>-Datei, das dazugehörige <abbr title="Cascading Style Sheet">CSS</abbr>-Design und die <abbr title="Extentable Markup Language">XML</abbr>-Datenstruktur aufgebaut sind, werde ich mich nun der clientseitigen Programmierung widmen.</p>
<p>Die Programmierung besteht hier nun aus 2 JavaScript-Dateien. Die eine ist für die Verarbeitung der Daten und die andere regelt die Übertragung zum und vom Server.</p>
<p><span id="more-91"></span></p>
<p>Fangen wir nun mir der Verarbeitung an. Um in diesem Stadium der Programmierung nicht schon die serverseitigen Scripte geschrieben zu haben, arbeite ich immer mit einer Demo-XML-Datei.</p>
<ol class="Sourcecode">
<li><code>// JavaScript Document</code></li>
<li><code>var RED_Adrbook = </code></li>
<li><code>{</code></li>
<li><code> data : [],</code></li>
<li><code> alerts : </code><code>{</code> <code>},</code></li>
<li><code> zeiger : 0,</code></li>
<li><code> init : function()</code><code>{</code> <code>},</code></li>
<li><code> loadXML : function()</code> <code>{ </code><code>},</code></li>
<li><code> loadData : function(xml)</code> <code>{</code> <code>},</code></li>
<li><code> loadEvents : function()</code> <code>{</code> <code>},</code></li>
<li><code> loadSlides : function()</code> <code>{</code> <code>},</code></li>
<li><code> pager : function()</code> <code>{</code> <code>},</code></li>
<li><code> add : function()</code> <code>{</code> <code>},</code></li>
<li><code> insert : function()</code> <code>{</code> <code>},</code></li>
<li><code> edit : function()</code> <code>{},</code></li>
<li><code> update : function() </code><code>{</code><code>},</code></li>
<li><code> remove : function() {</code><code>}</code></li>
<li><code>}</code></li>
</ol>
<p>Wie schon bei den letzten Beispielen verwende ich bei solcher Programmierung gerne Literale. Die Eingenschaft data dient dann später dazu alle vom Server bekommen Kontakte in einen einzigen Array zu sammeln. Über die Eigenschaft zeiger wird dann das Weiterschalten zum nächsten Mitarbeiter geregelt. Die letzte Eigenschaft innerhalb des Objektes verwende ich um Meldungen vom System an den Benutzer zu kapseln. Ich habe mir dazu ein Unterobjekt angelegt.</p>
<p>Kommen wir nun zu den einzelnen Methoden des Obejktes:</p>
<ol class="Sourcecode">
<li><code> init : function()</code></li>
<li><code> {</code></li>
<li><code> RED_Ajax.init();</code></li>
<li><code> this.loadXML();</code></li>
<li><code> },</code></li>
</ol>
<p>In fast jedem Objekt lege ich eine <code>init()</code>-Methode an, um alle wichtigen Prozesse zu starten, die vor der eigentlichen Benutzung durch den Anwender gebraucht werden. In diesem Fall ist das die Vorbereitung der Verbindung zum Server und dann das Laden der XML-Daten vom Server.</p>
<ol class="Sourcecode">
<li><code> loadXML : function()</code></li>
<li><code> {</code></li>
<li><code> RED_Ajax.callback = function()</code></li>
<li><code> {</code></li>
<li><code> RED_Adrbook.loadData(this.responseXML);</code></li>
<li><code> };</code></li>
<li><code> RED_Ajax.run('mitarbeiter.xml','GET',false);</code></li>
<li><code> },</code></li>
</ol>
<p>Um die empfangen XML-Daten auch später zu verarbeiten, muss der Huck, also die <code>callback()</code>-Methode des RED_AJAX-Objektes definiert werden. Ich rufe hier die <code>loadData()</code>-Methode des <code>RED_AdrBook</code> auf und übergebe ihr die empfangenen XML-Werte. Nach allen Vorbereitungen rufe ich die <code>run()</code>-Methode auf und übergebe ihr als erstes die zu ladende Datei, dann mit welcher Methode die Übertragung stattfinden soll und zum Schluss ob es sich um eine synchrone Übertragung handelt. Nur selten ändern sich die beiden letzten Werte.</p>
<ol class="Sourcecode">
<li><code> loadData : function(xml)</code></li>
<li><code> {</code></li>
<li><code> this.data = [];</code></li>
<li><code> var personen = xml.getElementsByTagName('person');</code></li>
<li><code> for(var i=0; i&lt;personen.length; i++)</code></li>
<li><code> {</code></li>
<li><code> var person = {</code></li>
<li><code> Nachname : personen[i].childNodes[0].firstChild.nodeValue,</code></li>
<li><code> Vorname : personen[i].childNodes[1].firstChild.nodeValue,</code></li>
<li><code> Email : personen[i].childNodes[2].firstChild.nodeValue,</code></li>
<li><code> Telefon : personen[i].childNodes[3].firstChild.nodeValue,</code></li>
<li><code> ID : personen[i].getAttribute('id')</code></li>
<li><code> };</code></li>
<li><code> this.data.push(person);</code></li>
<li><code> }</code></li>
<li><code> this.loadEvents();</code></li>
<li><code> this.loadSlides();</code></li>
<li><code> },</code></li>
</ol>
<p>Nachdem alle Daten vom Server übertragen wurden, kann die eigentliche Verarbeitung beginnen. Als erstes leere ich den Array und hole mir aus den übergebenen Wert einen Array mit allen Mitarbeitern. Diesen Array durchlaufe ich und erzeuge mir ein eigenes Personen-Objekt zur späteren besseren Verarbeitung. Dieses Personen-Objekt wird dann im Data-Array abgespeichert.</p>
<p>Zum Schluss müssen natürlich noch die Events für die Buttons festgelegt werden und das aktuelle Slide, also der aktuelle, hier der erste, Mitarbeiter angezeigt werden.</p>
<ol class="Sourcecode">
<li><code> loadEvents : function()</code></li>
<li><code> {</code></li>
<li><code> document.getElementById('btn_next').onclick = function() </code><code>{</code></li>
<li><code> RED_Adrbook.pager(true);</code></li>
<li><code> }</code></li>
<li><code> document.getElementById('btn_prev').onclick = function() {</code></li>
<li><code> RED_Adrbook.pager(false);</code></li>
<li><code> }</code></li>
<li><code> document.getElementById('btn_edit').onclick = function() {</code></li>
<li><code> RED_Adrbook.edit();</code></li>
<li><code> </code><code>}</code></li>
<li><code> document.getElementById('btn_add').onclick = function() {</code></li>
<li><code> RED_Adrbook.add();</code></li>
<li><code> }</code></li>
<li><code> document.getElementById('btn_remove').onclick = function() {</code></li>
<li><code> RED_Adrbook.remove();</code></li>
<li><code> }</code></li>
<li><code> },</code></li>
</ol>
<p>Das festlegen welche Funktionen welcher Button hat ist recht einfach, da es dafür separate Methoden gibt.</p>
<ol class="Sourcecode">
<li><code> loadSlides : function()</code></li>
<li><code> {</code></li>
<li><code> var s = document.getElementById('RED_Book').getElementsByTagName('span');</code></li>
<li><code> s[0].innerHTML = this.zeiger;</code></li>
<li><code> s[1].innerHTML = this.data[this.zeiger]['Nachname'];</code></li>
<li><code> s[2].innerHTML = this.data[this.zeiger]['Vorname'];</code></li>
<li><code> s[4].innerHTML = this.data[this.zeiger]['Telefon'];</code></li>
<li><code> var link = '&lt;a href="mailto:';</code></li>
<li><code> link += this.data[this.zeiger]['Email'];</code></li>
<li><code> link += '"&gt;';</code></li>
<li><code> link += this.data[this.zeiger]['Email'];<br />
</code></li>
<li><code> link += '&lt;/a&gt;';</code></li>
<li><code> s[3].innerHTML = link;</code></li>
<li><code> },</code></li>
</ol>
<p>Bei Laden des aktuelle Slides werden als erstes alle <code>&lt;span&gt;</code>-Tags aus dem Formular mit der ID <code>RED_Book</code> in eine Array geladen. Dann werden die Daten aus dem aktuellen Silde per <code>innerHTML</code> in die Spans zugewiesen. Das <code>this.zeiger</code> immer den aktuellen Zeiger repräsentiert ist das ganze kein größeres Problem. Selbst eine <code>mailto:</code>-Link zu erzeugen stellt keine große Hürde da.</p>
<ol class="Sourcecode">
<li><code> pager : function(d)</code></li>
<li><code> {</code></li>
<li><code> if(d)</code></li>
<li><code> {</code></li>
<li><code> (this.zeiger == this.data.length-1) ?alert(this.alerts.last) :this.zeiger++; </code></li>
<li><code> }</code></li>
<li><code> else</code></li>
<li><code> {</code></li>
<li><code> (this.zeiger == 0) ?alert(this.alerts.first) :this.zeiger--;</code></li>
<li><code> }</code></li>
<li><code> this.loadSlides();</code></li>
<li><code> },</code></li>
</ol>
<p>Für der vor und zurück Blättern gibt es eine kleine und einfache Methode, die als erstes prüft wo der Zeiger steht und am Ende bzw. am Anfang der Liste diesen korrigiert. Dann wird noch per <code>loadSlides()</code>-Methode der richtige Mitarbeiter angezeigt.</p>
<ol class="Sourcecode">
<li><code> add : function()</code></li>
<li><code> {</code></li>
<li><code> var s = document.getElementById('RED_Book').getElementsByTagName('span');</code></li>
<li><code> s[0].innerHTML = 'neuer Datensatz';</code></li>
<li><code> s[0].innerHTML += '&lt;input type="hidden" name="f0" value="" /&gt;';</code></li>
<li><code> s[1].innerHTML = '&lt;input type="text" name="f1" /&gt;';</code></li>
<li><code> s[2].innerHTML = '&lt;input type="text" name="f2" /&gt;';</code></li>
<li><code> s[3].innerHTML = '&lt;input type="text" name="f3" /&gt;';</code></li>
<li><code> s[4].innerHTML = '&lt;input type="text" name="f4" /&gt;';</code></li>
<li><code> s[4].innerHTML += '&lt;br /&gt;';s[4].innerHTML += '&lt;input type="button" id="btn_save" value="speichern" /&gt;';</code></li>
<li><code> s[4].innerHTML += '&lt;input type="button" id="btn_cancel" value="abbrechen" /&gt;';</code></li>
<li><code> document.getElementById('btn_save').onclick = function()</code> <code>{</code></li>
<li><code> RED_Adrbook.insert(document.getElementById('RED_Book'));</code></li>
<li><code> };</code></li>
<li><code> document.getElementById('btn_cancel').onclick = function()</code> <code>{</code></li>
<li><code> RED_Adrbook.loadSlides();</code></li>
<li><code> };</code></li>
<li><code> document.getElementsByTagName('input')[1].focus();</code></li>
<li><code> },</code></li>
</ol>
<p>In der <code>add()</code>-Methode werden die Inhalte der <code>&lt;span&gt;</code>-Tags gelöscht und durch leere Eingabefelder erstetzt. Zusätzlich wird ein Speichern- und Cancel-Button eingefügt und ihnen natürlich auch noch die richtige Funktionalität zugewiesen. Zum Schluss bekommt das erste Eingabefeld den Focus, so dass der Anwender direkt losschreiben kann.</p>
<ol class="Sourcecode">
<li><code> insert : function(form)</code></li>
<li><code> {</code></li>
<li><code> var inputs = form.getElementsByTagName('input');</code></li>
<li><code> var body = 'f0='+escape(inputs[0].value)+'&amp;'+</code> <code>'f1='+escape(inputs[1].value)+'&amp;'+</code> <code>'f2='+escape(inputs[2].value)+'&amp;'+</code> <code>'f3='+escape(inputs[3].value)+'&amp;'+</code> &#8216;<code>f4='+escape(inputs[4].value);</code></li>
<li><code> RED_Ajax.callback = function()</code></li>
<li><code> {</code></li>
<li><code> RED_Adrbook.loadXML();</code></li>
<li><code> };</code></li>
<li><code> RED_Ajax.header('Content-Type', 'application/x-www-form-urlencoded');</code></li>
<li><code> RED_Ajax.run('eingabe.php','POST',false,body);</code></li>
<li><code> },</code></li>
</ol>
<p>Um die neu eingefügten, bzw. später geänderten Daten auch an der Server und damit in die Datenbank zu schreiben, wird beim Klick auf den Speichern-Button die <code>insert()</code>-Methode aufgerufen. Sie lädt alle Eingabefelder und fügt sie zu einem langen String mit <abbr title="Uniform Resource Location">URL</abbr>-konformer Schreibweise zusammen. Dann wird eine neue <code>callback()</code>-Methode des RED_Ajax-Objektes definiert, der Header zum Übertragen von Formular-Daten geändert und die Date an das Verarbeitungsscript gesendet. Nach dem Senden wird wiederum die <code>loadXML()</code>-Methode aufgerufen, um die neuen Daten vom Server abzufragen und anzugeigen.</p>
<ol class="Sourcecode">
<li><code> edit : function()</code> <code>{},</code></li>
<li><code> update : function(form) </code><code>{</code><code>},</code></li>
<li><code> remove : function() {</code><code>}</code></li>
<li><code>}</code></li>
</ol>
<p>Bleiben zum Schluss noch 3 weiter Methoden übrig. Als kleine Herausforderung habe ich mir überlegt diese von euch selber erstellen zu lassen. Das ist auch gar nicht so schwer.</p>
<p>Z.B. ähnelt die <code>edit()</code>-Methode ja der <code>add()</code>-Methode, nur dass hier jetzt noch die Daten des aktuellen Mitgliedes eingefügt werden müssen. Auch die <code>update()</code>-Methode ist nur eine abgewandelte Version der <code>insert()</code>-Methode und bei der <code>remove()</code>-Methode brauch ja nur die aktuelle ID an den Server übermittelt werden, um den richtigen Datansatz zu löschen. Ich glaube fest daran, dass das jeder Lesen schaffen kann.</p>
<p>Hier nochmals die gesamte JavaScript-Datei zum Download.</p>
<ul>
<li><a title="Adressbuch-Datei" href="http://weblabor.re-design.de/AJAX-Adressbuch.zip">Adressbuch-Datei</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li><li><a href="http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/" title="AJAX Adressbuch &#8211; Tutorial Teil 4">AJAX Adressbuch &#8211; Tutorial Teil 4</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>AJAX Adressbuch &#8211; Tutorial Teil 1</title>
		<link>http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/</link>
		<comments>http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 00:00:56 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Webanwendung]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=89</guid>
		<description><![CDATA[Nun möchte ich euch wieder einmal ein Tutorial schenken in dem ich zeigt wie man eine kleine Mini-Webanwendung erstellt. Da ich euch letztens schon mal eine kleine Slideshow mit HTML, CSS (Teil 1) und JavaScript (Teil 2) gezeigt habe, glaube ich dass dieses hier auch sehr interessant sein dürfte. In diesem Tutorial möcht ich euch [...]]]></description>
			<content:encoded><![CDATA[<p>Nun möchte ich euch wieder einmal ein Tutorial schenken in dem ich zeigt wie man eine kleine Mini-Webanwendung erstellt. Da ich euch letztens schon mal eine kleine Slideshow mit <abbr title="Hypertext MArkup Language">HTML</abbr>, <abbr title="Cascading Style Sheet">CSS</abbr> (<a title="Slideshow mit einer HTML-Seite Teil 1" href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/">Teil 1</a>) und JavaScript (<a title="Slideshow mit einer HTML-Seite Teil 2" href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/">Teil 2</a>) gezeigt habe, glaube ich dass dieses hier auch sehr interessant sein dürfte.</p>
<p>In diesem Tutorial möcht ich euch die Entwicklung, bzw. die wichtigsten Schritt zum Erstellen eines Web-Adressbuches zeigen. Dabei habe ich alles in 3 Teile aufgeteilt. Dass heißt heute zeige ich euch das Interface der Webanwendung, also die HTML-Datei und das dazugehörige Design. Morgen gibt es dann die clientseitige und übermorgen die serverseitige Programmierung.</p>
<p><span id="more-89"></span></p>
<ol class="Sourcecode">
<li><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></li>
<li><code>&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;</code></li>
<li><code>&lt;head&gt;</code></li>
<li><code>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;</code></li>
<li><code>&lt;title&gt;RE-Design - AJAX - Adressbuch&lt;/title&gt;</code> <code><br />
</code></li>
<li><code>&lt;link rel="stylesheet" href="adressbook.css" type="text/css" media="screen" /&gt;</code></li>
<li><code>&lt;/head&gt;</code></li>
<li><code>&lt;body&gt;</code></li>
<li><code> &lt;div class="RED_Adrbook"&gt;</code></li>
<li><code> &lt;h1&gt;Adressbuch Demo&lt;/h1&gt;</code></li>
<li><code> &lt;noscript&gt;</code></li>
<li><code> &lt;p&gt;Ohne JavaScript ist hier nix los.&lt;/p&gt;</code></li>
<li><code> &lt;/noscript&gt;</code></li>
<li><code> &lt;form id="RED_Book"&gt;</code></li>
<li><code> &lt;table&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;ID:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Name:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Vorname:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Email:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Telefon:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;/table&gt;</code></li>
<li><code> &lt;ul class="RED_Buttons"&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_prev"&gt;previous&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_next"&gt;next&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_edit"&gt;edit&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> </code><code>&lt;li&gt;&lt;a id="btn_add"&gt;add&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_remove"&gt;delete&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;/ul&gt;</code></li>
<li><code> &lt;/form&gt;</code></li>
<li><code> &lt;/div&gt;</code></li>
<li><code>&lt;/body&gt;</code></li>
<li><code>&lt;/html&gt;</code></li>
</ol>
<p>Wie ihr seht ist in diesem Quellcode keine besonderen Tricks enthalten. An Anfang lade ich noch das externe Design. Die gesamte Anwendung ist dann in eine <code>&lt;div&gt;</code>-Container gebettet und die einzelnen Ein- und Ausgabefelder sind in eine Tabelle integriert. Dort wo später die Ein- und Ausgabe erfolgen soll habe ich <code>&lt;span&gt;</code>-Tags gesetzt um später einfacher per JavaScript darauf zu zugreifen.</p>
<p>Die Button zur Steuerung dieser Anwendung habe ich dann unterhalb der Tabelle un eine Liste leget. Es sind einfache Links, die aber kein Ziel haben. Klar sie sollen ja auch nicht irgendwohin anderes gehen!</p>
<ol class="Sourcecode">
<li><code>@charset "utf-8";</code></li>
<li><code>/* CSS Document */</code></li>
<li><code>body</code></li>
<li><code>{</code></li>
<li><code> margin:0 auto;</code></li>
<li><code> padding:0;</code></li>
<li><code> text-align:center;</code></li>
<li><code> width:28em;</code></li>
<li><code>}</code></li>
<li><code>th, td</code></li>
<li><code>{</code></li>
<li><code> vertical-align:top;</code></li>
<li><code>}</code></li>
</ol>
<p>Als erstes lege ich in der CSS-Datei fest wie die gesamte Seite auszusehen hat. Dabei beschränke ich mich hier erstmal nur auf die Zentrierung des Inhaltes und die Definierung der Gesamtbreite. Weiterhin werden alle Zellen der Tabelle vertikal oben ausgerichtet.</p>
<ol class="Sourcecode">
<li><code>.RED_Adrbook</code></li>
<li><code>{</code></li>
<li><code> margin: 1em 0 0;</code></li>
<li><code> padding:1em;</code></li>
<li><code> background-color:#fc3;</code></li>
<li><code> border:thin solid #960;</code></li>
<li><code> text-align:left;</code></li>
<li><code> font-family: Verdana, Arial, Helvetica, sans-serif;</code></li>
<li><code>}</code></li>
<li><code>.RED_Book table {</code></li>
<li><code> width:28em;</code></li>
<li><code> border-collapse:collapse;</code></li>
<li><code>}</code></li>
<li><code>.RED_Book th</code></li>
<li><code>{</code></li>
<li><code> text-align:left;</code></li>
<li><code> width: 6em;</code></li>
<li><code>}</code></li>
<li><code>.RED_Book h1</code></li>
<li><code>{</code></li>
<li><code> font-size:1.0em;</code></li>
<li><code> text-decoration:underline;</code></li>
<li><code>}</code></li>
</ol>
<p>Als nächstes definiere ich das Aussehen des eigentlichen Adressbuches. Hier wird die allgemeine Schriftart, Hintergrundfarbe etc. angegeben. Zusätzlich mache ich Angaben über die Breite der Tabellen und ihre Tabellenköpfe. Als letztes lege ich noch das Aussehen der Überschrift meiner Anwendung fest.</p>
<ol class="Sourcecode">
<li><code>.RED_Buttons</code></li>
<li><code>{</code></li>
<li><code> margin:1em 0 0;</code></li>
<li><code> padding:0;</code></li>
<li><code>}</code></li>
<li><code>.RED_Buttons li</code></li>
<li><code>{</code></li>
<li><code> margin:0;</code></li>
<li><code> padding:0;</code></li>
<li><code> list-style-type:none;</code></li>
<li><code> display:inline;</code></li>
<li><code>}</code></li>
</ol>
<p>Nun zur Button-Liste, auch hier verwende ich nur rudimentäre Formatierung. Alle Buttons sollen nebeneinander und nicht untereinander stehen. Am einfachsten geht das mit dem <code>inline</code>-Wert der <code>display</code>-Eigenschaft.</p>
<ol class="Sourcecode">
<li><code>#btn_prev,</code></li>
<li><code>#btn_next,</code></li>
<li><code>#btn_edit,</code></li>
<li><code>#btn_add,</code></li>
<li><code>#btn_remove,</code></li>
<li><code>#btn_save,</code></li>
<li><code>#btn_cancel</code></li>
<li><code>{</code></li>
<li><code> cursor:pointer;</code></li>
<li><code> padding:.2em;</code></li>
<li><code> background-color:#c63;</code></li>
<li><code> color:#fff;</code></li>
<li><code> text-decoration:none;</code></li>
<li><code> border:thin outset;<br />
</code></li>
<li><code> font-weight:normal;</code></li>
<li><code>}</code></li>
<li><code>#btn_prev:hover,</code></li>
<li><code>#btn_next:hover,</code></li>
<li><code>#btn_edit:hover,</code></li>
<li><code>#btn_add:hover,</code></li>
<li><code>#btn_remove:hover,</code></li>
<li><code>#btn_save:hover,</code></li>
<li><code>#btn_cancel:hover</code></li>
<li><code>{</code></li>
<li><code> background-color:#804000;</code></li>
<li><code>}</code></li>
<li><code>#btn_prev:active,</code></li>
<li><code>#btn_next:active,</code></li>
<li><code>#btn_edit:active,</code></li>
<li><code>#btn_add:active,</code></li>
<li><code>#btn_remove:active,</code></li>
<li><code>#btn_save:active,</code></li>
<li><code>#btn_cancel:active</code></li>
<li><code>{</code></li>
<li><code> border:thin inset;</code></li>
<li><code>}</code></li>
</ol>
<p>Zum Schluss nach das Aussehen der eigentlichen Buttons. Da es ja offiziell Links sind, wird ihre Darstellung komplett geändert. Zusätzlich bekommen sie noch eine <code>hover</code>- und einen <code>active</code>-Effekt, um das Feeling einer Interaktion weiter zu unterstützen.</p>
<ol class="Sourcecode">
<li><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;</code></li>
<li><code>&lt;mitarbeiter&gt;</code></li>
<li><code> &lt;person id="1"&gt;</code></li>
<li><code> &lt;nachname&gt;Reinsdorf&lt;/nachname&gt;</code></li>
<li><code> &lt;vorname&gt;Enrico&lt;/vorname&gt;</code></li>
<li><code> &lt;email&gt;enrico@re-design.de&lt;/email&gt;</code></li>
<li><code> &lt;telefon&gt;0177 - 2822557&lt;/telefon&gt;</code></li>
<li><code> &lt;/person&gt;</code></li>
<li><code> &lt;person id="2"&gt;</code></li>
<li><code> &lt;nachname&gt;Doe&lt;/nachname&gt;</code></li>
<li><code> &lt;vorname&gt;John&lt;/vorname&gt;</code></li>
<li><code> &lt;email&gt;john@doe.com&lt;/email&gt;</code></li>
<li><code> &lt;telefon&gt;0123 - 1234567&lt;/telefon&gt;</code></li>
<li><code> &lt;/person&gt;</code></li>
<li><code> &lt;person id="3"&gt;</code></li>
<li><code> &lt;nachname&gt;Doe&lt;/nachname&gt;</code></li>
<li><code> &lt;vorname&gt;Jane&lt;/vorname&gt;</code></li>
<li><code> &lt;email&gt;jane@doe.de&lt;/email&gt;</code></li>
<li><code> &lt;telefon&gt;0123 - 1234567&lt;/telefon&gt;</code></li>
<li><code> &lt;/person&gt;</code></li>
<li><code>&lt;/mitarbeiter&gt; </code></li>
</ol>
<p>Als letztes möchte ich euch noch die <abbr title="Extensible Markup Language">XML</abbr>-Datei zeigen, die ich zur ersten Verarbeitung in der Anwendung benutzt habe. Späte wird diese komplett dynamisch von <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> bzw. in ähnlicher Form von JavaScript, erzeugt. Und spielt in der finalen Version keine große Rolle mehr.</p>
<p>Zum Schluss noch die gerade besprochenen Dateien zum Download:</p>
<ul>
<li><a title="direkt zum Download" href="ftp://weblabor.re-design.de/AJAX-Adressbuch.zip">Download</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li><li><a href="http://www.re-design.de/2008/02/11/css-import-macht-probleme/" title="CSS Import macht Probleme">CSS Import macht Probleme</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Button wieder neu entdeckt</title>
		<link>http://www.re-design.de/2007/12/20/button-wieder-neu-entdeckt/</link>
		<comments>http://www.re-design.de/2007/12/20/button-wieder-neu-entdeckt/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 00:00:15 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=88</guid>
		<description><![CDATA[Schon seit längerem wusste ich das es den &#60;button&#62;-Tag gibt, aber erst jetzt habe ich seine Vielseitigkeit erkannt und schätzen gelernt. Diesen Tag gibt es schon seit der HTML 4.0 Version. Bis dahin konnten die Designer immer nur über den &#60;input&#62;-Tag mit den type-Attribut Buttons erzeugen. Zulässige Werte um einen Button zu erzeugen sind submit, [...]]]></description>
			<content:encoded><![CDATA[<p>Schon seit längerem wusste ich das es den <code>&lt;button&gt;</code>-Tag gibt, aber erst jetzt habe ich seine Vielseitigkeit erkannt und schätzen gelernt.</p>
<p>Diesen Tag gibt es schon seit der <abbr title="Hypertext Markup Language">HTML</abbr> 4.0 Version. Bis dahin konnten die Designer immer nur über den <code>&lt;input&gt;</code>-Tag mit den <code>type</code>-Attribut Buttons erzeugen. Zulässige Werte um einen Button zu erzeugen sind <code>submit</code>, <code>reset</code> und <code>image</code>, Erst ab der 4er Version von HTML bezeichnet man Buttons auch in ihrer Bezeichnung so was sie auch tatsächlich sind, nämlich Buttons. Und das Schöne daran ist, sie funktionieren zusätzlich auch noch in allen gängigen Browsern.</p>
<p><span id="more-88"></span></p>
<p>Die Syntax um einen Button zu erzeugen ist recht simple. Man setzt einfach um das was ein Button werden soll den <code>&lt;button&gt;</code>-Tag und gibt, wie auch beim <code>&lt;input&gt;</code>-Tag, im <code>type</code>-Attribute einen der drei Werte <code>submit</code>, um das Formular abzuschicken, <code>reset</code>, um das Formular auf den Orginalzustand zurückzusetzen, oder <code>button</code>, um ein freiprogrammierbares Element zu bekommen, ein.</p>
<ol class="Sourcecode">
<li><code>&lt;button type="button" onclick="alert('Oh Wundern es geht!')"&gt;Drück mich&lt;/button&gt;</code></li>
</ol>
<p><button onclick="alert('Oh Wundern es geht!')">Drück mich</button></p>
<p>Das ist schon das ganze Geheimnis zur Verwendung von Buttons. Nun kann man fast beliebig viel in diesen Container hinsetzen. Es gibt nur zwei Ausnahmen die nicht funktioniert. Erstens, da der Button selbst schon eine Art Verweis ist, dürfen in ihm keine Verweis erzeugende Elemente eingesetzt werden. Und zweitens, da der Button meistens für Formulare genutzt wird, darf in ihm keine weiteren Formular-Elemente verwendet werden.</p>
<p>Weiterhin ist zu Beachten, dass ein <code>submit</code>- bzw. <code>reset</code>-Button natürlich nun innerhalb eines Formulares funktioniert und der frei definierbare nur mit aktiviertem JavaScript.</p>
<p>Hier nun ein paar schöne Beispiele für die freie Verwendbarkeit solcher Buttons. Dabei habe ich die <abbr title="Cascading Style Sheet">CSS</abbr>-Formatierung der Einfachheit inline gesetzt.</p>
<ol class="Sourcecode">
<li><code>&lt;button type="button" style="padding:1em"&gt;Klick mich!&lt;/button&gt;</code></li>
</ol>
<p><button style="padding: 1em">Klick mich!</button></p>
<ol class="Sourcecode">
<li><code>&lt;button type="button" style=""&gt;</code></li>
<li><code>&lt;image src="icon.png" width="100" height="100" alt="Abschicken" /&gt;</code></li>
<li><code>&lt;/button&gt;</code></li>
</ol>
<p><button><img src="/Demo/Button/Mail-Button.png" alt="Abschicken" height="100" width="100" /></button></p>
<ol class="Sourcecode">
<li><code>&lt;button type="button" style=""&gt;</code></li>
<li><code>    &lt;style type="text/css"&gt;td:hover{background-color:#99CC00;&lt;/style&gt;</code></li>
<li><code>    &lt;table style="border-collapse:collapse;"&gt;</code></li>
<li><code>    &lt;tr&gt;</code></li>
<li><code>        &lt;th scope="col"&gt;Spalte 1&lt;/th&gt;</code></li>
<li><code>        &lt;th scope="col"&gt;Spalte 2&lt;/th&gt;</code></li>
<li><code>        &lt;th scope="col"&gt;Spalte 3&lt;/th&gt;</code></li>
<li><code>    &lt;/tr&gt;</code></li>
<li><code>    &lt;tr&gt;</code></li>
<li><code>        &lt;td&gt;Inhalt 1&lt;/td&gt;</code></li>
<li><code>        &lt;td&gt;Inhalt 2&lt;/td&gt;</code></li>
<li><code>        &lt;td&gt;Inhalt 3&lt;/td&gt;</code></li>
<li><code>    &lt;/tr&gt;</code></li>
<li><code>    &lt;tr&gt;</code></li>
<li><code>        &lt;td&gt;Inhalt 4&lt;/td&gt;</code></li>
<li><code>        &lt;td&gt;Inhalt 5&lt;/td&gt;</code></li>
<li><code>        &lt;td&gt;Inhalt 6&lt;/td&gt;</code></li>
<li><code>    &lt;/tr&gt;</code></li>
<li><code>    &lt;/table&gt;</code></li>
<li><code>&lt;/button&gt; </code></li>
</ol>
<p><button></p>
<style type="text/css">td:hover{background-color:#99cc00;</style>
<table style="border-collapse: collapse">
<tr>
<th scope="col">Spalte 1</th>
<th scope="col">Spalte 2</th>
<th scope="col">Spalte 3</th>
</tr>
<tr>
<td>Inhalt 1</td>
<td>Inhalt 2</td>
<td>Inhalt 3</td>
</tr>
<tr>
<td>Inhalt 4</td>
<td>Inhalt 5</td>
<td>Inhalt 6</td>
</tr>
</table>
<p></button></p>
<p>Interessant ist, dass die <code>hover</code>-Angabe z.Z. ausschließlich beim <abbr title="Internet Explorer">IE</abbr> funktioniert.</p>
<ol class="Sourcecode">
<li><code>&lt;button type="button" style="width:20em;padding:1em;text-align:left"&gt;</code></li>
<li><code>&lt;h4&gt;Lizenzvertrag&lt;/h4&gt;</code></li>
<li><code>&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus. Aenean viverra malesuada libero. Fusce ac quam. Donec neque. Nunc venenatis enim nec quam. Cras faucibus, justo vel accumsan aliquam, tellus dui fringilla quam, in condimentum augue lorem non tellus. Pellentesque id arcu non sem placerat iaculis. Curabitur posuere, pede vitae lacinia accumsan, enim nibh elementum orci, ut volutpat eros sapien nec sapien. Suspendisse neque arcu, ultrices commodo, pellentesque sit amet, ultricies ut, ipsum. Mauris et eros eget erat dapibus mollis. Mauris laoreet posuere odio. Nam ipsum ligula, ullamcorper eu, fringilla at, lacinia ut, augue. Nullam nunc.&lt;/p&gt;</code></li>
<li><code>&lt;/button&gt;</code></li>
</ol>
<p><button style="padding: 1em; width: 20em; text-align: left"></p>
<h4>Lizenzvertrag</h4>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus. Aenean viverra malesuada libero. Fusce ac quam. Donec neque. Nunc venenatis enim nec quam. Cras faucibus, justo vel accumsan aliquam, tellus dui fringilla quam, in condimentum augue lorem non tellus. Pellentesque id arcu non sem placerat iaculis. Curabitur posuere, pede vitae lacinia accumsan, enim nibh elementum orci, ut volutpat eros sapien nec sapien. Suspendisse neque arcu, ultrices commodo, pellentesque sit amet, ultricies ut, ipsum. Mauris et eros eget erat dapibus mollis. Mauris laoreet posuere odio. Nam ipsum ligula, ullamcorper eu, fringilla at, lacinia ut, augue. Nullam nunc.</p>
<p></button></p>
<p>Leider versteht der IE die Breitenangabe im Style nicht.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/02/11/css-import-macht-probleme/" title="CSS Import macht Probleme">CSS Import macht Probleme</a></li><li><a href="http://www.re-design.de/2008/01/28/jahresabonnement-des-spotlight-verlag/" title="Jahresabonnement des Spotlight Verlag">Jahresabonnement des Spotlight Verlag</a></li><li><a href="http://www.re-design.de/2008/01/13/umsetzung-von-print-design/" title="Umsetzung von Print-Design">Umsetzung von Print-Design</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/20/button-wieder-neu-entdeckt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Slideshow mit einer HTML-Seite Teil 2</title>
		<link>http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/</link>
		<comments>http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 00:00:45 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[literal]]></category>
		<category><![CDATA[s5]]></category>
		<category><![CDATA[slideshow]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=82</guid>
		<description><![CDATA[Nachdem ich gestern im ersten Teil den Aufbau der HTML-Seite und das Design mit CSS beschrieben habe, folgt nun die Programmierung das Ganzen. Es ist gar nicht so schwer wie man Denken könnte. Nur ganze 4 Funktionen brauche ich für meine einfache Slideshow. Die gesamte Funktionalität habe ich in ein eigenes Objekt gekapselt, um eine [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich gestern <a href="http://www.re-design.de/workbook/?p=81">im ersten Teil</a> den Aufbau der HTML-Seite und das Design mit <abbr title="Cascading Style Sheet">CSS</abbr> beschrieben habe, folgt nun die Programmierung das Ganzen. Es ist gar nicht so schwer wie man Denken könnte. Nur ganze 4 Funktionen brauche ich für meine einfache Slideshow.</p>
<p><span id="more-82"></span></p>
<p>Die gesamte Funktionalität habe ich in ein eigenes Objekt gekapselt, um eine übersichtlichere, einfach erweiterbare und flexible Programmierung zu haben. Für solchen Kapseln benutze ich fast immer Literale.</p>
<ol class="Sourcecode">
<li><code>var RED_Slideshow = {</code></li>
<li><code>    slides   : [],</code></li>
<li><code>    current  : 0,</code></li>
<li><code>    messages : {</code></li>
<li><code>                   first : 'Sie sind am Anfang.',</code></li>
<li><code>                   last : 'Sie sind am Ende der Präsentation.'</code></li>
<li><code>               },</code></li>
<li><code>    init     : function(element)</code> <code>{</code> <code>}</code> <code>,</code></li>
<li><code>    load     : function() {},</code></li>
<li><code>    goto     : function(d) </code><code>{</code><code>},</code></li>
<li><code>    create   : function() {</code><code>}</code></li>
<li><code>};</code></li>
</ol>
<p>Zusätzlich zu den 4 Funktion gibt es noch 3 Eigenschaften. In der Eigenschaft <code>slides</code> werden die anzuzeigenden Slides zwischengespeichert um sie schnell ein- und auszublenden. Die Eigenschaft <code>current</code> repräsentiert das aktuelle Slide welches gerade angezeigt wird und in der Eigenschaft messages existiert ein Unterobjekt welches Meldungen beinhaltet, die im Verlauf der Benutzung dem Betrachter angezeigt werden können.</p>
<p>Mit der Methode init wird die Anwendung gestartet. Sie sucht dabei im angegebenen Container die Slides.</p>
<ol class="Sourcecode">
<li><code>init : function(element)</code></li>
<li><code>{</code></li>
<li><code>    var div = document.getElementById(element).getElementsByTagName('div');</code></li>
<li><code>    for(var i=0; i&lt;div.length; i++)</code></li>
<li><code>    {</code></li>
<li><code>        if(div[i].className == 'slide')</code></li>
<li><code>        {</code></li>
<li><code>            this.slides.push(div[i]);</code></li>
<li><code>        }</code></li>
<li><code>    }</code></li>
<li></li>
<li><code>    this.load();</code></li>
<li><code>    this.create(); </code></li>
<li></li>
<li><code>    document.getElementById('helper').onclick = function()</code></li>
<li><code>    {</code></li>
<li><code>        slideshow.goto(+1);</code></li>
<li><code>    }</code></li>
<li><code>},</code></li>
</ol>
<p>Als erstes werden die <code>&lt;div&gt;</code>-Tages innerhalb des Containers gesucht, der Klassenname überprüft und dann in die Eigenschaft slides abgelegt. Dann rufe ich die <code>load()</code>-Methode auf, um das aktuelle Slide anzuzeigen. Danach lasse ich über die <code>create()</code>-Methode die dynamische Navigation erzeugen.</p>
<p>Zum Schluss füge ich dem Objekt mit der <abbr title="Identifikation">ID</abbr> helper einen Klick-Event hinzu. Dies soll nur verdeutlichen, wie auch ohne Buttons navigiert werden kann.</p>
<ol class="Sourcecode">
<li><code>load : function()</code></li>
<li><code>{</code></li>
<li><code>    for(var i=0; i&lt;this.slides.length; i++)</code></li>
<li><code>    {</code></li>
<li><code>        this.slides[i].style.display = 'none';</code></li>
<li><code>    }</code></li>
<li><code>    this.slides[this.current].style.display = 'block';</code></li>
<li><code>},</code></li>
</ol>
<p>Die <code>load()</code>-Methode ist super einfach. In ihr durchlaufe ich den Array mit den Slides und füge einen Style hinzu, der alle Slides unsichtbar schaltet. Zum Schluss wird dann das aktuelle Slide explizit auf sichtbar gesetzt.</p>
<p>Damit habe ich eine Methode die bei jedem Aufruf immer das aktuelle Slide anzeigt und alle anderen auf Unsichtbar setzt. So kann diese Methode später auch das Anzeigen von Slides außerhalb der Reihenfolge benutzt werden.</p>
<ol class="Sourcecode">
<li><code>create : function()</code></li>
<li><code>{</code></li>
<li><code>    var form = document.createElement('form');</code></li>
<li><code>    form.setAttribute('id', 'navigation');</code></li>
<li></li>
<li><code>    var btn1 = document.createElement('button');</code></li>
<li><code>    btn1.setAttribute('type', 'button');</code></li>
<li><code>    btn1.setAttribute('id', 'btn_prev');</code></li>
<li><code>    btn1.appendChild(document.createTextNode('zurück'));</code></li>
<li><code>    btn1.onclick = function()</code></li>
<li><code>    {</code></li>
<li><code>        </code><code>RED_Slideshow.goto(-1);</code></li>
<li><code>    }</code></li>
<li></li>
<li><code>    var btn2 = document.createElement('button');</code></li>
<li><code>    btn2.setAttribute('type', 'button');</code></li>
<li><code>    btn2.setAttribute('id', 'btn_next');</code></li>
<li><code>    btn2.appendChild(document.createTextNode('nächster'));</code></li>
<li><code>    btn2.onclick = function()</code></li>
<li><code>    {</code></li>
<li><code>        </code><code>RED_Slideshow.goto(+1);</code></li>
<li><code>    </code><code>}</code></li>
<li></li>
<li><code>    form.appendChild(btn1);</code></li>
<li><code>    form.appendChild(btn2);</code></li>
<li></li>
<li><code>    var body = document.getElementsByTagName('body')[0];</code></li>
<li><code>    var footer = document.getElementById('footer');</code></li>
<li></li>
<li><code>    body.insertBefore(form, footer);</code></li>
<li><code>}</code></li>
</ol>
<p>Nun zu der umfangreichsten Methode, da sie die dynamische Navigation erzeugt. Ich habe mich hier für ein kleines Formular entschieden, welches einfache Buttons beinhaltet. Ich erzeugt also zunächst den &lt;form&gt;-Tag und dann die 2 Buttons. Weiterhin fügt ich diesen Buttons noch Klick-Events hinzu, die wiederum eine Literal-Methode aufrufen.</p>
<p>Hier ist auf jeden Fall zu beachten, dass man nicht mit dem Schlüsselwort <code>this</code> arbeitet. Denn würde ich im Klick-Event <code>this</code> verwenden, dann würde sich das <code>this</code> auf den jeweiligen Button beziehen und nicht auf das Literal. Deshalb gehe ich den Umweg über den direkten Aufruf der Literal-Methode.</p>
<p>Zum Schluss setze ich das Formular vor meinen Fußbereich ein, in dem ich als erstes eine Verweis auf den <code>&lt;body&gt;</code>-Tag  und dann einen Verweis auf den Fußbereich erzeuge.</p>
<ol class="Sourcecode">
<li><code>goto : function(d)</code></li>
<li><code></code><code>{</code></li>
<li><code>    this.current += d;</code></li>
<li><code>    if(this.current == this.slides.length)</code></li>
<li><code>    {</code></li>
<li><code>        //alert(this.messages.last);</code></li>
<li><code>        this.current = 0;</code></li>
<li><code>    }</code></li>
<li><code>    if(this.current &lt; 0)</code></li>
<li><code>    {</code></li>
<li><code>        //alert(this.message.first);</code></li>
<li><code>        this.current = this.slides.length-1;</code></li>
<li><code>    }</code></li>
<li><code>    this.load();</code></li>
<li><code>},</code></li>
</ol>
<p>Die letzte Methode ist für die Navigation bestimmt. Ihr wird entweder der Wert 1 oder -1 übergeben. Dieser Parameter wird zum aktuellen Zähler hinzugefügt.</p>
<p>Als nächstes überprüft die Methode, ob das Ende oder der Anfang der Slideshow erreicht ist und setzt dann eigenständig den Zähler auf den passenden Wert um einen Schleifen-Vorgang zu erzeugen.</p>
<p>Zum Schluss ruft die Methode die <code>load()</code>-Methode auf, um das neue Slide auch anzuzeigen.</p>
<p>Damit ist auch schon das gesamte Slideshow-Literal erklärt. Es fehlt nur die Einbindung dieses Scriptes in die HTML-Datei und der Aufruf der Initialisierung mit der Parameter-Übergabe wo die Slides in der HTML-Datei liegen.</p>
<ol class="Sourcecode">
<li><code>// JavaScript Document</code></li>
<li><code>&lt;script type="text/javacript" src="RED_Slideshow.js"&gt;&lt;/script&gt;</code></li>
<li><code>&lt;script type="text/javascript"&gt;</code></li>
<li><code>//&lt;!{CDATA[</code></li>
<li><code>window.onload = function()</code></li>
<li><code>{</code></li>
<li><code>    RED_Slideshow.init('body');</code></li>
<li><code>};</code></li>
<li><code>//]]&gt;</code></li>
<li><code>&lt;/script&gt;</code></li>
</ol>
<p>Da wir mit der <code>create()</code>-Methode ein neues <abbr title="Document Object Model">DOM</abbr>-Objekt mit der ID navigation erzeugen, habe ich meine CSS-Datei um folgende Formatierung erweitert.</p>
<ol class="Sourcecode">
<li><code>#navigation {</code></li>
<li><code>    position:absolute;</code></li>
<li><code>    bottom:3em;</code></li>
<li><code>    border:1px solid;</code></li>
<li><code>    width:50%;</code></li>
<li><code>    height:2em;</code></li>
<li><code>    margin:auto;</code></li>
<li><code>    text-align:center;</code><code> </code><code></code></li>
<li><code>    z-index:2;</code></li>
<li><code>    left:25%;</code></li>
<li><code>}</code></li>
</ol>
<h4>Downloads</h4>
<ul>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/demo2.html" rel="download">HTML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/red_slideshow.css">CSS-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/red_slideshow.js">JavaScript-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/slideshow-praesentation.zip">komplettes Set</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2010/12/20/html5-buch/" title="HTML5 &ndash; Buch">HTML5 &ndash; Buch</a></li><li><a href="http://www.re-design.de/2008/02/11/css-import-macht-probleme/" title="CSS Import macht Probleme">CSS Import macht Probleme</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Slideshow mit einer HTML-Seite Teil 1</title>
		<link>http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/</link>
		<comments>http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 00:00:12 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[literal]]></category>
		<category><![CDATA[s5]]></category>
		<category><![CDATA[slideshow]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=81</guid>
		<description><![CDATA[Im nächsten Beispiel möchte ich zeigen wie man mit JavaScript wunderbar das DOM einer HTML-Datei ändern kann. Dazu habe ich mich für den Nachbau von S5 entschieden. Im ersten Teil werde ich den Aufbau der HTML- und CSS-Datei erklären, um dann morgen in die JavaScript-Programmierung einzusteigen. Fangen wir mit dem HTML an. Den Aufbau habe [...]]]></description>
			<content:encoded><![CDATA[<p>Im nächsten Beispiel möchte ich zeigen wie man mit JavaScript wunderbar das <abbr title="Document Object Model">DOM</abbr> einer <abbr title="Hypertext Markup Language">HTML</abbr>-Datei ändern kann. Dazu habe ich mich für den Nachbau von <abbr title="simples, standardbasiertes Slideshowsystem"><a href="http://yatil.de/s5/" title="zur deutsche Übersetzung von S5" target="_blank">S5</a></abbr> entschieden. Im ersten Teil werde ich den Aufbau der HTML- und <abbr title="Cascading Style Sheet">CSS</abbr>-Datei erklären, um dann morgen in die JavaScript-Programmierung einzusteigen.</p>
<p><span id="more-81"></span></p>
<p>Fangen wir mit dem HTML an. Den Aufbau habe ich bewusst nicht sehr komplex gestaltet, um die spätere Programmierung einfach zu halten. Im Grunde besteht die Datei aus 5 Hauptkontainern:</p>
<ol>
<li>header<br />
Hier besteht die Möglichkeit der Präsentation eine Überschrift und eine Tagline zu geben.</li>
<li>body<br />
Dieser Bereich enthält alle Slides die nacheinander angezeigt werden. Zusätzlich wird hier auch ein <code>&lt;noscript&gt;</code>-Tag eingebunden, um den Benutzern darauf hinzuweisen, dass die Präsentation nicht wie vorgesehen funktionieren kann bei deaktiviertem JavaScript.</li>
<li>helper<br />
Der helper-Bereich ist für zusätzliche Informationen vorgesehen und am Anfang noch leer.</li>
<li>navigation<br />
Dieser wird erst durch JavaScript erzeugt und beinhaltet die Navigationselemente.</li>
<li>footer<br />
Im letzen Bereich kann Platz für weitere Angaben, wie z.B. rechtliche Hinweise, genutzt werden.</li>
</ol>
<p>Hier nun de gesamte Quellcode mit gekürzten Texten:</p>
<ol class="Sourcecode">
<li><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></li>
<li><code>&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;</code></li>
<li><code>&lt;head&gt;</code></li>
<li><code>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;</code></li>
<li><code>&lt;title&gt;RE-Design - JavaScript - Slideshow Präsentation&lt;/title&gt;</code></li>
<li><code>&lt;link rel="stylesheet" href="ssp.css" type="text/css" media="screen" /&gt;</code></li>
<li><code>&lt;script type="text/javascript" src="ssp.js"&gt;&lt;/script&gt;</code></li>
<li><code>&lt;script type="text/javascript"&gt;</code></li>
<li><code>/*&lt;!CDATA[*/</code></li>
<li><code>window.onload = function()</code></li>
<li><code>{</code></li>
<li><code>    slideshow.init();</code></li>
<li><code>}</code></li>
<li><code>/*]]&gt;*/</code></li>
<li><code>&lt;/script&gt;</code></li>
<li><code>&lt;/head&gt;</code></li>
<li><code>&lt;body&gt;</code></li>
<li><code>&lt;div id="header"&gt;</code></li>
<li><code>    &lt;h1&gt;Powerpoint Präsentation&lt;/h1&gt;</code></li>
<li><code>    &lt;h2&gt;Eine Slideshow mit JavaScript&lt;/h2&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="body"&gt;</code></li>
<li><code>    &lt;noscript&gt;</code></li>
<li><code>    &lt;p&gt;Sie brauchen unbedingt JavaScript, um die ganze Funktionalität benutzen zu können.&lt;/p&gt;</code></li>
<li><code>    &lt;/noscript&gt;</code></li>
<li><code>    &lt;div class="slide"&gt;</code></li>
<li><code>    &lt;h3&gt;Slide 1&lt;/h3&gt;</code></li>
<li><code>    &lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit ... Nullam nunc.&lt;/p&gt;</code></li>
<li><code>    &lt;p&gt;Sed et lectus in massa imperdiet tincidunt ... Etiam mi libero, luctus nec, blandit ac, rutrum ac, lectus.&lt;/p&gt;</code></li>
<li><code>    &lt;/div&gt;</code></li>
<li><code>    &lt;div class="slide"&gt;</code></li>
<li><code>    &lt;h3&gt;Slide 2&lt;/h3&gt;</code></li>
<li><code>    &lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit ... Nullam nunc.&lt;/p&gt;</code></li>
<li><code>    &lt;p&gt;Sed et lectus in massa imperdiet tincidunt ... Etiam mi libero, luctus nec, blandit ac, rutrum ac, lectus.&lt;/p&gt;</code></li>
<li><code>    &lt;p&gt;Morbi consequat felis vitae enim ... Mauris aliquam dui eget purus.&lt;/p&gt;</code></li>
<li><code>    &lt;p&gt;Sed ut metus sed wisi commodo viverra ... Curabitur a turpis at ligula lobortis cursus.&lt;/p&gt;</code></li>
<li><code>    &lt;/div&gt;</code></li>
<li><code>    &lt;div class="slide"&gt;</code></li>
<li><code>    &lt;h3&gt;Slide 3&lt;/h3&gt;</code></li>
<li><code>    &lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit ... Nullam nunc.&lt;/p&gt;</code></li>
<li><code>    &lt;p&gt;Sed et lectus in massa imperdiet tincidunt ... Etiam mi libero, luctus nec, blandit ac, rutrum ac, lectus.&lt;/p&gt;</code></li>
<li><code>    &lt;/div&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="helper"&gt;&lt;/div&gt;</code></li>
<li><code>&lt;div id="footer"&gt;</code></li>
<li><code>    © 2007 - &lt;a href="http://www.re-design.de"&gt;RE-Design&lt;/a&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;/body&gt;</code></li>
<li><code>&lt;/html&gt;</code></li>
</ol>
<p>Als nächstes erkläre ich die wichtigsten Punkte in der CSS-Datei</p>
<ol class="Sourcecode">
<li><code>@charset "utf-8";</code></li>
<li><code>/* CSS Document */</code></li>
<li></li>
<li><code>body {</code></li>
<li><code>margin:0;</code></li>
<li><code>padding:0;</code></li>
<li><code>font: 16px/130% normal normal Arial, Helvetica, sans-serif;</code></li>
<li><code>background-color:#b3d1e1;</code></li>
<li><code>}</code></li>
</ol>
<p>Als erstes die Body-Formatierung. Hier wird der Abstand zum Rand auf Null gesetzt, um jeden Platz der da ist auch zu nutzen. Zusätzlich habe ich Anpassungen an der Typographie vorgenommen und die Basis-Hintergrundfarbe eingestellt.</p>
<ol class="Sourcecode">
<li><code>#header {</code></li>
<li><code>position:absolute;</code></li>
<li><code>overflow:hidden;</code></li>
<li><code>top:0;</code></li>
<li><code>width:100%;</code></li>
<li><code>height:6em;</code></li>
<li><code>background-color:#069;</code></li>
<li><code>color:#fff;</code></li>
<li><code>padding:0 1em;</code></li>
<li><code>}</code></li>
</ol>
<p>Der Kopfbereich wird absolut links oben platziert. Mit einer relative Höhe wird fester Platz für ihn reserviert. Weiterhin habe ich eine passende Hintergrund- und Schriftfarbe festgelegt. Um absolut positionierte Layer auch über die gesamte Breite fließen zu lassen wird die Breite auf 100% gesetzt.</p>
<ol class="Sourcecode">
<li><code>#body {</code></li>
<li><code>position:absolute;</code></li>
<li><code>overflow:auto;</code></li>
<li><code>top:6em;</code></li>
<li><code>bottom:4em;</code></li>
<li><code>width:100%;</code></li>
<li><code>}</code></li>
</ol>
<p>Auch der mittlere Präsentationsbereich ist absolut positioniert. Um keine Überlappung mit die Kopfbereich zu erhalten, fängt der Layer erst dort an wo der Kopfbereich endet. Gleiche habe ich auch für den Fußbereich eingestellt.</p>
<ol class="Sourcecode">
<li><code>#footer {</code></li>
<li><code>position:absolute;</code></li>
<li><code>overflow:hidden;</code></li>
<li><code>height:3em;</code></li>
<li><code>bottom:0;</code></li>
<li><code>width:100%;</code></li>
<li><code>padding:.5em 1em;</code></li>
<li><code>background-color:#069;</code></li>
<li><code>}</code></li>
</ol>
<p>Ähnlich wie der Kopfbereich wird auch der Fußbereich eine feste Positionierung zugewiesen. Allerdings im unteren Bereich des Browsers. Dabei musste ich darauf achten, dass die Höhe des Fußbereiches sich aus der Layerhöhe plus dem Innenabstand des Layers zusammensetzt.</p>
<ol class="Sourcecode">
<li><code>#helper {</code></li>
<li><code>position:absolute;</code></li>
<li><code>overflow:hidden;</code> <code></code></li>
<li><code>width:50%;</code></li>
<li><code>height:2em;</code></li>
<li><code>bottom:3em;</code></li>
<li><code>left:25%;</code></li>
<li><code>z-index:2;</code></li>
<li><code>}</code></li>
</ol>
<p>Zwar ist in meinem helper-Layer noch nichts drin aber platzieren kann ich ihn auf jeden Fall schon mal. Das besondere daran ist, dass ich ihn über den Fußbereich halb überlappen lassen wollte. Um dieses zu erreichen muss über die z-index-Eigenschaft der Layer vor dem nachfolgenden Fußbereich gelegt werden.</p>
<ol class="Sourcecode">
<li><code>.slide {</code></li>
<li><code>margin:1em;</code></li>
<li><code>}</code></li>
</ol>
<p>Die Formatierung der einzelnen Slides habe ich nicht großartig verändert, um dem Umfang der CSS-Datei möglichst übersichtlich zu halten. Es ist aber jeder Zeit möglich, den einzelnen Slides über IDs ein individuells Design zu geben.</p>
<p>Und morgen <a href="http://www.re-design.de/workbook/?p=82" title="Slideshow mit einer HTML-Seite">im Teil 2</a> beschreibe ich die JavaScript-Programmierung die nötig ist um dem Ganzen Leben einzuhauchen.</p>
<h4>Downloads</h4>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/demo2.html" rel="download">HTML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/red_slideshow.css">CSS-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/red_slideshow.js">JavaScript-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/slideshow-praesentation.zip">komplettes Set</a></li>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2010/12/20/html5-buch/" title="HTML5 &ndash; Buch">HTML5 &ndash; Buch</a></li><li><a href="http://www.re-design.de/2008/02/11/css-import-macht-probleme/" title="CSS Import macht Probleme">CSS Import macht Probleme</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mit JavaScript DOM erzeugen</title>
		<link>http://www.re-design.de/2007/12/17/mit-javascript-xml-erzeugen/</link>
		<comments>http://www.re-design.de/2007/12/17/mit-javascript-xml-erzeugen/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 23:00:25 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Container]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[dom-scripting]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=76</guid>
		<description><![CDATA[Hier nun ein weiterer Artikel zum Thema XML-Erzeugung mit Web-Programmiersprachen. Im Gegensatz zu gestern konzentriere ich mich heute auf das Erstellen mit JavaScript. Aber auch das ist nicht sehr schwierig. Anders als bei PHP gibt es in JavaScript keine direkte DOM-Objekte, sondern alles muss über das document-Objekt laufen. Auch hier gibt es nur ein paar [...]]]></description>
			<content:encoded><![CDATA[<p>Hier nun ein weiterer Artikel zum Thema <abbr title="Extensible Markup Language">XML</abbr>-Erzeugung mit Web-Programmiersprachen. Im Gegensatz zu gestern konzentriere ich mich heute auf das Erstellen mit JavaScript. Aber auch das ist nicht sehr schwierig.</p>
<p>Anders als bei <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> gibt es in JavaScript keine direkte <abbr title="Document Object Model">DOM</abbr>-Objekte, sondern alles muss über das document-Objekt laufen. Auch hier gibt es nur ein paar wichtige Methoden die man kennen sollte:</p>
<ul>
<li>document.createElement();</li>
<li>document.createTextNode();</li>
<li>element.appendChild();</li>
<li>element.setAttribute();</li>
</ul>
<p><span id="more-76"></span><br />
Ich habe mir als Beispiel überlegt in einen <code>&lt;div&gt;</code>-Container eine ähnline Mitarbeiter-Liste zu erzeugen wie gestern mit PHP. Hier nun erstmal der Quellcode der <abbr title="Hypertext Markup Language">HTML</abbr>-Datei:</p>
<ol class="Sourcecode">
<li><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ?="?">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</a>&gt; </code></li>
<li><code>&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml" ?="?">http://www.w3.org/1999/xhtml"</a>&gt; </code></li>
<li><code>&lt;head&gt; </code></li>
<li><code>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt; </code></li>
<li><code>&lt;title&gt;RED - JavaScript - XML-Loader&lt;/title&gt; </code></li>
<li><code>&lt;script language="javascript" type="text/javascript" src="red_xml.js"&gt;&lt;/script&gt; </code></li>
<li><code>&lt;script language="javascript" type="text/javascript"&gt; </code></li>
<li><code>window.onload = function() </code></li>
<li><code>{ </code></li>
<li><code>    RED_DOM.create('container'); </code></li>
<li><code>} </code></li>
<li><code>&lt;/script&gt; </code></li>
<li><code>&lt;/head&gt; </code></li>
<li><code>&lt;body&gt; </code></li>
<li><code>&lt;div id="container"&gt;&lt;/div&gt; </code></li>
<li><code>&lt;/body&gt; </code></li>
<li><code>&lt;/html&gt;</code></li>
</ol>
<p>Wie man deutlich sehen kann, wird nach dem Laden des Dokumente die Methode meiner Objectes aufgerufen und als Parameter die <abbr title="Identifikation">ID</abbr> des Containers übergeben.</p>
<p>In diesen Container wird nun die Mitarbeiterliste erzeugt.</p>
<ol class="Sourcecode">
<li><code>var RED_DOM =</code></li>
<li><code>{</code></li>
<li><code>create : function(node)</code></li>
<li><code>{</code></li>
<li><code>    var dom = document.getElementById(node);</code></li>
</ol>
<p>Als erstes erzeuge ich einen Verweis auf das Element.</p>
<ol class="Sourcecode" start="start">
<li><code>    var mitarbeiter = dom.appendChild(document.createElement('ul'));</code></li>
</ol>
<p>Dann füge ich eine ungeordnete Liste hinzu.</p>
<ol class="Sourcecode" start="start">
<li><code>    var person = mitarbeiter.appendChild(document.createElement('li'));</code></li>
<li><code>    person.setAttribute('id','2007-12-15-RE');</code></li>
</ol>
<p>Danach wird ein neuer Listeneintrag generiert und mit einer ID versehen.</p>
<ol class="Sourcecode" start="start">
<li><code>    var vorname = person.appendChild(document.createElement('span'));</code></li>
<li><code>    vorname.appendChild(document.createTextNode('Enrico')); </code></li>
<li><code>    var nachname = person.appendChild(document.createElement('span'));</code></li>
<li><code>    nachname.appendChild(document.createTextNode('Reinsdorf'));</code></li>
</ol>
<p>Der Vor- und Nachname wird, um ihn zu kapseln in einen <code>&lt;span&gt;</code>-Tag gelegt.</p>
<ol class="Sourcecode" start="start">
<li><code>    var contacts = person.appendChild(document.createElement('ul'));</code></li>
<li><code>    var email = contacts.appendChild(document.createElement('li'));</code></li>
<li><code>    email = email.appendChild(document.createElement('a'));</code></li>
<li><code>    email.setAttribute('href', 'mailto:enrico@re-design.de');</code></li>
<li><code>    email.appendChild(document.createTextNode('enrico@re-design.de'));</code></li>
</ol>
<p>Um alle Kontakt auflisten zu können, erzeuge ich eine weitere Unterliste. In die die Email als Verweis abgelegt wird.</p>
<ol class="Sourcecode" start="start">
<li><code>    var telefon = contacts.appendChild(document.createElement('li'));</code></li>
<li><code>    telefon.setAttribute('class', 'mobil');</code></li>
<li><code>    var vorwahl = telefon.appendChild(document.createElement('span'));</code></li>
<li><code>    vorwahl.appendChild(document.createTextNode('0177'));</code></li>
<li><code>    var nummer = telefon.appendChild(document.createElement('span'));<br />
</code></li>
<li><code>    nummer.appendChild(document.createTextNode('2822557'));</code></li>
<li><code>}<br />
</code></li>
<li><code>}</code> ;</li>
</ol>
<p>Zum Schluss füge ich noch die Listeneintrag für die Telefonnummer hinzu, welcher sich wiederum in 2 <code>&lt;span&gt;</code>-Tags aufsplittet.</p>
<p>Wie man erkennen kan ist der Ablauf dem von PHP sehr ähnlich. Was das spätere Arbeiten mit <abbr title="Asyncron JavaScript And XML">AJAX</abbr> sehr erleichtert. Auch verhält sich ActionScript fast gleich, da es ähnlich strukturiert ist wie JavaScript.</p>
<ul>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/demo1.html" title="HTML-Datei">HTML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/red_xml.js" title="JavaScript-Datei">JavaScript-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/js-xml-creater.zip" title="komplettes Set">komplettes Set</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/16/schnelle-erstellung-mit-mit-php/" title="schnelle Erstellung von XML mit PHP">schnelle Erstellung von XML mit PHP</a></li><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/17/mit-javascript-xml-erzeugen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>schnelle Erstellung von XML mit PHP</title>
		<link>http://www.re-design.de/2007/12/16/schnelle-erstellung-mit-mit-php/</link>
		<comments>http://www.re-design.de/2007/12/16/schnelle-erstellung-mit-mit-php/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 23:00:18 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[dom-scripting]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=73</guid>
		<description><![CDATA[Das Verarbeiten von XML-Daten ist zwar prinzipiell sehr einfach, wenn man die Verarbeitung komplett mit dem DOM macht, aber trotzdem möchte ich hier und jetzt das Thema aufgreifen. In den späteren Artikeln meines Adventskalenders werde ich immer mal wieder serverseitiges Erzeugen und Verarbeiten von XML-Daten brauchen, weswegen hier die Basis gelegt werden soll. Im Prinzip [...]]]></description>
			<content:encoded><![CDATA[<p>Das Verarbeiten von <abbr title="Extensible Markup Language">XML</abbr>-Daten ist zwar prinzipiell sehr einfach, wenn man die Verarbeitung komplett mit dem <abbr title="Document Object Model">DOM</abbr> macht, aber trotzdem möchte ich hier und jetzt das Thema aufgreifen. In den späteren Artikeln meines Adventskalenders werde ich immer mal wieder serverseitiges Erzeugen und Verarbeiten von XML-Daten brauchen, weswegen hier die Basis gelegt werden soll.</p>
<p><span id="more-73"></span><br />
Im Prinzip gibt es in PHP nur 3 wichtige DOM-Klassen:</p>
<ol>
<li>DOMDocument</li>
<li>DOMElement</li>
<li>DOMNode</li>
</ol>
<p>Wobei</p>
<p>Um eine XML-Struktur von folgender Syntax zu schaffen, reicht ein relativ einfaches Script.</p>
<ol class="Sourcecode">
<li><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;</code></li>
<li><code>&lt;mitarbeiter&gt;</code></li>
<li><code>    &lt;person nr="2007-12-15-RE"&gt;</code></li>
<li><code></code><code>        &lt;nachname&gt;Reinsdorf&lt;/nachname&gt;</code></li>
<li><code></code><code>        &lt;vorname&gt;Enrico&lt;/vorname&gt;</code></li>
<li><code></code><code>        &lt;contacts&gt;</code></li>
<li><code>            &lt;email&gt;enrico@re-design.de&lt;/email&gt;</code></li>
<li><code>            &lt;telefon type="mobil"&gt;</code></li>
<li><code>                &lt;vorwahl&gt;0177&lt;/vorwahl&gt;</code></li>
<li><code>                &lt;nummer&gt;2822557&lt;/nummer&gt;</code></li>
<li><code>            &lt;/telefon&gt;</code></li>
<li><code></code><code>        &lt;/contacts&gt;</code></li>
<li><code>    &lt;/person&gt;</code></li>
<li><code>    &lt;person nr="2007-04-01-MM"&gt;</code></li>
<li><code>        &lt;nachname&gt;Mustermann&lt;/nachname&gt;</code></li>
<li><code>        &lt;vorname&gt;Max&lt;/vorname&gt;</code></li>
<li><code>        &lt;contacts&gt;</code></li>
<li><code>            &lt;email&gt;max@mustermann.de&lt;/email&gt;</code></li>
<li><code>            &lt;telefon type="büro"&gt;</code></li>
<li><code>                &lt;vorwahl&gt;1234&lt;/vorwahl&gt;</code></li>
<li><code>                &lt;nummer&gt;1234567&lt;/nummer&gt;</code></li>
<li><code>            &lt;/telefon&gt;</code></li>
<li><code>        &lt;/contact&gt;</code></li>
<li><code>    &lt;/person&gt;</code></li>
<li><code>&lt;/mitarbeiter&gt; </code></li>
</ol>
<p>Diese XML-Datei beinhaltet 2 Personen mit den dazugehörigen Vor- und Zuname und den Kontaktmöglichkeiten per Email und per Telefon.</p>
<p>Hier nur das <abbr title="PHP: Hypertext Preprocessor">PHP</abbr>-Script zum Erzeugen diese XML-Datenstruktur.</p>
<ol class="Sourcecode">
<li><code>&lt;?php</code></li>
<li><code>header('content-type: text/xml charset=utf-8');</code></li>
<li><code>/* @var $dom DOMDocument */</code></li>
<li><code>/* @var $mitarbeiter DOMElement */</code></li>
<li><code>/* @var $person DOMElement */</code></li>
<li><code>/* @var $contacts DOMElement */</code></li>
<li><code>/* @var $telefon DOMElement */</code></li>
</ol>
<p>Als erstes wird über die <code>header</code>-Funktion der richtige Inhaltstyp festgelegt, so dass die Browser auch die Sonderzeichen korrekt anzeigen können. Die weiteren Kommentare dienen nur meinem Zend-Studio zur Hilfe.</p>
<ol class="Sourcecode" start="start">
<li><code>$dom = new DOMDocument('1.0', 'utf-8');</code></li>
</ol>
<p>Als nächste wird ein neues DOM-Dokument angelegt.</p>
<ol class="Sourcecode" start="start">
<li><code>$mitarbeiter = $dom-&gt;appendChild(new DOMElement('mitarbeiter'));</code></li>
</ol>
<p>In dieses DOM-Objekt wird ein erster Knoten hineingelegt.</p>
<ol class="Sourcecode" start="start">
<li><code>$person = $mitarbeiter-&gt;appendChild(new DOMElement('person'));</code></li>
<li><code>$person-&gt;setAttribute('id','2007-12-16-RE');</code></li>
<li><code>$person-&gt;appendChild(new DOMElement('vorname','Enrico'));</code></li>
<li><code>$person-&gt;appendChild(new DOMElement('nachname','Reinsdorf'));</code></li>
</ol>
<p>Dann wird dem <code>&lt;mitarbeiter&gt;</code>-Knoten ein Unterknoten <code>person</code> hinzugefügt. Diesem Knoten wird ein Attribute und 2 Unterknoten mit direkten Texten zugewiesen.</p>
<ol class="Sourcecode" start="start">
<li><code>$contacts = $person-&gt;appendChild(new DOMElement('contacts'));</code></li>
<li><code>$contacts-&gt;appendChild(new DOMElement('email','enrico@re-design.de'));</code></li>
<li></li>
<li><code>$telefon = $contacts-&gt;appendChild(new DOMElement('telefon'));</code></li>
<li><code>$telefon-&gt;setAttribute('type','mobil');</code></li>
<li><code>$telefon-&gt;appendChild(new DOMElement('vorwahl','0177'));</code></li>
<li><code>$telefon-&gt;appendChild(new DOMElement('nummer','2822557'));</code></li>
</ol>
<p>Zum Schluss wird der <code>&lt;person&gt;</code>-Knoten mit dem Unterknoten contacts erweitert. Dieser erhält wiederum einem einfachen Unterknoten email und einem komplexen Unterknoten für die Telefonnummer.</p>
<ol class="Sourcecode" start="start">
<li><code>$person = $mitarbeiter-&gt;appendChild(new DOMElement('person'));</code></li>
<li><code>$person-&gt;setAttribute('id','2007-04-01-MM');</code></li>
<li></li>
<li><code>$person-&gt;appendChild(new DOMElement('vorname','Max'));</code></li>
<li><code>$person-&gt;appendChild(new DOMElement('nachname','Mustermann'));</code></li>
<li></li>
<li><code>$contacts = $person-&gt;appendChild(new </code><code>DOMElement('contacts'));</code></li>
<li><code>$contacts-&gt;appendChild(new DOMElement('email','max@mustermann.de'));</code></li>
<li></li>
<li><code>$telefon = $contacts-&gt;appendChild(new DOMElement('telefon'));</code></li>
<li><code>$telefon-&gt;setAttribute('type','büro');</code></li>
<li><code>$telefon-&gt;appendChild(new DOMElement('vorwahl','1234'));</code></li>
<li><code>$telefon-&gt;appendChild(new DOMElement('nummer','1234567'));</code></li>
</ol>
<p>Das ganz nun nochmals für die 2. Person. In späteren Script wird natürlich diese Zusammenstellung über eine Schleife erstellt und nicht, wie ich es jetzt gemacht habe von Hand.</p>
<ol class="Sourcecode" start="start">
<li><code>echo $dom-&gt;saveXML();</code></li>
<li><code>?&gt;</code></li>
</ol>
<p>Als Abschluss gebe ich das DOM-Object als XML-Datenformat an den Browser aus.</p>
<ul>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/create_dom.php" title="PHP-XML-Datei">PHP-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/mitarbeiter.xml" title="XML-Datei">XML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/xml-wrapper.zip" title="komplettes Set">komplettes Set</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/17/mit-javascript-xml-erzeugen/" title="Mit JavaScript DOM erzeugen">Mit JavaScript DOM erzeugen</a></li><li><a href="http://www.re-design.de/2009/03/04/einzelcoaching-php-xml-schulung/" title="Einzelcoaching &ndash; PHP-XML Schulung">Einzelcoaching &ndash; PHP-XML Schulung</a></li><li><a href="http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/" title="AJAX Adressbuch &#8211; Tutorial Teil 4">AJAX Adressbuch &#8211; Tutorial Teil 4</a></li><li><a href="http://www.re-design.de/2007/12/14/template-engine-mit-php/" title="Template-Engine mit <span class="caps">PHP</span>">Template-Engine mit <span class="caps">PHP</span></a></li><li><a href="http://www.re-design.de/2007/12/13/flashvideo-player-einfach-eingesetzt/" title="Flashvideo-Player einfach eingesetzt">Flashvideo-Player einfach eingesetzt</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/16/schnelle-erstellung-mit-mit-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX-Klasse, einfach gebaut</title>
		<link>http://www.re-design.de/2007/12/15/ajax-klasse-einfach-gebaut/</link>
		<comments>http://www.re-design.de/2007/12/15/ajax-klasse-einfach-gebaut/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 23:00:19 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[beispiel]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[klasse]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=32</guid>
		<description><![CDATA[Bei der Erstellung von moderen Websites spielt AJAX eine immer wichtigere Rolle. In diesem Tutorial möchte ich euch eine kleine JavaScript-Klasse vorstellen. Diese Klasse kann dann Grundlage für weiter tolle Webanwendungen sein kann. Die einfache und trotzdem flexible Verwendung der erstellten Klasse lag mir dabei besonders am Herzen. Verwendung der AJAX-Klasse Eingebunden und verwendet wird [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Erstellung von moderen Websites spielt AJAX eine immer wichtigere Rolle. In diesem Tutorial möchte ich euch eine kleine JavaScript-Klasse vorstellen. Diese Klasse kann dann Grundlage für weiter tolle Webanwendungen sein kann.</p>
<p>Die einfache und trotzdem flexible Verwendung der erstellten Klasse lag mir dabei besonders am Herzen.<br />
<span id="more-32"></span></p>
<h3>Verwendung der AJAX-Klasse</h3>
<p>Eingebunden und verwendet wird die Klasse über folgende Befehle:</p>
<ol class="Sourcecode">
<li><code>&lt;script type="text/javascript" src="ajax.js"&gt;&lt;/script&gt; </code></li>
<li><code>&lt;script type="text/javascript"&gt; </code></li>
<li><code>//&lt;![CDATA[ </code></li>
<li><code>function afterLoad(xml) </code></li>
<li><code>{ </code></li>
<li><code>    alert(xml.toString()); </code></li>
<li><code>} </code></li>
<li><code>ajax.callback = function() </code></li>
<li><code>{ </code></li>
<li><code>    afterLoad(this.responseXML); </code></li>
<li><code>} </code></li>
<li><code>  </code></li>
<li><code>ajax.init(); </code></li>
<li><code>ajax.load('getXML.php'); </code></li>
<li><code>  </code></li>
<li><code>//]]&gt; </code></li>
<li><code>&lt;/script&gt;</code></li>
</ol>
<p>Wie ihr seht ist diese Verarbeitung sehr einfach einzusetzen. Als erstes muss natürlich die Klasse in das HTML-Dokument eingebunden werden. Dann legt man fest was passieren soll, wie die Daten verarbeiter werden sollen. Zusätzlich sollte man in der eigentlichen Klasse definieren das diese Funktion auch aufgerufen wird, sonst passiert gar nichts. Dazu habe ich einen sogenannten Hock vordefiniert, der dann einfach mit Funktionalität gefüllt wird. Zum Schluß initialisiert man nur nach die Klasse, um das XMLHttpRequest-Objekt anzulegen und läd dann die entsprechende Datei von Server. Fertig ist ist ein flexibles Ladesystem per JavaScript.</p>
<h3>Detail zur AJAX-Klasse</h3>
<p>Natürlich möchte ich euch auch noch den Inhalt meiner Klasse kurz präsentieren, denn ich denke dadurch wird der Ausbau ud die Erweiterung relativ einfach.</p>
<ol class="Sourcecode">
<li><code>var ajax = { </code></li>
<li><code>    req             : null, </code></li>
<li><code>    url             : null, </code></li>
<li><code>    method          : 'GET', </code></li>
<li><code>    async           : false, </code></li>
<li><code>    responseXML     : null, </code></li>
<li><code>    responseText    : null, </code></li>
<li><code>    init : function() </code></li>
<li><code>        { </code></li>
<li><code>            try </code></li>
<li><code>            { </code></li>
<li><code>                this.req = new XMLHttpRequest(); </code></li>
<li><code>            } </code></li>
<li><code>            catch(e) </code></li>
<li><code>            { </code></li>
<li><code>                try </code></li>
<li><code>                { </code></li>
<li><code>                    this.req = new ActiveXObject('Microsoft.XMLHTTP'); </code></li>
<li><code>                } </code></li>
<li><code>                catch(e) </code></li>
<li><code>                { </code></li>
<li><code>                    this.req = null; </code></li>
<li><code>                } </code></li>
<li><code>            } </code></li>
<li><code>            if(this.req != null) </code></li>
<li><code>            { </code></li>
<li><code>                this.req.onreadystatechange = this.response; </code></li>
<li><code>            } </code></li>
<li><code>        }, </code></li>
<li><code>    load : function(u,m,a) </code></li>
<li><code>        { </code></li>
<li><code>            this.url = u; </code></li>
<li><code>            this.method = m || this.method; </code></li>
<li><code>            this.async = a || this.async; </code></li>
<li><code>            if(this.req != null) </code></li>
<li><code>            { </code></li>
<li><code>                this.req.open(this.method,this.url,this.async); </code></li>
<li><code>                this.req.send(); </code></li>
<li><code>            } </code></li>
<li><code>        }, </code></li>
<li><code>    response : function() </code></li>
<li><code>        { </code></li>
<li><code>            var a = ajax.req; </code></li>
<li><code>            if(a.readyState == 4) </code></li>
<li><code>            { </code></li>
<li><code>                if(a.status==0 || a.status==200 || a.statusText=='OK') </code></li>
<li><code>                { </code></li>
<li><code>                    ajax.responseXML = a.responseXML; </code></li>
<li><code>                    ajax.responseText = a.responseText; </code></li>
<li><code>                    ajax.callback(); </code></li>
<li><code>                } </code></li>
<li><code>            } </code></li>
<li><code>        }, </code></li>
<li><code>    callback : function(){} </code></li>
<li><code>};</code></li>
</ol>
<p>Ich habe mich bei der Erstellung der Klasse für Literal-Objekt entschieden, da ich die Verwendbarkeit dadurch als sehr einfach empfinde und das Instanzieren des Objektes entfällt.</p>
<h4>Eigenschaften der Klasse</h4>
<ul>
<li><strong>req</strong><br />
Hier wird später das XMLHttpRequest-Objekt abgespeichert, welches ja für den Verbindungsaufbau zu Datenquellen nötig ist.</li>
<li><strong>url</strong><br />
Um später die URL auch in einem regelmäßigen Verfahren immer wieder abzurufen, wird sie in dieser Eigenschaft abgespeichert.</li>
<li><strong>method</strong><br />
Auch wird für weitere Verwendung die Übertragungsmethode als Eigenschaft festgehalten. Mögliche sinnvolle Werte sind in diesem Fall HEAD, PUT und GET, wobei letzteres der Defaultwert ist.</li>
<li><strong>async</strong><br />
Um eine synchrone Übertragen der Daten ein zustellen, setzt man diese Eigenschaft auf true.</li>
<li><strong>responseXML</strong> und <strong>responseText</strong><br />
In diesen beiden Eigenschaften wird nach erfolgreicher Übertragung der Daten die Ergebnis gespeichert. Einmal als normale Zeichenkette und einmal als ein XML-Objekt.</li>
</ul>
<h4>Methoden der Klasse</h4>
<ul>
<li><strong>init()</strong><br />
Diese Methode sollte immer vor allen anderen Methodenaufrufen benutzt werden, da sie das XMLHttpREquest instanziert und gleichzeitig wird festgelegt, dass die response()-Methode beim Statuswechsel aufgerufen werden soll.</li>
<li><strong>load(u,m,a)</strong><br />
Durch die 3 übergebenen Parameter wird als erstes die URL der Datenquelle, die Übertragungsmethode und synchrone oder asynchrone Art festgelegen. Dann wird die Datenquelle geladen.</li>
<li><strong>response()</strong><br />
In dieser Methode wird der Status der Übertragung und der Status des Übertragenen überprüft. Im Erfolgsfall werden die übertragenen Daten in die entsprechenen Eigenschaften übertragen und die callback()-Methode aufgerufen.</li>
<li><strong>callback()</strong><br />
Dieser Hock dient zur flexiblen Benutzung der Klassen. Mit dem Überschreiben der leeren Funktion bestimmt man extern was mit dem Daten nach dem Laden geschehen soll.</li>
</ul>
<h4>Download der Dateien</h4>
<ul>
<li><a href="http://www.er-design.de/Downloads/AJAX-Klasse/ajax.js">AJAX-Klasse</a></li>
<li><a href="http://www.er-design.de/Downloads/AJAX-Klasse/ajax.html">HTML-Datei </a></li>
<li><a href="http://www.er-design.de/Downloads/AJAX-Klasse/ajax-klasse.zip">Kompletes Beispiel als ZIP-Datei</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/12/dynamische-linkliste-bringt-mehr-usability/" title="dynamische Linkliste bringt mehr Usability">dynamische Linkliste bringt mehr Usability</a></li><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2008/12/13/ajax-php-schulung-in-stuttgart/" title="AJAX &ndash; PHP Schulung in Stuttgart">AJAX &ndash; PHP Schulung in Stuttgart</a></li><li><a href="http://www.re-design.de/2008/01/29/ajax-adressbuch/" title="AJAX Adressbuch">AJAX Adressbuch</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/15/ajax-klasse-einfach-gebaut/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Template-Engine mit PHP</title>
		<link>http://www.re-design.de/2007/12/14/template-engine-mit-php/</link>
		<comments>http://www.re-design.de/2007/12/14/template-engine-mit-php/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 23:00:08 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[klasse]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=71</guid>
		<description><![CDATA[Immer wieder brauche ich für das Erstellen von komplexeren Webanwendungen eine kleine Template-Engine. Ich könnte dann zwar auf bestehende Syteme wie z.B. Smarty oder PatTemplate. Ich habe mir schon vor langer Zeit ein kleines Script zusammengeschrieben und möchte es heute hier mit euch teilen. Es ist ja Weihnachten. Zuerst einmal die grundlegende Vorgehensweise. Die sich [...]]]></description>
			<content:encoded><![CDATA[<p>Immer wieder brauche ich für das Erstellen von komplexeren Webanwendungen eine kleine Template-Engine. Ich könnte dann zwar auf bestehende Syteme wie z.B. Smarty oder PatTemplate. Ich habe mir schon vor langer Zeit ein kleines Script zusammengeschrieben und möchte es heute hier mit euch teilen. Es ist ja Weihnachten.</p>
<p><span id="more-71"></span><br />
Zuerst einmal die grundlegende Vorgehensweise. Die sich auf meiner Sicht heraus als sehr einfach erweist.</p>
<ol class="Sourcecode">
<li><code>$tpl = new Template('path/to/template/directory/');</code></li>
<li><code>$tpl-&gt;load('file.name');</code></li>
<li><code>$tpl-&gt;set('##KEYWORD##', 'Replace String');</code></li>
<li><code>$tpl-&gt;write();</code></li>
</ol>
<p>Klar das ich als erstes die Template-Klasse instazieren muss. Dies tue ich mit der gleichzeitigen Übergabe der Template-Ordners. Als nächstes lade ich dann die eigentliche Template-Datei. Und dann gebe ich allen Keywords, also Schlüsselworten, die ich im Template gebrauche einen Wert. Zum Schluss schicke ich das Template zum Browser.</p>
<p>Bestimmt gibt es jetzt noch viele Einwände was man noch einbauen könnte oder sollte, was noch alles fehlt und nicht berücksichtige wird, aber ich glaube gerade diese Einfachheit macht die Klasse so schnell nutzbar.</p>
<p>Das Template, welches geladen wird und später dann an den Browser geschickt wird, ist eine reine <abbr title="Hypertext Markup Language">HTML</abbr>-Datei. Ich brauche also keine spezielle Konfiguration meines Editors um die Template-Dateien zu öffnen. Ich nutze einfach normale HTML-Dateien und dort wo der dynamische Text hinkommen soll definiere ich ein Schlüsselwort, welches folgende Syntax hat: <code>##UPPERCASE_WORD##</code>.</p>
<p>Nun zu meiner eigentlichen Template-Klasse. Sie besitzt mehr als die oben gezeigten Funktionalitäten.</p>
<p>Folgendes kann in dieser Klasse genutzt werden:</p>
<dl>
<dt><code>RED_Template($path=null)</code> </dt>
<dd>Dies ist der Konstruktor der einen Pfad zum Template-Ordner erwartet. Falls die Parameter leer bleibt wird auf Root-Ebene ein Default-Ordner als Stammverzeichnis für die Templates genutzt. </dd>
<dt><code>load($file)</code> </dt>
<dd>Diese Methode lädt die Template-Datei in die Klassen-Eigenschaft <code>$source</code> falls sie vorhanden ist. Falls sie nicht existiert wird in die Klassen-Eigenschaft <code>$error</code> eine Fehlermeldung geschrieben und der Wert false zurück gegeben. </dd>
<dt><code>reload()</code> </dt>
<dd>Es kommt immer wieder vor, dass die geladene Template-Datei erneut geladen werden muss. Dabei habe ich mir aber überlegt, dass es überflüssig und Ressourcen verschwendend ist, wenn sie tatsächlich erneut geladen werden müsste. Deshalb wird beim ersten Laden der Datei eine Kopie in eine weitere Klassen-Eigenschaft <code>$cache</code> abgelegt. So muss hier nur noch ein Überschrieben die <code>$source</code>-Eigenschaft stattfinden. </dd>
<dt><code>setSource($src='')</code> </dt>
<dd>Diese Methode benutze ich kaum. Ich habe sie nur eingebaut, um die Möglichkeit zu haben nach dem laden der Template-Datei eine andere Datei zu laden. Das ist aber bis jetzt noch nie vorgekommen. </dd>
<dt><code>set($key, $value)</code> </dt>
<dd>Hier nun die wichtigste Methode. Hier werden die Schlüsselbegriff und ihre Werte in einen Array gesammelt um später eingesetzt zu werden. </dd>
<dt><code>replace()</code> </dt>
<dd>Mit der relace-Methode werden die gesammelten Schlüsselbegriffe in das geladene Templat eingesetz, bzw. die Schüsselbegriffe durch ihre Werte ersetzt. Diese Methode sollte eigentlich niemals direkt aufgerufen werden, aber da es in PHP 4 noch keine Zugriffsrechte für Variablen gab habe ich sie einfach so geschrieben. </dd>
<dt><code>get($source=false)</code> </dt>
<dd>Um mit der ersetzten Template-Datei in PHP weiterarbeiten zu können, habe ich eine <code>get</code>-Methode eingefügt, die nicht direkt das Template an den Browser gibt. Mit dem Parameter <code>$source</code> kann ich bestimmen ob ich den lesbaren Quellcode haben möchte oder lieber doch die benutzbaren Quellcode. </dd>
<dt><code>write($source=false)</code> </dt>
<dd>In vielen Fällen möchte ich aber dass das Template direkt an den Browser gesendet wird. Die <code>write()</code>-Methode ruft eigentlich nur die <code>get()</code>-Methode auf und reicht der Parameter weiter. </dd>
<dt><code>error($msg)</code> </dt>
<dd>Alle Fehlermeldungen werde mit dieser Methode in einem Array gesammelt um ihn später abrufen zu können. es wäre z.B. auch denkbar, dass diese Fehler dann in eine Logdatei umgeleitet werden. </dd>
<dt><code>getError()</code> </dt>
<dd>Meine letzte Funktion gibt immer die letzte Fehlermeldung aus dem Array zurück. </dd>
</dl>
<p>Mit diesem System wäre es z.B. sehr einfach einzelne HTML-Blöcke in Template-Dateien auszulagen und sie dann nacheinander in sich zu laden um so eine komplette Ausgabe zu kommen.</p>
<ol class="Sourcecode">
<li><code>$news = load_all_news();</code></li>
<li><code>$content = '';</code></li>
<li><code></code></li>
<li><code>$tpl = new Template('nachrichten/template/');</code></li>
<li><code>$tpl-&gt;load('nachricht.html');</code></li>
<li><code></code></li>
<li><code>foreach($news as $item)</code></li>
<li><code>{</code></li>
<li><code></code><code>$tpl-&gt;set('##TITLE##', Sitem-&gt;title);</code></li>
<li><code></code><code>$tpl-&gt;set('##TEASER##', Sitem-&gt;teaser);</code></li>
<li><code></code><code>$tpl-&gt;set('##DATE##', Sitem-&gt;date);</code></li>
<li><code></code><code>$tpl-&gt;set('##MORELINK##', Sitem-&gt;link);</code></li>
<li><code></code></li>
<li><code>$content = </code><code>$tpl-&gt;get();</code></li>
<li><code></code></li>
<li><code></code><code>$tpl-&gt;replace();</code></li>
<li><code>}</code></li>
<li><code>$tpl-&gt;load('uebersicht.html');</code></li>
<li><code>$tpl-&gt;set('##HEADLINE##', 'Aktuelle Meldungen');</code></li>
<li><code>$tpl-&gt;set('##CONTENT##', $content)</code></li>
<li><code>$tpl-&gt;write();</code></li>
</ol>
<ul>
<li></li>
<p>Hier der Download meiner PHP Template Klasse</p>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/classtemplate.php" title="Template-Klasse">Template-Klasse</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2010/08/31/website-the-lakeside-heritage-society/" title="Website &#8211; The Lakeside Heritage Society">Website &#8211; The Lakeside Heritage Society</a></li><li><a href="http://www.re-design.de/2010/08/28/website-quchu/" title="Website &#8211; Q&rsquo;uchu">Website &#8211; Q&rsquo;uchu</a></li><li><a href="http://www.re-design.de/2010/08/12/website-watermelon-ministries/" title="Website &#8211; Watermelon Ministries">Website &#8211; Watermelon Ministries</a></li><li><a href="http://www.re-design.de/2008/12/14/tag-14-template-class/" title="Tag 14 – Template Class">Tag 14 – Template Class</a></li><li><a href="http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/" title="AJAX Adressbuch &#8211; Tutorial Teil 4">AJAX Adressbuch &#8211; Tutorial Teil 4</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/14/template-engine-mit-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flashvideo-Player einfach eingesetzt</title>
		<link>http://www.re-design.de/2007/12/13/flashvideo-player-einfach-eingesetzt/</link>
		<comments>http://www.re-design.de/2007/12/13/flashvideo-player-einfach-eingesetzt/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 23:00:34 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=65</guid>
		<description><![CDATA[Nachdem ich gestern mit einem kleinen JavaScript Link durch Fußnoten in einem Text ersetzt und eine Linkliste hinzugefügt habe, zeige ich heute eine weiter Möglichkeit nicht alles von Hand zu erstellen. Ich fand es schon immer umständlich für jedes FLV-Video einen eigenen Video-Player zu erstellen. Es wäre doch schönen wenn man nur einen Player nutzen [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich gestern mit <a href="http://www.re-design.de/workbook/?p=61" title="direkt zum Artikel" rel="related">einem kleinen JavaScript</a> Link durch Fußnoten in einem Text ersetzt und eine Linkliste hinzugefügt habe, zeige ich heute eine weiter Möglichkeit nicht alles von Hand zu erstellen.</p>
<p>Ich fand es schon immer umständlich für jedes FLV-Video einen eigenen Video-Player zu erstellen. Es wäre doch schönen wenn man nur einen Player nutzen müsste und ihn über externe Parameter steuern könnte, z.B. welches Video er anzeigen sollte.</p>
<p><span id="more-65"></span><br />
Mit diesem kleinen Tool-Set habe ich versucht diese Idee umzusetzen. Wie aber funktioniert das ganze nun? Als erstes erstmal eine Auflistung aller Beteiligten:</p>
<ul>
<li>videoplayer.html</li>
<li>Video-Player.swf</li>
<li>videos.xml</li>
<li>videos
<ul>
<li>test-01.flv</li>
<li>test-02.flv</li>
<li>test-03.flv</li>
</ul>
</li>
</ul>
<h3>Der Vorgang</h3>
<p>Wie habe ich mir nun den Ablauf vorgestellt? Nun, ich dachte mir ich übergebe per GET an den Videoplayer eine ID. Mit dieser ID sucht der Videoplayer in der XML-Datei den Knoten mit allen wichtigen Informationen. So einfach.</p>
<h3>Aufbau der XML-Datei</h3>
<p>Dieser ist relativ. Es gibt das Root-Verzeichnis und dann die Unterknoten die mit dem id-Attribut versehen werden. In diesen Unterknoten werden alle weiteren Informationen eingebunden die der Videoplayer braucht.</p>
<ol class="Sourcecode">
<li><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; </code></li>
<li><code>&lt;videos&gt;</code></li>
<li><code>&lt;video id="2007-12-13"&gt;</code></li>
<li><code>&lt;name&gt;Test 1&lt;/name&gt;</code></li>
<li><code>&lt;source&gt;videos/test_01.flv&lt;/source&gt;</code></li>
<li><code>&lt;/video&gt;</code></li>
<li><code>&lt;video id="2007-12-24"&gt;</code></li>
<li><code>&lt;name&gt;Test 2&lt;/name&gt;</code></li>
<li><code>&lt;source&gt;videos/test_02.flv&lt;/source&gt;</code></li>
<li><code>&lt;/video&gt;</code></li>
<li><code>&lt;video id="2007-12-01"&gt;</code></li>
<li><code>&lt;name&gt;Test 3&lt;/name&gt;</code></li>
<li><code>&lt;source&gt;videos/test_03.flv&lt;/source&gt;</code></li>
<li><code>&lt;/video&gt;</code></li>
<li><code>&lt;/videos&gt;</code></li>
</ol>
<p>Der ActionScript</p>
<h3></h3>
<p>Hier wird als erstes der übergebene Parameter in eine globale Variable geladen. Dann die XML-Datei geholt. Die Knoten werden über eine for-Schleifen durchlaufen und die IDs mit dem Parameter verglichen.</p>
<ol class="Sourcecode">
<li><code>_root.onLoad = function()</code></li>
<li><code>{</code></li>
<li><code>if (_level0.file_id == undefined) {</code></li>
<li><code>_global.id = 0;</code></li>
<li><code>} else {</code></li>
<li><code></code><code>_global.id = _level0.file_id;</code></li>
<li><code>}</code></li>
<li><code>status_txt.text = _global.id;</code></li>
<li><code>status_txt.text += 'n';</code></li>
<li><code>var xml:XML = new XML();</code></li>
<li><code>xml.ignoreWhite = true;</code></li>
<li><code></code><code>xml.onLoad = function(s:Boolean)</code></li>
<li><code>{</code></li>
<li><code>if(s)</code></li>
<li><code>{</code></li>
<li><code>status_txt.text += 'loadedn'; </code></li>
<li><code>var nodes:XMLNode = this.firstChild; </code></li>
<li><code>for(var i:Number=0; i&lt;nodes.childNodes.length; i++) </code></li>
<li><code>{ </code></li>
<li><code>var node:XMLNode = nodes.childNodes[i]; </code></li>
<li><code>if(node.attributes['id'] == _global.id) </code></li>
<li><code>{ </code></li>
<li><code>status_txt.text += node.childNodes[0].firstChild.nodeValue; </code></li>
<li><code>status_txt.text += 'n'; </code></li>
<li><code>status_txt.text += node.childNodes[1].firstChild.nodeValue; </code></li>
<li><code>myPlayer.contentPath = node.childNodes[1].firstChild.nodeValue; </code></li>
<li><code>} </code></li>
<li><code>} </code></li>
<li><code>} </code></li>
<li><code>} </code></li>
<li><code>xml.load('videos.xml'); </code></li>
<li><code>};</code></li>
</ol>
<p>Zum Schluss nur noch die Videos in das angegebene Verzeichnis ablegen und glücklich sein.</p>
<ul>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/video-player.html" title="HTML-Datei">HTML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/videos.xml" title="XML-Datei">XML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/player.fla" title="Flasch-Datei">Flasch-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/player.swf" title="SWF-Datei">SWF-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/flash-video.zip" title="komplettes Set">komplettes Set</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/03/25/dozent-an-der-macromedia-fachhochschule/" title="Dozent an der Macromedia Fachhochschule">Dozent an der Macromedia Fachhochschule</a></li><li><a href="http://www.re-design.de/2010/11/03/flash-programmierung-lr-health-beauty/" title="Flash Programmierung &#8211; LR Health &amp; Beauty">Flash Programmierung &#8211; LR Health &amp; Beauty</a></li><li><a href="http://www.re-design.de/2010/10/28/mobil-games-mit-flash-buch/" title="Mobil Games mit Flash &ndash; Buch">Mobil Games mit Flash &ndash; Buch</a></li><li><a href="http://www.re-design.de/2010/10/28/flash-enginneering-buch/" title="Flash Enginneering &ndash; Buch">Flash Enginneering &ndash; Buch</a></li><li><a href="http://www.re-design.de/2010/05/29/actionscript-3-flex/" title="ActionScript 3 &amp; Flex">ActionScript 3 &amp; Flex</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/13/flashvideo-player-einfach-eingesetzt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>dynamische Linkliste bringt mehr Usability</title>
		<link>http://www.re-design.de/2007/12/12/dynamische-linkliste-bringt-mehr-usability/</link>
		<comments>http://www.re-design.de/2007/12/12/dynamische-linkliste-bringt-mehr-usability/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 23:00:26 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[beispiel]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[link-generator]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=61</guid>
		<description><![CDATA[Heute möchte ich euch ein kleines JavaScript geben, welches aus einem vorgegebenen &#60;div&#62;-Container alles Links extrahiert und sie als Linkliste am Ende des Containers anhängt. Hier gibt es das Demo. Warum macht es Sinn eine solche Linkliste zu erstellen? Nun fast jeder der sich mit benutzerfreundlichen Websites auseinandersetzt weiß, dass Links innerhalb von Fließtext den [...]]]></description>
			<content:encoded><![CDATA[<p>Heute möchte ich euch ein kleines JavaScript geben, welches aus einem vorgegebenen <code>&lt;div&gt;</code>-Container alles Links extrahiert und sie als Linkliste am Ende des Containers anhängt. Hier gibt es das <a title="weiter zur Demonstration" rel="demo" href="http://weblabor.re-design.de/Linklist/demo.html">Demo</a>.</p>
<p>Warum macht es Sinn eine solche Linkliste zu erstellen? Nun fast jeder der sich mit benutzerfreundlichen Websites auseinandersetzt weiß, dass Links innerhalb von Fließtext den Lesefluss stören. Außerdem kann es möglich sein Leser zu verlieren, wenn sie den Links innerhalb des Textes folgen und nicht wieder zurück kommen. Es ist besser erst am Ende des Textes alle im Text empfohlenen Links aufzulisten.<br />
<span id="more-61"></span><br />
Leider kann es sehr mühselig sein, die Passagen im Text mit Fußnoten zu kennzeichnen und dann im unteren Bereich eine Linkliste mit Ankerpunkten zu erstellen. Sowas kann wunderbar JavaScript mit einem Automatismus übernehmen.</p>
<h3>Einbindung des Link-Generators</h3>
<p>Ich habe mir überlegt, dass die Einbindung möglichst einfach sein sollte. Deshalb habe ich ein externes Script geschrieben, welches eine Variable mit einem Literal erzeugt. Dieses Script muss nur in die eigene Website eingebunden werden und ein Event festgelegt werden, wann die Abarbeitung beginnen soll.</p>
<ol class="Sourcecode">
<li><code>&lt;script src="RED_LinkGenerator.js" type="text/javascript"&gt;&lt;/script&gt;</code></li>
<li><code>&lt;script type="text/javascript"&gt;</code></li>
<li><code>//&lt;![CDATA[</code></li>
<li><code>window.onload = function()</code></li>
<li><code>{</code></li>
<li><code>var content = document.getElementById('content');</code></li>
<li><code>RED_LinkGenerator.init(content);</code></li>
<li><code>RED_LinkGenerator.writeList();</code></li>
<li><code>}</code></li>
<li><code>//]]&gt;</code></li>
<li><code>&lt;/script&gt;</code></li>
</ol>
<p>Als Übergabeparameter für die Initialisierung wird der Container gewählt in dem die Links enthalten sind. Hier z.B. der <code>&lt;div&gt;</code>-Container mit der ID <dfn>content</dfn>. Als nächstes muss nur noch die <code>writeList()</code>-Methode ausgeführt werden und das Script erzeugt am Ende des übergebenen Containers eine sortierte Liste.</p>
<p>Ich habe extra diesen Vorgang in 2 Schritte unterteilt, um flexibel zu bleiben, denn ich kann mir vorstellen später eine Methode zu schreiben, die in einen komplett anderen Container die Liste schreibt oder auch einfach nur den Array zurückgibt.</p>
<h3>Der Link-Generator selbst</h3>
<p>Ich werde jetzt hier nicht jeden einzelnen Schritt erklären. Ich versuche mich auf die wichtigsten Punkte zu beschränken.</p>
<h4>Die Initialisierung</h4>
<p>Hier wird einfach nur der übergebene Container abgespeichert.</p>
<ol class="Sourcecode">
<li><code>init: function(content)</code></li>
<li><code>{</code></li>
<li><code>this.container = content;</code></li>
<li><code>},</code></li>
</ol>
<h4>Die Methode <code>writeList()</code></h4>
<ol class="Sourcecode">
<li><code>writeList: function()</code></li>
<li><code>{</code></li>
<li><code>var nodes = this.container.getElementsByTagName('A');</code></li>
<li><code>var ol = document.createElement('OL');</code></li>
<li><code>for(var n=nodes.length-1, f=nodes.length; n&gt;=0; n--, f--)</code></li>
<li><code>{</code></li>
<li><code>var parent = nodes[n].parentNode;</code></li>
<li><code>var a = document.createElement('A');</code></li>
<li><code>a.setAttribute('href', '#a_'+n);</code></li>
<li><code>a.appendChild(document.createTextNode('['+f+']'));</code></li>
<li><code>var foot = document.createElement('SUB');</code></li>
<li><code>foot.appendChild(a);</code></li>
<li><code>var span = document.createElement('SPAN');</code></li>
<li><code>span.appendChild(document.createTextNode(nodes[n].firstChild.nodeValue));</code></li>
<li><code>span.appendChild(foot);</code></li>
<li><code>var li = document.createElement('LI');</code></li>
<li><code>var a = document.createElement('A');</code></li>
<li><code>a.appendChild(document.createTextNode(nodes[n].firstChild.nodeValue));</code></li>
<li><code>a.setAttribute('href', nodes[n].href);</code></li>
<li><code>a.setAttribute('id', 'a_'+n);</code></li>
<li><code>li.appendChild(a);</code></li>
<li><code>this.list.push(li);</code></li>
<li><code>parent.insertBefore(span, nodes[n]);</code></li>
<li><code>parent.removeChild(nodes[n+1]);</code></li>
<li><code>}</code></li>
<li><code>for(var n=this.list.length-1; n&gt;=0;n--)</code></li>
<li><code>{</code></li>
<li><code>ol.appendChild(this.list[n]);</code></li>
<li><code>}</code></li>
<li><code>this.container.appendChild(ol);</code></li>
<li><code>}</code></li>
</ol>
<p>In Zeile 15 werden aus dem Text alle Link gesucht und in Zeile 16 schon mal ein <abbr title="Hypertext Markup Language">HTML</abbr>-Knoten für die sortierte Liste angelegt.</p>
<p>Danach wird über eine <code>for</code>-Schleife alle Link-Knoten von hinten nach vorne verarbeitet, die Erklärung folgt später. Dabei wird als Erstes ein Verweis auf den Eltern-Knoten gespeichert und dann ein Link als Fußnote generiert (Zeile 22 &#8211; 27).</p>
<p>Diese Fußnote wird zusammen mit dem Linktext in einen neuen <code>&lt;span&gt;</code>-Tag gestellt (Zeile 29 &#8211; 31).</p>
<p>Danach wird der Listeneintrag mit einer Kopie des Orginallinks erzeugt (Zeile 33 &#8211; 39). Dieser Listeneintrag wird erstmal in einem Array zwischengespeichert.</p>
<p>Anschließend wird der Span-Knoten vor dem eigentlichen Link eingesetzt (Zeile 42) und der Link gelöscht (Zeile 43). Dabei muss aber darauf geachtet werden, dass in der Variablen <var>nodes</var> ein Verweis auf alle Links innerhalb des Container ist und wenn wie hier ein neuer Link, die Fußnote, hinzukommt auch die Anzahl der Links innerhalb des Textes steigt. Deshalb muss beim Löschen <code>n+1</code> gerechnet werden. Durch diese dynamische Änderung der Menge der Links im Array hat mich auch veranlasst von hinten nach vorne zu arbeiten, denn dadurch wird der Löschvorgang vereinfacht.</p>
<p>Zum Schluss muss nur noch die geordnete Liste erzeugt werden. Da aber die Links im Array in der verkehrten Reihenfolge stehen, habe ich wieder von hinten nach vorne gearbeitet, um die richtige Reihenfolge zu bekommen (Zeile 45 &#8211; 48).</p>
<h4>Fazit</h4>
<p>Ich hoffe ich konnte mit diesem kleine Beispiel zeige, wie JavaScript das Arbeiten im Web erleichtern kann. Keine Ahnung ob das schon ein Ansatz von Web 2.0 ist, aber ich finde der Automatismus kann sich schon sehen lassen.</p>
<ul>
<li><a title="komplettes Set" href="http://weblabor.re-design.de/linklist.zip">Download</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/15/ajax-klasse-einfach-gebaut/" title="AJAX-Klasse, einfach gebaut">AJAX-Klasse, einfach gebaut</a></li><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/12/dynamische-linkliste-bringt-mehr-usability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Redirect hilft bei Ver&#228;nderungen</title>
		<link>http://www.re-design.de/2007/12/11/redirect-hilft-bei-veraenderungen/</link>
		<comments>http://www.re-design.de/2007/12/11/redirect-hilft-bei-veraenderungen/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 22:00:08 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=60</guid>
		<description><![CDATA[Dieses Thema hatte ich schon lange im Kopf, hatte aber leider noch nie Zeit gefunden darüber einmal detaillierter zu schreiben. Nun aber, dadurch das mich heut fast alle Browser mit den Thema CSS 3 im Stich gelassen haben, habe ich die Zeit und den Platz gefunden darüber zu berichte. Ein Website kann noch so gut [...]]]></description>
			<content:encoded><![CDATA[<p>Dieses Thema hatte ich schon lange im Kopf, hatte aber leider noch nie Zeit gefunden darüber einmal detaillierter zu schreiben. Nun aber, dadurch das mich heut fast alle Browser mit den Thema <abbr title="Cascading Style Sheet">CSS</abbr> 3 im Stich gelassen haben, habe ich die Zeit und den Platz gefunden darüber zu berichte.</p>
<p>Ein Website kann noch so gut geplant sein, im Laufe der Zeit werden sich immer wieder die Strukturen und damit die <abbr title="Uniform Resource Identifier">URI</abbr>s von Ressourcen ändern. Das ist ganz normal. Normal ist auch, dass solche Ressourcen Spuren im Web hinterlassen haben. Zum einen natürlich in Suchmaschinen, die diese indexiert haben. Zusätzlich habe vielleicht aber auch Besucher diese Adressen in ihren sozialen Netzwerken wie <a href="http://del.icio.us" title="weiter zur Homepage" rel="tag">del.icio.us</a>, <a href="http://www.mister-wong.de/" title="weiter zur Homepage" rel="tag">Mister Wong</a>, <a href="http://www.yigg.de/" title="weiter zur Homepage" rel="tag">Yigg</a> oder <a href="http://www.google.com/bookmarks/" title="weiter zur Homepage" rel="tag">Google Bookmarks</a> oder aber ganz normal als Favorit abgespeichert. Wenn sich nun die Adressierung ändert, sollten natürlich Besucher die noch zur alten Adressen wollen weitergeleitet werden. Und genau da kommt die <strong>Apache Direktive</strong> <code>redirect</code> ins Spiel.</p>
<p><span id="more-60"></span><br />
Per Definition ist folgende Syntax zulässig:</p>
<ol class="Sourcecode">
<li><code>Redirect [Status] &lt;Pfad&gt; &lt;URI&gt;</code></li>
</ol>
<p>Aber wohin schreibt man diese Zeile? Ganz einfach! In die <code>.htaccess</code>-Datei in das Hauptverzeichnis seines Webspaces.</p>
<p>Und was bedeutet Sie? Auch das ist ganz einfach! <code>redirect</code> bedeutet wir wollen einen Weiterleitung definieren. Mit dem Status, der optional ist, gibt man den Weiterleitungsstatus an. Es gibt verschiedene Stati:</p>
<dl>
<dt><strong><code>301 Moved Permanently</code> </strong></dt>
<dd>Die Ressource ist dauerhaft unter einer anderen URI erreichbar. Dadurch wird z.B. direkt bei Suchmaschinen veranlasst, dass die Adresse im Index aktualisiert wird. </dd>
<dt><strong><code>302 Temp</code> </strong></dt>
<dd>Die Ressource ist vorübergehend unter einer anderen URI erreichbar. </dd>
<dt><strong><code>403 Forbidden</code> </strong></dt>
<dd>Der Zugriff auf die Ressource wird verweigert. Durch eine Weiterleitung können störende Fehlermeldungen des Servers korrigiert werden. </dd>
<dt><strong><code>404 File not Found</code> </strong></dt>
<dd>Die Ressource wird unter der URI nicht gefunden. Sinnvolle Weiterleitung wäre z.B. auf die interne Suche, um dort die Ressource zu finden. </dd>
<dt><strong><code>410 Gone</code> </strong></dt>
<dd>Die Ressource existiert nicht mehr. Bei vielen Suchmaschinen wird dadurch der Verweis zur Ressource aus dem Index gelöscht. </dd>
</dl>
<p>Da der Status ein optionaler Wert ist, kann man ihn auch weglassen, dabei wird dann aber der Default-Wert <code>302</code> eingesetzt.</p>
<p>Unter dem Pfad gibt man die angefragte Ressource an und bei der URI schreibt man dann die neue Adresse als absoluten Pfad auf.</p>
<p>Um das Ganze etwas besser zu verdeutlichen hier ein kleines Beispiel. Eine zum Download hinterlegte Datei wird aus dem Download-Ordner dauerhaft in den Projekt-Ordner verschoben:</p>
<ol class="Sourcecode">
<li><code>Redirect 301 /Downloads/Software.exe http://www.re-design.de/Projekt/Download/Software.exe</code></li>
</ol>
<p>Eine weitere nützliche Hilfe bietet die serverseitige Weiterleitung bei unterschiedlichen Schreibweisen der Adressierung bzw. bei Tippfehlern. Beim nächsten Beispiel leiten alle Angaben auf die gleiche URI weiter:</p>
<ol class="Sourcecode">
<li><code>Redirect 301 /Kontakt.html http://www.re-design.de/kontakt.html</code></li>
<li><code>Redirect 301 /kontakt.htm http://www.re-design.de/kontakt.html</code></li>
<li><code>Redirect 301 /contact.html http://www.re-design.de/kontakt.html</code></li>
<li><code>Redirect 301 /contact.htm http://www.re-design.de/kontakt.html</code></li>
<li><code>Redirect 301 /contact/ http://www.re-design.de/kontakt.html</code></li>
</ol>
<p>Zusätzlich hat natürlich die serverseitige Weiterleitung gegenüber der clientseitigen Weiterleitung durch JavaScript oder mit der Meta-Angabe <code>refresh</code>, dass Suchmaschinen bei der Weiterleitung keine Doorway-Seite vermuten, da sie diesen gesamten Vorgang nicht mitbekommen.</p>
<p>Um jetzt nicht umdständliche Weiterleitungslisten zu schreiben, gibt es die Apache Direktive <code>redirectMatch</code>. In dieser kann man mit regulären Ausdrücken arbeiten und so mit Suchmustern die verschieden Schreibweisen abfangen. Aber das ist nicht unbedingt Thema dieses Artikel und würde zu weit schon in die Tiefe gehen. Es soll lediglich als Ausblick dienen, genauso wie die Apache Direktive <code>mod_rewrite</code> die ich vielleicht in einem späteren Artikel genauer behandeln werden.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/04/26/dreamweaver-schulung-fr-den-solar-verlag/" title="Dreamweaver-Schulung f&#252;r den Solar Verlag">Dreamweaver-Schulung f&#252;r den Solar Verlag</a></li><li><a href="http://www.re-design.de/2008/03/01/transcending-css/" title="Transcending CSS">Transcending CSS</a></li><li><a href="http://www.re-design.de/2008/03/01/little-boxes/" title="Little Boxes">Little Boxes</a></li><li><a href="http://www.re-design.de/2008/03/01/das-website-handbuch/" title="Das Website Handbuch">Das Website Handbuch</a></li><li><a href="http://www.re-design.de/2008/02/25/css-seminar-bei-vva/" title="CSS-Seminar bei VVA">CSS-Seminar bei VVA</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/11/redirect-hilft-bei-veraenderungen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Die Macht der Selektoren</title>
		<link>http://www.re-design.de/2007/12/09/die-macht-der-selektoren/</link>
		<comments>http://www.re-design.de/2007/12/09/die-macht-der-selektoren/#comments</comments>
		<pubDate>Sat, 08 Dec 2007 23:00:11 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[attribut]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[klasse]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=57</guid>
		<description><![CDATA[Durch die Benutzung von Klassen und IDs kann man sehr effektiv auf die Strukturen von HTML-Seiten zugreifen. Doch leider wird dadurch auch der Quellcode der Seite vergrößert. In vielen Fällen ist das aber unnötig, denn oft werden Klassen aus Bequemlichkeit eingesetzt um schnell auf das Richtige zu zugreifen. CSS bietet über Selektoren mehr als nur [...]]]></description>
			<content:encoded><![CDATA[<p>Durch die Benutzung von Klassen und <abbr title="Identifikation">ID</abbr>s kann man sehr effektiv auf die Strukturen von <abbr title="Hypertext Markup Language">HTML</abbr>-Seiten zugreifen. Doch leider wird dadurch auch der Quellcode der Seite vergrößert. In vielen Fällen ist das aber unnötig, denn oft werden Klassen aus Bequemlichkeit eingesetzt um schnell auf das Richtige zu zugreifen. <abbr title="Cascading Style Sheet">CSS</abbr> bietet über Selektoren mehr als nur den Zugriff auf Tags, Klassen und IDs.</p>
<p><span id="more-57"></span></p>
<h3>Arten von Selektoren</h3>
<p>Ok, fangen wir mit den üblichen Verdächtigen an.</p>
<ol class="Sourcecode">
<li><code>Tag {</code></li>
<li><code>    color: red; 3</code></li>
<li><code>} </code></li>
<li><code>.Klasse { </code></li>
<li><code>    color: blue; </code></li>
<li><code>} </code></li>
<li><code>Tag#ID { </code></li>
<li><code>    color: green; </code></li>
<li><code>}</code></li>
</ol>
<h3>Attributs-Selektoren</h3>
<p>Dann gibt es aber auch noch Attributes-Selektoren. Viel Tags unterscheiden sich ja durch die Verwendung von Attributen und genau diese Unterscheidungen kann man auch in CSS nutzen.</p>
<p>Das erste Beispiel formatiert alle -Tags mit einem titel-Attribute</p>
<ol class="Sourcecode">
<li><code>a[title] {</code></li>
<li><code>    color: red;</code></li>
<li><code>}</code></li>
</ol>
<p>Das nächste Beispiel formatiert alle <code>&lt;a&gt;</code>-Tags mit dem <code>rel</code>-Attribute und dem Wert <code>copyrigth</code> blau.</p>
<ol class="Sourcecode">
<li><code>a[rel=copyright] {</code></li>
<li><code>    color: blue;</code></li>
<li><code>}</code></li>
</ol>
<p>Im dritten Beispiel werden die <code>&lt;a&gt;</code>-Tags grün formatiert, die im <code>lang</code>-Attribute den Wert en stehen haben. Dabei kann der Wert in einer durch Leerzeichen getrennten Liste stehen.</p>
<ol class="Sourcecode">
<li><code>a[lang~=en] {</code></li>
<li><code>    color: green;</code></li>
<li><code>}</code></li>
</ol>
<p>Das folgende Beispiel formatiert alle <code>&lt;a&gt;</code>-Tags die im <code>href</code>-Attribute mit <code>mailto</code> beginnen.</p>
<ol class="Sourcecode">
<li><code>a[href|=mailto:] {</code></li>
<li><code>    color: yellow;</code></li>
<li><code>}</code></li>
</ol>
<p>Das letzte Beispiel zeigt wie <code>&lt;a&gt;</code>-Tags grau formatiert werden, die im <code>href</code>-Attribute mit dem Wert <dfn>.pdf</dfn> enden.</p>
<ol class="Sourcecode">
<li><code>a[href^=.pdf] {</code></li>
<li><code>    color: grey;</code></li>
<li><code>}</code></li>
</ol>
<h4>Nachbarn, Kinder und Nachfahren</h4>
<p>Weiter Möglichkeiten ohne Klassen und IDs gezielt auf Tags zu zugreifen besteht darin Kombinationen der oben beschriebenen Möglichkeiten zu nutzen.</p>
<p>Fangen wir mit den Nachfahren an. Kombiniert man zwei Selektoren mit einem Leerzeichen dann trifft diese Formatierung auf alle Elemente zu die unterhalb des erst genannten Elements sich befinden, egal in welcher Hierarchie-Ebene. Im Beispiel werden alle Verlinkungen in einer ungeordneten Liste rot formatiert, egal ob sie in Unterlisten ober auf der obersten Ebene liegen.</p>
<ol class="Sourcecode">
<li><code>ul a { </code></li>
<li><code>    color: red; </code></li>
<li><code>}</code></li>
</ol>
<p>Kindern sind die direkten Nachfahren von Elementen. Das Beispiel zeigt wie die direkt in &lt;div&gt;-Tags eingebunden sind umrandet werden, nicht aber Bilder in einem Absatz innerhalb eines &lt;div&gt;-Tags.</p>
<ol class="Sourcecode">
<li><code>div &gt; img { </code></li>
<li><code>    border: thin solid black; </code></li>
<li><code>} </code></li>
</ol>
<p>Bei Nachbarn kann das folgenden Element eines Elementes formatieren, hier ist es der erste Absatz nach einer Überschrift.</p>
<ol class="Sourcecode">
<li><code>h3 + p { </code></li>
<li><code>    boder: thin dashed darkred; </code></li>
<li><code>}</code></li>
</ol>
<h4>Pseudo-Klassen</h4>
<p>CSS bietet auch schon vorgegebene Klassen um schnell auf Elemente in der HTML-Seite zugreifen zu können. Dabei beschränkt sich die Selektion nicht nur auf die reine Struktur, sondern auch auf Zustände bzw. Interaktivität.</p>
<p>Zum Beispiel kann man mit der Pseudo-Klasse :first-child das erste Kind eines Elementes formatieren. Im Beispiel bekommt das erste Kind, also der erste Listeneintrag einen Rahmen an der Oberseite.</p>
<ol class="Sourcecode">
<li><code>ul:first-child { </code></li>
<li><code>    border-top: thin solid black; </code></li>
<li><code>}</code></li>
</ol>
<p>Man kann aber auch die Zustände von Verlinkungen durch :link und :visited unterschiedlich darstellen.</p>
<ol class="Sourcecode">
<li><code>a:link { </code></li>
<li><code>    color: blue; </code></li>
<li><code>} </code></li>
<li><code>a:visited { </code></li>
<li><code>    color: purpel; </code></li>
<li><code>}</code></li>
</ol>
<p>Aber nicht nur Zustände von Verlinkungen, sondern auch Interaktivität des Benutzers kann man über CSS darstellbar machen. Das Beispiel zeigt Verlinkungen bei ihrer Aktivierung rot, Eingabefelder bei ihrer Fokusierung mit einer roten Umrandung und Tabellenzeilen beim Drüberfahren mit hellgrauen Hintergrund an.</p>
<ol class="Sourcecode">
<li><code>a:active { </code></li>
<li><code>    color: red; </code></li>
<li><code>} </code></li>
<li><code>input:focus { </code></li>
<li><code>    boder: thin solid red; </code></li>
<li><code>} </code></li>
<li><code>tr:hover { </code></li>
<li><code>    background-color: silver; </code></li>
<li><code>}</code></li>
</ol>
<p>Zusätzlich gibt gibt es auch eine Sprach-Klasse :lang. Dort kann man Formatierungen definieren die durch das lang-Attribut bestimmt werden.</p>
<ol class="Sourcecode">
<li><code>blockquote:lang(de) &gt; p { </code></li>
<li><code>    quotes: ‘»’ ‘«’ ‘2039′ ‘203A’</code></li>
<li><code>}</code></li>
</ol>
<h4>Pseudo-Elemente</h4>
<p>Neben den Pseudo-Klassen existieren in CSS auch sogenannte Pseudo-Elemente.</p>
<ol class="Sourcecode">
<li><code>p:first-line { </code></li>
<li><code>    color: red; </code></li>
<li><code>} </code></li>
<li><code>p:first-letter { </code></li>
<li><code>    font-size: 2em; </code></li>
<li><code>} </code></li>
<li><code>li:before { </code></li>
<li><code>    content: ‘►’; </code></li>
<li><code>} </code></li>
<li><code>a:after { </code></li>
<li><code>    content: ‘ [’ attr(href) ‘]’:</code></li>
<li><code>}</code></li>
</ol>
<p>In dem letzen Beispiel werden die verschiedenen Pseudo-Elemente aufgelistet. Dazu zählt unter anderem :first-line welches die erste Zeile des Elementes, hier eines Absatzes, formatiert. Mit :first-letter kann der erste Buchstabe eines Elementes gesondert formatiert werden.</p>
<p>Die beiden letzten Formatierungen zeigen jeweils vor bzw. hinter dem Element Inhalt an, der aber nicht im Quellcode vorhanden ist. Ein besondere Form, die gut im Ausdruck verwendet werden kann, liegt bei der Formatierung des Links vor. Hier wird nach jeder Verlinkung der Wert des href-Attributs in eckigen Klammern angezeigt.</p>
<h3>Ausblicke</h3>
<p>Ab CSS 3 wird die Selektierung von Elementen noch differenzierter. Hier einmal eine Auflistung der zusätzlichen Möglichkeiten:</p>
<ul>
<li>Attributs-Selektoren
<ul>
<li>E[foo^="bar"] an E element whose “foo” attribute value begins exactly with the string “bar”</li>
<li>E[foo$="bar"] an E element whose “foo” attribute value ends exactly with the string “bar”</li>
<li>E[foo*="bar"] an E element whose “foo” attribute value contains the substring “bar”</li>
<li>E[hreflang|="en"] an E element whose “hreflang” attribute has a hyphen-separated list of values beginning (from the left) with “en”</li>
</ul>
</li>
<li>Pseudo-Klassen
<ul>
<li>E:root an E element, root of the document</li>
<li>E:nth-child(n) an E element, the n-th child of its parent</li>
<li>E:nth-last-child(n) an E element, the n-th child of its parent, counting from the last one</li>
<li>E:nth-of-type(n) an E element, the n-th sibling of its type</li>
<li>E:nth-last-of-type(n) an E element, the n-th sibling of its type, counting from the last one</li>
<li>E:last-child an E element, last child of its parent</li>
<li>E:first-of-type an E element, first sibling of its type</li>
<li>E:last-of-type an E element, last sibling of its type</li>
<li>E:only-child an E element, only child of its parent</li>
<li>E:only-of-type an E element, only sibling of its type</li>
<li>E:empty an E element that has no children (including text nodes)</li>
<li>E:target an E element being the target of the referring URI</li>
<li>E:enabled</li>
<li>E:disabled a user interface element E which is enabled or disabled</li>
<li>E:checked a user interface element E which is checked (for instance a radio-button or checkbox)</li>
<li>E::selection the portion of an E element that is currently selected/highlighted by the user</li>
<li>E:not(s)an E element that does not match simple selector s</li>
</ul>
</li>
<li>Kombination
<ul>
<li>E ~ F an F element preceded by an E element</li>
</ul>
</li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/07/icons-helfen-bei-der-orientierung/" title="Icons helfen bei der Orientierung">Icons helfen bei der Orientierung</a></li><li><a href="http://www.re-design.de/2010/12/20/html5-buch/" title="HTML5 &ndash; Buch">HTML5 &ndash; Buch</a></li><li><a href="http://www.re-design.de/2010/11/05/webdesignaufbau/" title="Webdesign&ndash;Aufbau">Webdesign&ndash;Aufbau</a></li><li><a href="http://www.re-design.de/2010/10/08/webdesigneinzelcoaching/" title="Webdesign&ndash;Einzelcoaching">Webdesign&ndash;Einzelcoaching</a></li><li><a href="http://www.re-design.de/2010/10/08/webprogrammierung-mit-html-und-css/" title="Webprogrammierung mit HTML und CSS">Webprogrammierung mit HTML und CSS</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/09/die-macht-der-selektoren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS Layouts am Fließband</title>
		<link>http://www.re-design.de/2007/12/08/css-layouts-am-fliessband/</link>
		<comments>http://www.re-design.de/2007/12/08/css-layouts-am-fliessband/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 23:00:07 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[gestaltung]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=50</guid>
		<description><![CDATA[Immer wieder werden ähnlich bzw. gleiche Layouts beim Webdesign gebraucht. Ich habe einmal versucht eine relative einfaches Framework zur schnellen Erzeugung von verschiedenen Layouts zu erstellen. Um die Verwaltung des Framework einfach zu halten, habe ich mich dazu entschlossen die CSS-Dateien aufzuteilen. In der HTML-Datei existieren zwar nur 3 relative Verlinkungen zu den jeweiligen Ausgabedesigns, [...]]]></description>
			<content:encoded><![CDATA[<p>Immer wieder werden ähnlich bzw. gleiche Layouts beim Webdesign gebraucht. Ich habe einmal versucht eine relative einfaches Framework zur schnellen Erzeugung von verschiedenen Layouts zu erstellen.</p>
<p>Um die Verwaltung des Framework einfach zu halten, habe ich mich dazu entschlossen die CSS-Dateien aufzuteilen. In der HTML-Datei existieren zwar nur 3 relative Verlinkungen zu den jeweiligen Ausgabedesigns, aber für jedes Design sind dann weitere 3 Dateien zuständig. Um die Designs flexibel administrieren zu können, benutze ich eine Layout-Datei für die Positionierung der Boxen, eine Color-Datei für die Farbgebung und eine Typographie-Datei für die Texteinstellung.</p>
<p><span id="more-50"></span><br />
Der Aufbau der HTML-Datei ist nach den Semantik-Regel wohlgeformt und besteht aus der üblichen 3 großen Bereichen: Kopf, Körper und Fuß. Um innerhalb des Körpers mit bis zu 3 Spalten arbeiten zu können, existieren dort eine Content-, Navigations- und Marginal-Box.</p>
<p>Hier die Originalstruktur der HTML-Datei:</p>
<ol class="Sourcecode">
<li><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></li>
<li><code>&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="de xml:lang="de"&gt;</code></li>
<li><code>&lt;head&gt;&lt;/head&gt;</code></li>
<li><code>&lt;body&gt;</code></li>
<li><code>&lt;div id="header"&gt;&lt;/div&gt;</code></li>
<li><code>&lt;div id="body"&gt;</code></li>
<li><code>    &lt;div id="wrapper"&gt;</code></li>
<li><code>        &lt;div id="content"&gt;&lt;/div&gt;</code></li>
<li><code>    &lt;/div&gt;</code></li>
<li><code>    &lt;div id="navigation"&gt;&lt;/div&gt;</code></li>
<li><code>    &lt;div id="marginal"&gt;&lt;/div&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="footer"&gt;&lt;/div&gt;</code></li>
<li><code>&lt;/body&gt;</code></li>
<li><code>&lt;/html&gt;</code></li>
</ol>
<p>Um die 3 benötigten Design-Dateien in die HTML-Datei zu laden, importiert die verlinkten Style-Datei die restlichen Dateien:</p>
<ol class="Sourcecode">
<li><code>@charset "utf-8″;</code></li>
<li><code>/* Screen Style Document */</code></li>
<li></li>
<li><code>@import url("reset.css");</code></li>
<li><code>@import url("screen/layout.css");</code></li>
<li><code>@import url("screen/color.css");</code></li>
<li><code>@import url("screen/typographie.css");</code></li>
</ol>
<p>Die mit importierte Reset-Datei normalisiert die von Browsern vorgegebene Formatierung.</p>
<ol class="Sourcecode">
<li><code>body, div, dl, <abbr title="deutsch">dt. </abbr>dl, ul, ol, li, h1, h2, h3, h4, h5, h6, </code></li>
<li><code>pre, form, fieldset, input, p, blockoute, th, td </code></li>
<li><code>{margin:0;padding:0} </code></li>
<li><code>h1, h2, h3, h4, h5, h6 </code></li>
<li><code>{font-size:100%} </code></li>
<li><code>ol, ul </code></li>
<li><code>{list-style:none} </code></li>
<li><code>address, caption, cite, code, dfn, em, strong, th, var </code></li>
<li><code>{font-style:normal;font-weight:normal} </code></li>
<li><code>table </code></li>
<li><code>{border-collapse:collapse;border-spacing:0;font-size:100%}</code></li>
<li><code>fieldset, img </code></li>
<li><code>{border:0} </code></li>
<li><code>caption, th </code></li>
<li><code>{text-align:left} </code></li>
<li><code>q:before, q:after </code></li>
<li><code>{content:""}</code></li>
</ol>
<p>Ich habe schließlich, um die Flexibilität des Frameworks zu demonstrieren, für das Layout, die Farben und die Typographie jeweils 3 Versionen erstellt. Dadurch stehen mal eben 18 verschiedene Darstellungen nur alleine für das Screen-Design zur Verfügung. Wenn man nun mit dem gleichen Verfahren auch noch verschiedene Print- und SSB-Darstellungen erzeugt, hat man wirklich schnelle und effektive Fließbandarbeit.</p>
<ul>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/layout.html">HTML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/screen.css">Screen-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/layout_01.css">Layout-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/color.css">Color-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/typographie.css">Typographie-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/layout-galery.zip">komplettes Set</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/10/css-3-unterstuetzung-der-browser/" title="CSS 3-Unterst&#252;tzung der Browser">CSS 3-Unterst&#252;tzung der Browser</a></li><li><a href="http://www.re-design.de/2007/12/04/flexible-layouts-mit-css/" title="flexible Layouts mit CSS">flexible Layouts mit CSS</a></li><li><a href="http://www.re-design.de/2007/12/03/beschriftung-von-containern/" title="Beschriftung von Containern">Beschriftung von Containern</a></li><li><a href="http://www.re-design.de/2007/12/01/designer-vergessen-die-gestaltung/" title="Designer vergessen die Gestaltung">Designer vergessen die Gestaltung</a></li><li><a href="http://www.re-design.de/2007/11/11/flexibles-css-layout/" title="flexibles CSS Layout">flexibles CSS Layout</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/08/css-layouts-am-fliessband/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Icons helfen bei der Orientierung</title>
		<link>http://www.re-design.de/2007/12/07/icons-helfen-bei-der-orientierung/</link>
		<comments>http://www.re-design.de/2007/12/07/icons-helfen-bei-der-orientierung/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 23:00:01 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[attribut]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[optimierung]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=38</guid>
		<description><![CDATA[Die Zeiten in denen sich Verlinkungen einfach nur unterstrichen präsentierten ist schon längst vorbei. Das Kennzeichnen der unterschiedlichsten Arten von Verlinkungen gibt es schon eine ganze Weile. Spätesten seit der Einführung der Attribut-Selektoren in CSS 2.1 stand der Verwendung von Icons für spezielle Verlinkungen nichts mehr im Wege. Ja, ja, ich weiß das die nicht [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.re-design.de/workbook/wp-content/uploads/2007/11/icon_set.png" alt="Icon-Set" align="left" />Die Zeiten in denen sich Verlinkungen einfach nur unterstrichen präsentierten ist schon längst vorbei. Das Kennzeichnen der unterschiedlichsten Arten von Verlinkungen gibt es schon eine ganze Weile. Spätesten seit der Einführung der Attribut-Selektoren in <a href="http://www.w3.org/TR/CSS21/" title="Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification" rel="tag"><acronym titel="Cascading Style Sheets" lang="en">CSS</acronym> 2.1</a> stand der Verwendung von Icons für spezielle Verlinkungen nichts mehr im Wege.</p>
<p>Ja, ja, ich weiß das die nicht alle Browser dieses Feature unterstützen. Besonders der heutzutage noch oft verwendete <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=1e1550cb-5e5d-48f5-b02b-20b602228de6&amp;DisplayLang=en">Internet Explorer 6</a> macht dem Ganzen einen großen Strich durch die Rechnung. Aber warum müssen deswegen die Benutzer von neueren Browsern darauf verzichten? OK Schluss mit mit dem leidigen Thema der verschiedenen Browser-Versionen. Auf zu der Formatierung von schönen, manchmal auch bunten Verlinkung.</p>
<p><span id="more-38"></span></p>
<ol class="Sourcecode">
<li><code>a[href$=".pdf"], </code></li>
<li><code>a[href$=".txt"], </code></li>
<li><code>a[href$=".zip"], </code></li>
<li><code>a[href$=".mp3"], a[href$=".wma"], </code></li>
<li><code>a[href$=".mpg"], a[href$=".mpeg"],a[href$=".wmv"], </code></li>
<li><code>a[href$=".swf"], </code></li>
<li><code>a[href$=".xls"], a[href$="ods"], </code></li>
<li><code>a[href$=".doc"], a[href$="odt"], </code></li>
<li><code>a[href*="rss2"], a[href*="rss"], a[href*="feed"], </code></li>
<li><code>a[href|="mailto:"], a[href|="skype:"], a[href|="msnim:"], </code></li>
<li><code>{ </code></li>
<li><code>padding-bottom:2px; </code></li>
<li><code>padding-left:22px; </code></li>
<li><code>padding-top:2px; </code></li>
<li><code>background:transparent; </code></li>
<li><code>}</code></li>
</ol>
<p>Als erstes habe ich nur alle relevanten Links mit einem Innenabstand versehen und die Hintergrundfarbe auf transparent gestellt. Dabei bedeutet der Selektor mit dem Dollarzeichen ($) <abbr title="zum Beispiel" lang="de">z.B.</abbr> das alle Links die im <code>href</code>-Attribut mit dem angegebenen Wert enden formatiert werden. Bei der Schreibweise mit dem Stern (*) sucht man irgend ein Vorkommen des Wertes und die Kombination mit dem Pipe (|) selektiert nur Links die mit den Wert beginnen.</p>
<ol class="Sourcecode" start="start">
<li><code>a[href$=".pdf"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/acrobat.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href$=".txt"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/text.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href$=".zip"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/archive.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href$=".mp3"], a[href$=".wma"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/audio.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href$=".mpg"], a[href$=".mpeg"], a[href$=".wmv"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/video.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href$=".swf"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/flash.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href$=".xls"], a[href$=".ods"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/table.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href$=".doc"], a[href$=".rtf"], a[href$=".odt"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/document.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href*="feed"], a[href*="rss"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/feed.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href|="mailto:"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/mail.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href|="skype:"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/skype.png) no-repeat scroll left center; </code></li>
<li><code>} </code></li>
<li><code>a[href|="msnim:"] </code></li>
<li><code>{ </code></li>
<li><code>background: url(images/messenger.png) no-repeat scroll left center; </code></li>
<li><code>}</code></li>
</ol>
<p>Danach definiere ich für jede Verlinkungsart ein Hintergrundbild, welche sind nicht wiederholt, die Ausrichtung links mittig ist und nicht mitscrollt. Fertig ist die schöne, bunte Linkwelt. Und das super Gute daran ist, dass Browser die diese Art der Selektierung nicht kennen einfach ihren gewohnten Standard zeigen und alle zufrieden sind.</p>
<p>Zum Schluss hier nochmals die Dateien zum Download:</p>
<ul>
<li><a href="http://www.er-design.de/workbook/wp-content/uploads/2007/11/icon.css" title="CSS-Datei">CSS-Datei</a></li>
<li><a href="http://www.er-design.de/workbook/wp-content/uploads/2007/11/icons.zip" title="Zip-Datei">Icons als Zip-Datei</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/10/css-3-unterstuetzung-der-browser/" title="CSS 3-Unterst&#252;tzung der Browser">CSS 3-Unterst&#252;tzung der Browser</a></li><li><a href="http://www.re-design.de/2007/12/10/suchmaschinenoptimierung-seo/" title="Suchmaschinenoptimierung (SEO)">Suchmaschinenoptimierung (SEO)</a></li><li><a href="http://www.re-design.de/2008/04/26/dreamweaver-schulung-fr-den-solar-verlag/" title="Dreamweaver-Schulung f&#252;r den Solar Verlag">Dreamweaver-Schulung f&#252;r den Solar Verlag</a></li><li><a href="http://www.re-design.de/2008/03/01/transcending-css/" title="Transcending CSS">Transcending CSS</a></li><li><a href="http://www.re-design.de/2008/03/01/little-boxes/" title="Little Boxes">Little Boxes</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/07/icons-helfen-bei-der-orientierung/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>flexible Layouts mit CSS</title>
		<link>http://www.re-design.de/2007/12/04/flexible-layouts-mit-css/</link>
		<comments>http://www.re-design.de/2007/12/04/flexible-layouts-mit-css/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 23:00:30 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[flexibel]]></category>
		<category><![CDATA[grundgerüst]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=35</guid>
		<description><![CDATA[Websites sollten sich immer dem Benutzer anpassen, so zumindest steht es in vielen Dokumentationen über Benutzerfreundlichkeiten. Aber was ist damit eigentlich gemeint? Welche Anpassung braucht der Benutzer bzw. will er überhaupt haben? Welche ist die Richtige? Die einfachste Lösung ein Layout für die Website zu erstellen ist mit festen Größenangaben zu arbeiten. Sie ist aber [...]]]></description>
			<content:encoded><![CDATA[<p>Websites sollten sich immer dem Benutzer anpassen, so zumindest steht es in vielen Dokumentationen über Benutzerfreundlichkeiten. Aber was ist damit eigentlich gemeint? Welche Anpassung braucht der Benutzer bzw. will er überhaupt haben? Welche ist die Richtige?</p>
<p>Die einfachste Lösung ein Layout für die Website zu erstellen ist mit festen Größenangaben zu arbeiten. Sie ist aber auch am Unflexibelsten, denn das Layout kann sich dann nicht den Bedürfnissen des Betrachters anpassen. Viele heutige Design haben als Maßeinheit für ihr Layout Pixel. Der große Vorteil liegt in der genauen Platzierung von Elementen, wie z.B. Spalten oder aber auch Designelemente wie Hintergrundbilder. Der große Nachteil liegt aber auch gerade in diesen festen Größenangaben. Und hier setzen die flexiblen Design an.</p>
<p><span id="more-35"></span></p>
<h3>Probleme mit Pixeln und Prozenten</h3>
<p>Eine gute Möglichkeit ein flexibles Layout zu entwerfen und trotzdem gewisse Gestaltungsproportionen einhalten zu können besteht darin, die Maßeinheiten EM zu nutzen. Ein EM ist die einfache Größe eine Großbuchstabens. Die Maßeinheit Pixel hat den klaren Nachteil, des eine Spalte die mit 200 Pixel definiert ist immer 200 Pixel breit ist, egal ob der Betrachter seine Schrift vergrößert, weil er einen großen Monitor benutzt oder verkleinert. Nun könnte man aber die Spaltenbreite in Prozent angeben. Auch hier entsteht das gleiche Problem wie bei den Pixeln. Die Spalte bleibt immer z.B. 20% von der gesamten Browserbreite breit, auch wenn man die Schrift vergrößert oder verkleinert. Der Vorteil gegenüber dem Pixel-Layout liegt in der flexiblen Anpassung an die verschiedenen Monitorgrößen. 20% bei einer Auflösung von 1024 * 768 ist deutlich breiter als bei einer Auflösung von 800 * 600.</p>
<h3>Layout mit EM</h3>
<p>Mein Ansatz ist es nun zwar eine feste Breite wie bei der Pixelangabe zu benutzen, aber diese Breite richtet sich immer nach der Schriftgröße. Wenn also ein Betrachter bei seiner Monitorauflösung von 1280*800 die Darstellung einer Website als zu klein empfindet, dann kann es durch eine schnelle Anpassung der Schriftgröße dieses wunderbar korrigieren. Umgekehrt geht dieses natürlich auch. Ist die Website für 1024*768 optimiert und ein Betrachter besitzt nur 800*600. Dann kann er schnell und meist auch sehr einfach die Schriftgröße seines Browsers ändern und alles ist wieder bestens. In den meisten Browser kann man durch betätigen der Plus- bzw. Minustaste mit gleichzeitigen drücken der STRG-Taste die Schrift des Browsers anpassen.</p>
<h3>Wie könnte nun z.B. ein solches 3-spaltiges Layout aussehen?</h3>
<p>Als erstes möchte ich die Grundstruktur der HTML-Seite erklären. Dazu erstmal das DOM der Seite</p>
<pre>body
 +div#page
   +div#header
   | +div#head
   | +div#bar
   +div#body
   | +div#main
   | | +div#content
   | | +div#left
   | +div#right
   +div#footer</pre>
<p>Bei der Identifizierung der einzelnen Container habe ich auf Eindeutigkeit geachtet. Es sollte hoffentlich klar werden was wofür ist. Um eine schnell umsetzbare 3-Spaltigkeit zu bekommen, habe ich die linke Spalte und den eigentlichen Inhalts-Container zusammengefasst. Somit habe ich auch erreicht, dass der Inhalt noch vor den restlichen Spalten im Quelltext steht, was wiederum Suchmaschinen als angenehm empfinden, da das wichtige am Anfang steht.</p>
<h4>Das CSS-Grundgerüst</h4>
<ol class="Sourcecode">
<li><code>* {margin:0;padding:0;}</code></li>
<li><code>body {</code></li>
<li><code>font:14px/130% "Lucida Grande", "Lucida Sans Unicode", Sans-Serif;</code></li>
<li><code>background-color:#666;</code></li>
<li><code>color:#fff;</code></li>
<li><code>text-align:center;</code></li>
<li><code>}</code></li>
</ol>
<p>Hier ist nichts weiter überraschendes dabei. Erwähnen möchte ich nur, dass die gesamte Seite in der horizontalen Mitte ausgerichtet ist. Weswegen ich die Eigenschaft text-align auf center gesetzt habe.</p>
<ol class="Sourcecode">
<li><code>#page {</code></li>
<li><code>width:68em;</code></li>
<li><code>margin:0 auto;</code></li>
<li><code>text-align:left;</code></li>
<li><code>background-color:#fff;</code></li>
<li><code>color:#000;</code></li>
<li><code>}</code></li>
</ol>
<p>Die Gesamtbreite der Seite entspricht hier also 68 Großbuchstaben. Das entspricht ungefähr 120 Zeichen. Um die Seite auch mittig zu platzieren wurde der linke und rechte Außenabstand der Wert auto zugewiesen. Zusätzlich wurde der Text wieder linksbündig ausgerichtet.</p>
<ol class="Sourcecode">
<li><code>#header {</code></li>
<li><code>background:#333;</code></li>
<li><code>color:#fff;</code></li>
<li><code>height:8em;</code></li>
<li><code>}</code></li>
<li><code>#body {</code></li>
<li><code>clear:both;</code></li>
<li><code>}</code></li>
<li><code>#footer {</code></li>
<li><code>clear:both;</code></li>
<li><code>background:#333;</code></li>
<li><code>color:#fff;</code></li>
<li><code>height:3em;</code></li>
<li><code>}</code></li>
</ol>
<p>Auch die Container head, body und footer enthalten nichts überraschendes. Nur das der body- und der footer-Container mit der Eigenschaft clear und den Wert both für das Aufheben der float-Eigenschaft der vorhergehenden Container zuständig sind.</p>
<ol class="Sourcecode">
<li><code>#main {</code></li>
<li><code>float:left;</code></li>
<li><code>width:52em;</code></li>
<li><code>}</code></li>
<li><code>#left {</code></li>
<li><code>float:left;</code></li>
<li><code>width:15em;</code></li>
<li><code>}</code></li>
<li><code>#content {</code></li>
<li><code>float:right;</code></li>
<li><code>width:45em;</code></li>
<li><code>}</code></li>
<li><code>#right {</code></li>
<li><code>float:right;</code></li>
<li><code>width:15em;</code></li>
<li><code>}</code></li>
</ol>
<p>Nun formatiert man den mittleren Teil. Als erstes wird dieser in 2 Teile getrennt. Der Main-Container wird nach links gelegt und der Right-Container dementsprechend nach rechts. Zusammen ergibt sich eine Breite die gleich ist mit der Gesamtbreite des Page-Containers. Innerhalb des Main-Containers wird wiederum der Platz in 2 Spalten aufgeteilt, so dass diese Gesamtbreite der Breite des Main-Containers entspricht.</p>
<p>Zum Schluss die komplette CSS-Formatierung:</p>
<ol class="Sourcecode">
<li><code>* {margin:0;padding:0;}</code></li>
<li><code>body {</code></li>
<li><code>font:14px/130% "Lucida Grande", "Lucida Sans Unicode", Sans-Serif;</code></li>
<li><code>background-color:#666;</code></li>
<li><code>color:#fff;</code></li>
<li><code>text-align:center;</code></li>
<li><code>}</code></li>
<li><code>#page {</code></li>
<li><code>width:68em;</code></li>
<li><code>margin:0 auto;</code></li>
<li><code>text-align:left;</code></li>
<li><code>background-color:#fff;</code></li>
<li><code>color:#000;</code></li>
<li><code>}</code></li>
<li><code>#header {</code></li>
<li><code>background:#333;</code></li>
<li><code>color:#fff;</code></li>
<li><code>height:8em;</code></li>
<li><code>}</code></li>
<li><code>#body {</code></li>
<li><code>clear:both;</code></li>
<li><code>}</code></li>
<li><code>#footer {</code></li>
<li><code>clear:both;</code></li>
<li><code>background:#333;</code></li>
<li><code>color:#fff;</code></li>
<li><code>height:3em;</code></li>
<li><code>}</code></li>
<li><code>#main {</code></li>
<li><code>float:left;</code></li>
<li><code>width:52em;</code></li>
<li><code>}</code></li>
<li><code>#left {</code></li>
<li><code>float:left;</code></li>
<li><code>width:15em;</code></li>
<li><code>}</code></li>
<li><code>#content {</code></li>
<li><code>float:right;</code></li>
<li><code>width:45em;</code></li>
<li><code>}</code></li>
<li><code>#right {</code></li>
<li><code>float:right;</code></li>
<li><code>width:15em;</code></li>
<li><code>}</code></li>
</ol>
<p>und die Downloads der Dateien:</p>
<ul>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/demo.html" title="HTML-Datei">HTML-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/style.css" title="CSS-Datei">CSS-Datei</a></li>
<li><a href="http://www.re-design.de/workbook/wp-content/uploads/2007/12/komplett.zip" title="komplettes Set">komplettes Set</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/11/11/flexibles-css-layout/" title="flexibles CSS Layout">flexibles CSS Layout</a></li><li><a href="http://www.re-design.de/2007/12/10/css-3-unterstuetzung-der-browser/" title="CSS 3-Unterst&#252;tzung der Browser">CSS 3-Unterst&#252;tzung der Browser</a></li><li><a href="http://www.re-design.de/2007/12/08/css-layouts-am-fliessband/" title="CSS Layouts am Fließband">CSS Layouts am Fließband</a></li><li><a href="http://www.re-design.de/2007/12/03/beschriftung-von-containern/" title="Beschriftung von Containern">Beschriftung von Containern</a></li><li><a href="http://www.re-design.de/2008/04/26/dreamweaver-schulung-fr-den-solar-verlag/" title="Dreamweaver-Schulung f&#252;r den Solar Verlag">Dreamweaver-Schulung f&#252;r den Solar Verlag</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/04/flexible-layouts-mit-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Beschriftung von Containern</title>
		<link>http://www.re-design.de/2007/12/03/beschriftung-von-containern/</link>
		<comments>http://www.re-design.de/2007/12/03/beschriftung-von-containern/#comments</comments>
		<pubDate>Sun, 02 Dec 2007 23:00:04 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[attribut]]></category>
		<category><![CDATA[branding]]></category>
		<category><![CDATA[Container]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[gestaltung]]></category>
		<category><![CDATA[grundgerüst]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[tagline]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/2007/12/03/beschriftung-von-containern/</guid>
		<description><![CDATA[Fast jeder kennt wohl das Problem nichts mehr zu finden wenn es nicht richtig beschriftet wurde. Auch ich suche immer wieder nach den verschiedensten Dinge und das nicht nur im Web oder auf meinen Schreibtisch, sondern auch im gesamten Büro. Aber darum soll es in diesem Artikel nicht gehen. Viel mehr möchte ich mal kurz [...]]]></description>
			<content:encoded><![CDATA[<p>Fast jeder kennt wohl das Problem nichts mehr zu finden wenn es nicht richtig beschriftet wurde. Auch ich suche immer wieder nach den verschiedensten Dinge und das nicht nur im Web oder auf meinen Schreibtisch, sondern auch im gesamten Büro. Aber darum soll es in diesem Artikel nicht gehen. Viel mehr möchte ich mal kurz meine Gedanken über die sinnvolle Benennung von Containern beim Layouten los werden.</p>
<p>Eine sinnvolle und immer wiederkehrende Beschriftung von Container man natürlich nicht nur beim Arbeiten in einem Team, sondern bringt auch für einen selbst mehr Sicherheit. Dabei sollte immer darauf geachtet werden den HTML-Code nicht unnötig aufzublähen. Gerade im mobilen Web sind kline Datenmengen Gold wert.</p>
<p><span id="more-42"></span></p>
<h4>Welche Komponenten können bei einem Weblayout vorkommen?</h4>
<p>Da wäre wohl als erstes der <strong>Kopfbereich</strong> einer Website zu nennen. Dann gibt es auf jeden Fall noch die <strong>Navigationen</strong>, natürlich den eigentlichen <strong>Inhalt</strong> und als Abschluss benutzen viel Designer einen <strong>Fußbereich</strong>. Jeder von diesen Bereichen besitzt dann natürlich noch Unterbereiche.</p>
<p>Doch bevor ich die einzelnen Bereiche definiere, lege ich einen <code>&lt;div&gt;</code>-Container mit einem <code>id</code>-Attribute an, um die gesamte Markup besser koordinieren zu können.</p>
<h5>Kopfbereich</h5>
<p>Fangen wir mal mit dem Kopfbereich an. Hier sollte die allgemeinen, aber wichtigsten Information bezüglich der Website stehen. Das wäre dann wohl der Website-Titel und die Tagline. Diese kennzeichne ich immer mit den <code>&lt;h1&gt;</code>- und <code>&lt;h2&gt;</code>-Tags, um ihre Wichtigkeit zu verdeutlichen. Die Tagline, also der Untertitel der Website hat in den meisten Fällen irgendetwas mit einer Aussage zu tun, weswegen ich dafür oft den <code>&lt;blockquote&gt;</code>-Tag benutze. Auch könnte hier schon eine erste Aufzählung der Bereiche der Website aufgelistet werden. Meist werden diese Bereiche auch noch mit verlinkt. Über den Kopfbereich bekommt die einzelne HTML-Seite seine Markierung zu welcher Website sie gehört. Man nennt das auch das Branding.</p>
<h5>Navigationen</h5>
<p>Auf einer HTML-Seite gibt es verschiedene Navigationen, weshalb ich sie immer mit einem <code>class</code>-Attribute zusammenfasse. Trotzdem hat jede Navigation ihre eigene Semantik und deshalb erweitere ich jede Navigation mit einem <code>id</code>-Attribute. Doch welche Tags benutze ich bei den verschiedene Navigationen? Das kommt ganz auf ihren Inhalt an.</p>
<p>Um bei einer Sprachsteuerung bzw. einem PDA-Design schnell an die richtigen Stellen zu springen beginnt bei mir jeder &lt;body&gt;-Tag mit einer <strong>Skip-Navigation</strong> hier verwende ich oft eine unsortierte List, da ja auch der Inhalt der Liste keiner bestimmten Sortierung folgt.</p>
<p>Auch die <strong>Servicenavigation</strong>, wo es die Möglichkeit gibt schnell zur Kontaktseite, zum Impressum bzw. zum Inhaltsverzeichnis zu springen, folgt keiner bestimmten Reihenfolge, weswegen ich auch da einen <code>&lt;ul&gt;</code>-Tag bevorzuge.</p>
<p>In der <strong>Pfadnavigation</strong> wird symbolisch der Weg nach oben zur Homepage definiert. Um die Verschachtelung auch semantisch richtig zu definieren reicht eine unsortierte, in sich verschachtelte Liste mit immer nur einem Eintrag pro Ebene.</p>
<p>Die <strong>Bereichsnavigation</strong> hat natürlich immer ein bestimmte Reihenfolge, auch wenn der Benutzer nicht unbedingt diese befolgen muss. Deshalb kann es nur eine sortierte Liste sein.</p>
<p>Auch sollte am Ende eines jeden Inhaltes die Verweise in einer Liste nochmals zusammengefasst werden. Hier kann man wunderbar das Auftauchen im Text als Sortierung der <strong>Fußnoten</strong> in einer sortierten Liste mit einem <code>&lt;ol&gt;</code>-Tag nutzen.</p>
<p>Alle weiteren Navigationen, wie z.B. die Sprachauswahl, sind dann fast immer unsortiert und somit eignet sich der <code>&lt;ul&gt;</code>-Tag ideal dafür.</p>
<h5>Inhalt</h5>
<p>Leider würde es den Rahmen des Artikels sprengen, wenn alle möglichen Arten von Inhalten aufzählen würde. Vielleicht werde ich darüber später einen separaten Artikel schreiben. Deshalb an dieser Stelle nur soviel, idealer Weise fasst man diesen Bereich mit einem <code>&lt;div&gt;</code>-Container zusammen um gezielt Formatierung nur dort anbringe nur können.</p>
<h5>Fußbereich</h5>
<p>Im Fußbereich können Kontaktangaben bzw. rechtliche Hinweise oder auch eine weitere Servicenavigation untergebracht werden. Um die unterschiedlichsten Contaner ideal zusammenzufassen lohnt sich wiederum ein <code>&lt;div&gt;</code>-Container.</p>
<h4>Beispiel</h4>
<ol class="Sourcecode">
<li><code>&lt;body dir="ltr"&gt;</code></li>
<li><code>&lt;div id="page"&gt;</code></li>
<li><code>&lt;ul id="skip" class="navigation"&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#area"&gt;Navigation&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#content"&gt;Inhalt&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#service"&gt;Service&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#footer"&gt;Adressangabe und rechlicher Hinweis&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ul&gt;</code></li>
<li><code>&lt;div id="branding"&gt;</code></li>
<li><code>&lt;h1&gt;Websitetiel&lt;/h1&gt;</code></li>
<li><code>&lt;h2&gt;Tagline&lt;/h2&gt;</code></li>
<li><code>&lt;ol id="area" class="navigation"&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Hauptkategorie&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Hauptkategorie&lt;/a&gt;</code></li>
<li><code>&lt;ol&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Unterkategorie&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Unterkategorie&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ol&gt;</code></li>
<li><code>&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Hauptkategorie&lt;/a&gt;</code></li>
<li><code>&lt;ol&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Unterkategorie&lt;/a&gt;</code></li>
<li><code>&lt;ol&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Unterkategorie&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Unterkategorie&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ol&gt;</code></li>
<li><code>&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Unterkategorie&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ol&gt;</code></li>
<li><code>&lt;/li&gt;</code></li>
<li><code>&lt;/ol&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="body"&gt;</code></li>
<li><code>&lt;ul id="path" class="navigation"&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Startseite&lt;/a&gt;</code></li>
<li><code>&lt;ul&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Hauptkategorie&lt;/a&gt;</code></li>
<li><code>&lt;ul&gt;</code></li>
<li><code>&lt;li&gt;Unterkategie&lt;/li&gt;</code></li>
<li><code>&lt;/ul&gt;</code></li>
<li><code>&lt;/li&gt;</code></li>
<li><code>&lt;/ul&gt;</code></li>
<li><code>&lt;/li&gt;</code></li>
<li><code>&lt;/ul&gt;</code></li>
<li><code>&lt;div id="content"&gt;</code></li>
<li><code>&lt;h2&gt;Seitentitel&lt;/h2&gt;</code></li>
<li><code>&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum rhoncus ligula non nisi. Proin mauris ligula, dignissim vitae, aliquet at, luctus eu, nisl. Aliquam eget justo non augue adipiscing pretium. Vestibulum eget lacus eget massa varius viverra. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer mi. Donec et justo id erat pulvinar lobortis. Suspendisse faucibus, risus sed dictum viverra, orci sapien malesuada arcu, pharetra aliquet ligula libero sit amet magna. Sed non neque. Aliquam mi. Cras in tortor. Nunc feugiat. Aliquam dolor pede, tristique et, accumsan id, semper eget, sapien. Proin non metus nec arcu sollicitudin gravida. Vestibulum feugiat tristique velit. Vestibulum tincidunt nisl a nisl. Ut feugiat pede nec tortor.&lt;/p&gt;</code></li>
<li><code>&lt;p&gt;Suspendisse adipiscing euismod metus. Ut in urna. Sed tortor. Phasellus pellentesque turpis ornare tortor. Praesent ac nunc. In hac habitasse platea dictumst. Ut pulvinar tempor leo. Aenean dignissim, enim vel tristique adipiscing, enim mauris porta nisl, eget faucibus risus massa ac ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Quisque quis nisl non neque ornare vulputate.&lt;/p&gt;</code></li>
<li><code>&lt;h3&gt;Hauptüberschrift&lt;/h3&gt;</code></li>
<li><code>&lt;p&gt;Pellentesque suscipit odio at sapien. Nullam iaculis vehicula augue. Aenean sodales viverra massa. In in leo. Morbi venenatis ullamcorper ipsum. Aliquam lobortis, eros quis pulvinar porta, felis libero sodales enim, sit amet placerat tortor felis nec sem. Integer dapibus ultrices quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis accumsan. Fusce ac ligula.&lt;/p&gt;</code></li>
<li><code>&lt;h4&gt;Unterüberschrift&lt;/h4&gt;</code></li>
<li><code>&lt;p&gt;Phasellus pellentesque massa at turpis. Vestibulum libero orci, fringilla sit amet, tempus sed, imperdiet vitae, nunc. Sed mollis elit at arcu. Proin euismod porttitor urna. Sed vitae tortor. Maecenas et nisi vitae pede tincidunt lacinia. Vestibulum adipiscing pede porttitor diam. Curabitur eleifend justo quis purus. Duis pretium dui sed elit. Cras laoreet lorem a ipsum.&lt;/p&gt;</code></li>
<li><code>&lt;p&gt;Sed cursus facilisis metus. Vestibulum placerat, eros porta euismod aliquam, lorem velit hendrerit ligula, posuere tempor metus nisl nec arcu. Aliquam quis purus. Sed orci. Donec tincidunt posuere lorem. Aliquam ultricies turpis vitae diam. Maecenas eleifend mi in ante. Mauris commodo lorem quis lacus. Phasellus semper scelerisque nunc. Suspendisse sollicitudin odio in nisi.&lt;/p&gt;</code></li>
<li><code>&lt;h6&gt;weiterführende Links&lt;/h6&gt;</code></li>
<li><code>&lt;ol id="footnote" class="navigation"&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Fußnote&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Fußnote&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Fußnote&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ol&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;ul id="service" class="navigation"&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Kontakt&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Impressum&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;li&gt;&lt;a href="#"&gt;Inhaltsverzeichnis&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code>&lt;/ul&gt;</code></li>
<li><code>&lt;div id="footer"&gt;</code></li>
<li><code>&lt;p&gt;Adressangabe und rechtlicher Hinweis&lt;/p&gt;</code></li>
<li><code>&lt;p&gt;&lt;a href="#page"&gt;nach oben&lt;/a&gt;&lt;/p&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
<li><code>&lt;/body&gt;</code></li>
</ol>
<h4>Download der Dateien</h4>
<ul>
<li><a href="http://www.er-design.de/workbook/wp-content/uploads/2007/11/container-labels.html" title="HTML-Datei">HTML-Datei</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/02/deutendes-design-der-inhalte/" title="Deutendes Design der Inhalte">Deutendes Design der Inhalte</a></li><li><a href="http://www.re-design.de/2007/12/08/css-layouts-am-fliessband/" title="CSS Layouts am Fließband">CSS Layouts am Fließband</a></li><li><a href="http://www.re-design.de/2007/12/04/flexible-layouts-mit-css/" title="flexible Layouts mit CSS">flexible Layouts mit CSS</a></li><li><a href="http://www.re-design.de/2008/02/11/css-import-macht-probleme/" title="CSS Import macht Probleme">CSS Import macht Probleme</a></li><li><a href="http://www.re-design.de/2008/01/28/jahresabonnement-des-spotlight-verlag/" title="Jahresabonnement des Spotlight Verlag">Jahresabonnement des Spotlight Verlag</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/03/beschriftung-von-containern/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>flexibles CSS Layout</title>
		<link>http://www.re-design.de/2007/11/11/flexibles-css-layout/</link>
		<comments>http://www.re-design.de/2007/11/11/flexibles-css-layout/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 16:32:12 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Schulungen]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[dreamweaver]]></category>
		<category><![CDATA[flexibel]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[seminar]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=28</guid>
		<description><![CDATA[Letzte Woche hatte ich ein Seminar zum Thema CSS und eins über Dreamweaver gehalten. Es waren Teilnehmer sowohl von Roche Diagnostics als auch von Landessport Bund dabei, die mittels CMS die Inhalte ihrer Website betreuen. In diesen Seminaren kam die Frage nach einen flexiblen System zum Erzeugen eines CSS gesteuerten Layouts auf. Nach ein paar [...]]]></description>
			<content:encoded><![CDATA[<p>Letzte Woche hatte ich ein Seminar zum Thema <a title="Seminar Inhalte" href="http://www.re-design.de/dienstleistung/seminare/webdesign-seminare/">CSS</a> und eins über <a title="Seminar Inhalte" href="http://www.re-design.de/dienstleistung/seminare/webdesign-seminare/">Dreamweaver</a> gehalten. Es waren Teilnehmer sowohl von <a title="weiter zur Website" href="http://www.roche.com/de/div_diag.htm">Roche Diagnostics</a> als auch von <a title="weiter zur Homepage" href="http://www.wir-im-sport.de/startseite.php">Landessport Bund</a> dabei, die mittels CMS die Inhalte ihrer Website betreuen. In diesen Seminaren kam die Frage nach einen flexiblen System zum Erzeugen eines CSS gesteuerten Layouts auf.</p>
<p>Nach ein paar Überlegungen kamen wir dann auf die Teilung des CSS-Designs in 4 Dateien:</p>
<ul>
<li>basic.css</li>
<li>2column.css</li>
<li>3column.css</li>
<li>content.css</li>
</ul>
<p><span id="more-28"></span>In der Basisdatei werden alle grundlegenden Formatierungen für das Layout, wie z.B. Kopf- und Fußbereich bzw. Navigationsspalte festgelegt. Zusätzlich wird das gesamte Design zentriert und auf eine festen Breite eingestellt. Wobei die feste Breite nicht zwingend mit Pixeln zu lösen sein muss, denn in CSS können z.B. Breitenangaben auch in Em angegeben werden.</p>
<p><img src="/workbook/wp-content/uploads/2007/11/grundlayout.gif" border="0" alt="Grundlayout" width="200" height="150" /></p>
<p>In der Inhaltsdatei werden dann alle restlichen für die Darstellung wichtigen Formatierungen, wie z.B. Absätze Listen und Tabellen, definiert. Zusätzlich können dort auch Ausrichtungen von Bilden angegeben werden.</p>
<p>Falls man nun aber einige Unterseiten brauchen sollte, die ein 2 spaltigen Layout benötigen, dann bindet man einfach, zusätzlich zu den beiden Grunddateinen, die 2-Spaltige mit ein. In der HTML-Datei gruppiert man nun noch über 2 DIV-Container die Inhalte in die jeweiligen Spalten.</p>
<p><img src="/workbook/wp-content/uploads/2007/11/2_column.gif" border="0" alt="2 spaltiges Layout" width="200" height="150" /></p>
<p>Gleiches gilt auch für ein 3 spaltiges Layout. Hier gibt es auch eine zusätzliche CSS-Datei und auch hier muss man den jeweiligen Inhalt in die 3 Spalten aufteilen.</p>
<p><img src="/workbook/wp-content/uploads/2007/11/3_column.gif" border="0" alt="3 spaltiges Layout" width="200" height="150" /></p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/04/26/dreamweaver-schulung-fr-den-solar-verlag/" title="Dreamweaver-Schulung f&#252;r den Solar Verlag">Dreamweaver-Schulung f&#252;r den Solar Verlag</a></li><li><a href="http://www.re-design.de/2007/12/04/flexible-layouts-mit-css/" title="flexible Layouts mit CSS">flexible Layouts mit CSS</a></li><li><a href="http://www.re-design.de/2008/12/18/dreamweaver-und-css/" title="Dreamweaver und <span class="caps">CSS</span>">Dreamweaver und <span class="caps">CSS</span></a></li><li><a href="http://www.re-design.de/2008/02/25/css-seminar-bei-vva/" title="CSS-Seminar bei VVA">CSS-Seminar bei VVA</a></li><li><a href="http://www.re-design.de/2007/12/10/css-3-unterstuetzung-der-browser/" title="CSS 3-Unterst&#252;tzung der Browser">CSS 3-Unterst&#252;tzung der Browser</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/11/11/flexibles-css-layout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Kontakte</title>
		<link>http://www.re-design.de/2007/01/11/neue-kontakte/</link>
		<comments>http://www.re-design.de/2007/01/11/neue-kontakte/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 01:07:51 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[joomla]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=10</guid>
		<description><![CDATA[Heute war ich in Köln um meine alten Kontakt zu erneuern. Wie ich von Thorsten erfahren habe, gibt es einen kleinen Auftrag für eine Installation eines Joomla!-Systems und die dazu passenden Anpassungen. Auch soll in dieses System ein Shop integriert werden, welches gerade im sicherheitstechnischen Bereich eine knifflige Aufgabe wird. Aber nicht nur diese Herausforderung [...]]]></description>
			<content:encoded><![CDATA[<p>Heute war ich in Köln um meine alten Kontakt zu erneuern. Wie ich von <a href="http://basta-media.com/" title="zur Homepage">Thorsten</a>  erfahren habe, gibt es einen kleinen Auftrag für eine Installation eines Joomla!-Systems und die dazu passenden Anpassungen. Auch soll in dieses System ein Shop integriert werden, welches gerade im sicherheitstechnischen Bereich eine knifflige Aufgabe wird. Aber nicht nur diese Herausforderung wird spannen, sondern auch die Einbindung eine Videos welches auf YouTube gehostet wird. Im schlimmsten Fall würde ich ein neues Modul für <a href="http://www.joomla.de/" title="zur Homepage">Joomla!</a>  schreiben. Aber vielleicht finde ich ja auch noch was passendes. Ich werde euch auf jeden Fall auf dem Laufenden halten.</p>
<p>Zusätzlich habe ich kurz mit <a href="http://www.mediaprojekte.de/" title="zur Homepage">Schorsch</a>  gesprochen, der mit <a href="http://www.cakephp.org/" title="zur Homepage">cakePHP</a>  und <a href="http://jquery.com/" title="zur Homepage">JQuery</a>  eine sehr vielversprechende Rechnungssoftware schreibt. Wir werden und nächste Woche nochmals treffen, um mich auf den neusten Stand der Entwicklung zu bringen. Auch dieses Projekt stelle ich mir absolut spannend vor, da ich sehr selten die Möglichkeit gehabt habe, frei eine Webapplication zu schreiben.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2010/04/17/joomla-schulung/" title="Joomla!-Schulung">Joomla!-Schulung</a></li><li><a href="http://www.re-design.de/2009/06/06/individuelle-joomla-schulung/" title="individuelle Joomla!-Schulung">individuelle Joomla!-Schulung</a></li><li><a href="http://www.re-design.de/2008/03/25/dozent-an-der-macromedia-fachhochschule/" title="Dozent an der Macromedia Fachhochschule">Dozent an der Macromedia Fachhochschule</a></li><li><a href="http://www.re-design.de/2008/01/29/joomla-15-ist-da/" title="Joomla 1.5 ist da">Joomla 1.5 ist da</a></li><li><a href="http://www.re-design.de/2007/12/14/toolbar-programmierung-bei-joomla/" title="Toolbar-Programmierung bei Joomla">Toolbar-Programmierung bei Joomla</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/01/11/neue-kontakte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

