<?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>ajaveeb &#187; Komprimierung</title>
	<atom:link href="http://ajaveeb.de/tags/komprimierung/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaveeb.de</link>
	<description>Das Technikblog von Benjamin Hofmann</description>
	<lastBuildDate>Thu, 17 Jun 2010 21:24:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>CSS Shorthands &#8211; Rahmen</title>
		<link>http://ajaveeb.de/css-shorthands-rahmen-233</link>
		<comments>http://ajaveeb.de/css-shorthands-rahmen-233#comments</comments>
		<pubDate>Tue, 26 Aug 2008 19:19:13 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Shorthands]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=233</guid>
		<description><![CDATA[Der dritte Teil meiner Serie zu CSS Shorthands. Diesmal geht es um Rahmen.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/96976015406ef510b1c83e033d8810b5.jpg" alt="CSS Shorthands &#8211; Rahmen" width="596" height="298" /></p><p style="font-weight:bold">Der dritte Teil meiner Serie zu <a href="http://ajaveeb.de/tags/css" class="st_tag internal_tag" rel="tag" title="Posts tagged with CSS">CSS</a> <a href="http://ajaveeb.de/tags/shorthands" class="st_tag internal_tag" rel="tag" title="Posts tagged with Shorthands">Shorthands</a>. Diesmal geht es um Rahmen.</p><p>Heute kommt bereits der dritte Teil meiner Serie &#252;ber CSS Shorthands. Im ersten Teil gab ich eine <a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">kurze Einf&#252;hrung</a>, was das &#252;berhaupt ist und was sie bringen, im zweiten Teil wurden <a href="http://www.ajaveeb.de/artikel/css-shorthands-innen-und-aussenabstand-216/">Innen- und Au&#223;enabst&#228;nde</a> ausf&#252;hrlich behandelt.</p>
<p>Nun im dritten Teil werde ich Rahmen beschreiben. Wie man sie normalerweise definiert und wie man es auch ganz kurz und knackig machen kann, wenn man wei&#223; wie.<span id="more-233"></span></p>
<p>Hier also zum Einstieg eine vollst&#228;ndige Definition f&#252;r einen normalen zehn Pixel dicken blauen Rahmen:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-width</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-style</span><span class="sy0">:</span> <span class="kw2">solid</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-color</span><span class="sy0">:</span> <span class="re0">#0000ff</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Das allein ist noch kein gro&#223;es Schauspiel. Das &#196;quivalent sieht dazu so aus:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="kw2">solid</span> <span class="re0">#00f</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Auch hier hat sich der Code f&#252;r die einzelnen Attribute auf mehr oder weniger ein Drittel des vorherigen verringert. Aber nun noch die Erkl&#228;rung der Syntax:</p>
<ul>
<li>Der erste Wert bestimmt die Breite des Rahmens. Die Angabe dort kann in allen erdenklichen Gr&#246;&#223;eneinheiten erfolgen, die in CSS zul&#228;ssig sind.</li>
<li>Der zweite Wert bestimmt die Art des Rahmens. Im obigen Beispiel nutze ich eine durchgezogene Linie. Alternativen hierzu w&#228;ren eine gestrichelte (<code>dashed</code>) oder gepunktete (<code>dotted</code>) Linie. Mehr zu den verschiedenen Arten einer Rahmenlinie findet man bei <a href="http://de.selfhtml.org/css/eigenschaften/rahmen.htm#border_style">SELFHTML</a>.</li>
<li>Der dritte Wert gibt schlussendlich die Farbe an. Dies kann ebenfalls in allen zul&#228;ssigen Varianten erfolgen.</li>
</ul>
<p>Bis jetzt kann man sich noch denken, warum man das verwenden sollte. Doch sp&#228;testens wenn man einen bunten Rahmen erstellen will mit vier verschiedenen Farben, Dicken und Linienarten wird es schnell &#252;bersichtlich:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Oben ein 10 Pixel dicker durchgezogener roter Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top-width</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top-style</span><span class="sy0">:</span> <span class="kw2">solid</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top-color</span><span class="sy0">:</span> <span class="re0">#ff0000</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Rechts ein 3 Pixel dicker gestrichelter gr&#252;ner Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right-width</span><span class="sy0">:</span> <span class="re3">3px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right-style</span><span class="sy0">:</span> <span class="kw2">dashed</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right-color</span><span class="sy0">:</span> <span class="re0">#00ff00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Unten ein 50 Pixel dicker doppelter grauer Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom-width</span><span class="sy0">:</span> <span class="re3">50px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom-style</span><span class="sy0">:</span> <span class="kw2">double</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom-color</span><span class="sy0">:</span> <span class="re0">#<span class="nu0">808080</span></span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Links ein 15 Pixel dicker gepunkteter blauer Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left-width</span><span class="sy0">:</span> <span class="re3">15px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left-style</span><span class="sy0">:</span> <span class="kw2">dotted</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left-color</span><span class="sy0">:</span> <span class="re0">#0000ff</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>OK, so ein Beispiel will niemand nachbauen und wer sowas auf seiner Website verwendet leidet sowieso an Geschmacksverirrung der &#252;belsten Sorte, aber es zeigt recht eindeutig, wie schnell der Code f&#252;r einen simplen Rahmen wachsen und un&#252;bersichtlich werden kann.</p>
<p>Und um dem geneigten Entwickler die &#220;bersicht zu erleichtern und die Stellen, an denen was ge&#228;ndert werden kann, zu verringern hier nun das kurze Beispiel:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="kw2">solid</span> <span class="re0">#f00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right</span><span class="sy0">:</span> <span class="re3">3px</span> <span class="kw2">dashed</span> <span class="re0">#0f0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom</span><span class="sy0">:</span> <span class="re3">50px</span> <span class="kw2">double</span> <span class="re0">#<span class="nu0">808080</span></span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left</span><span class="sy0">:</span> <span class="re3">15px</span> <span class="kw2">dotted</span> <span class="re0">#00f</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>An diesem Beispiel sieht man deutlich, wie effektiv Shorthands sein k&#246;nnen und wie stark sie den Code vereinfachen k&#246;nnen. Und wie man sieht kann man die Kurzdefinitionen nicht nur f&#252;r einen kompletten Rahmen verwenden, sondern auch nur f&#252;r bestimmte Teile eines Rahmens.</p>
<p>Logischerweise kann man nat&#252;rlich auch Mischungen verwenden, wie die folgende:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#f00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top</span><span class="sy0">:</span> <span class="re3">5px</span> <span class="kw2">solid</span> <span class="re0">#00f</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hier wird zuerst f&#252;r das gesamte Element ein solider Rahmen von einem Pixel Dicke und in der Farbe rot angegeben. Anschlie&#223;end wird ein Teil des Rahmens &#252;berschrieben. Dadurch ist der komplette Rahmen rot und nur oben ist er f&#252;nf Pixel dick und blau.</p>
<p>Hier nun eine Liste der weiteren Artikel, die sich in dieser Serie befinden:</p>
<ul>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">CSS Shorthands effektiv nutzen &#8211; Einf&#252;hrung</a></li>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-innen-und-aussenabstand-216/">CSS Shorthands &#8211; Innen- und Au&#223;enabstand</a></li>
</ul>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/david_ludwig/386317095/">Border-USA-Mexico</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/css-shorthands-rahmen-233#comments">1 Kommentare</a> &middot; <a href="http://ajaveeb.de/css-shorthands-rahmen-233">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/css-shorthands-rahmen-233/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS Shorthands &#8211; Innen- und Au&#223;enabstand</title>
		<link>http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216</link>
		<comments>http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216#comments</comments>
		<pubDate>Sun, 24 Aug 2008 17:56:27 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Shorthands]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=216</guid>
		<description><![CDATA[Dies ist der zweite Teil meiner Artikel-Serie &#252;ber CSS-Shorthands. Im ersten Teil habe ich nur eine kleine Einf&#252;hrung zu diesem Thema gegeben und hier geht es direkt ans Eingemachte. Der Innenabstand, besser bekannt als padding und der Au&#223;enabstand alias margin sind zwei sehr popul&#228;re Beispiele f&#252;r effektive Shorthands. Hier nun auch direkt das Beispiel dazu: [...]]]></description>
			<content:encoded><![CDATA[<p>Dies ist der zweite Teil meiner Artikel-Serie &#252;ber <a href="http://ajaveeb.de/tags/css" class="st_tag internal_tag" rel="tag" title="Posts tagged with CSS">CSS</a>-<a href="http://ajaveeb.de/tags/shorthands" class="st_tag internal_tag" rel="tag" title="Posts tagged with Shorthands">Shorthands</a>. Im <a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">ersten Teil</a> habe ich nur eine kleine Einf&#252;hrung zu diesem Thema gegeben und hier geht es direkt ans Eingemachte.</p>
<p>Der Innenabstand, besser bekannt als <code>padding</code> und der Au&#223;enabstand alias <code>margin</code> sind zwei sehr popul&#228;re Beispiele f&#252;r effektive Shorthands.<span id="more-216"></span> Hier nun auch direkt das Beispiel dazu:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Erst mal die umst&#228;ndliche Ausf&#252;hrung */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">30px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-left</span><span class="sy0">:</span> <span class="re3">40px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Dann die kurze Variante */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="re3">20px</span> <span class="re3">30px</span> <span class="re3">40px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Bei <code>margin</code> gilt genau die gleiche Syntax <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Bei <code>padding</code> und <code>margin</code> werden die einzelnen Werte immer in einer bestimmten Reihenfolge angegeben, die ich nun zeigen will:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding</span><span class="sy0">:</span> oben rechts unten links<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Das allein ist noch nicht sehr spannend, denn das wird es erst, wenn man die K&#252;rzung noch weiter k&#252;rzt. So kann z.B. folgendes Konstrukt noch st&#228;rker gek&#252;rzt werden:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Erst mal die umst&#228;ndliche Ausf&#252;hrung */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-right</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-left</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Dann die kurze Variante */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="kw2">auto</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hierbei wird f&#252;r oben und unten jeweils der Wert <code>10px</code> genutzt und f&#252;r rechts und links <code>auto</code>. Man muss also nicht immer alle Werte f&#252;r alle Positionen bef&#252;llen. Man kann von einem Wert aufw&#228;rts bis zu maximal vier Werten gehen. Die letzen beiden M&#246;glichkeiten werde ich jetzt noch zeigen:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Erst mal die umst&#228;ndliche Ausf&#252;hrung f&#252;r einen gleichm&#228;&#223;igen Abstand */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Dann die kurze Variante f&#252;r einen gleichm&#228;&#223;igen Abstand */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hiermit bekommt man auf allen vier Seiten eines Elementes einen gleichm&#228;&#223;igen Abstand von jeweils 10 Pixel. Und damit komme ich auch schon zur wohl unbekanntesten und am wenigsten genutzten Variante. Der mit drei Werten.</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">30px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="re3">20px</span> <span class="re3">30px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Damit bekommt man oben einen Abstand von 10 Pixel, rechts von 20 Pixel und unten von 30 Pixel. Ein Abstand nach links existiert bei dieser Notation nicht.</p>
<p>Dies war auch schon der zweite Teil meiner Serie &#252;ber CSS Shorthands. Fragen, Anregungen, Kritik ist immer gern gesehen. Vielleicht habe ich ja auch etwas vergessen.</p>
<p>Hier nun eine Liste der weiteren Artikel, die sich in dieser Serie befinden:</p>
<ul>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">CSS Shorthands effektiv nutzen &#8211; Einf&#252;hrung</a></li>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-rahmen-233/">CSS Shorthands &#8211; Rahmen</a></li>
</ul>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216#comments">1 Kommentare</a> &middot; <a href="http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS Shorthands effektiv nutzen &#8211; Einf&#252;hrung</title>
		<link>http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206</link>
		<comments>http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206#comments</comments>
		<pubDate>Sun, 24 Aug 2008 17:43:32 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Shorthands]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=206</guid>
		<description><![CDATA[Heute will ich eine Artikel-Serie starten, die sich mit CSS Shorthands besch&#228;ftigt. Da das Thema ein sehr komplexes ist und nicht mal eben schnell abgehandelt werden kann, werde ich heute nur mit einer kleinen Einf&#252;hrung starten und die anderen Teile der Serie, die dann die einzelnen M&#246;glichkeiten von Shorthands n&#228;her beleuchten in den n&#228;chsten Tagen [...]]]></description>
			<content:encoded><![CDATA[<p>Heute will ich eine Artikel-Serie starten, die sich mit <a href="http://ajaveeb.de/tags/css" class="st_tag internal_tag" rel="tag" title="Posts tagged with CSS">CSS</a> <a href="http://ajaveeb.de/tags/shorthands" class="st_tag internal_tag" rel="tag" title="Posts tagged with Shorthands">Shorthands</a> besch&#228;ftigt. Da das Thema ein sehr komplexes ist und nicht mal eben schnell abgehandelt werden kann, werde ich heute nur mit einer kleinen Einf&#252;hrung starten und die anderen Teile der Serie, die dann die einzelnen M&#246;glichkeiten von <a href="http://ajaveeb.de/tags/shorthands" class="st_tag internal_tag" rel="tag" title="Posts tagged with Shorthands">Shorthands</a> n&#228;her beleuchten in den n&#228;chsten Tagen St&#252;ck f&#252;r St&#252;ck ver&#246;ffentlichen.<span id="more-206"></span></p>
<h3>Was sind CSS Shorthands?</h3>
<p>Im Grunde genommen ist das schnell erkl&#228;rt. Es sind schlichtweg Abk&#252;rzungen von Definitionen in CSS. Normalerweise muss man z.B. bei einem Rahmen jede Eigenschaft einzeln definieren. Genauer gesagt gibt es f&#252;r jede dieser Eigenschaften eine eigene M&#246;glichkeit zur Definition:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-width</span><span class="sy0">:</span> <span class="re3">1px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-style</span><span class="sy0">:</span> <span class="kw2">dotted</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-color</span><span class="sy0">:</span> <span class="re0">#ff0000</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hiermit wird ein Rahmen erstellt, der exakt ein Pixel breit, gepunktet und rot ist. Nat&#252;rlich ist das umst&#228;ndlich zu schreiben, wenn man, wie ich, seinen Quelltext in einem normalen Texteditor schreibt und nicht in einem dieser speziellen Editoren f&#252;r CSS. Darum gibt es f&#252;r obiges Beispiel auch die M&#246;glichkeit dies so zu definieren:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">dotted</span> <span class="re0">#f00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Der Code hat sich somit auf ca. ein Drittel des Vorherigen gek&#252;rzt und ist wesentlich besser zu lesen als zuvor. Die Reihenfolge der einzelnen Werte folgt bei jeder M&#246;glichkeit Shorthands zu nutzen einem festgelegten Muster, damit niemand seine eigene Suppe kochen kann und Browser eine bestimmte Grundlage zum Rendering haben.</p>
<p>Im &#252;brigen kann man auch Farbangaben k&#252;rzen, wie man oben sehr gut sieht. So kann z.B. aus <code>#000000</code> einfach nur <code>#000</code> werden. Dies funktioniert nat&#252;rlich nur bei Farbangaben, bei denen jeweils zwei mal die gleiche Ziffer hintereinander erscheint. <code>#12ff66</code> kann man deswegen nicht in Kurzschreibweise definieren.</p>
<p>So, ich denke das Grundprinzip hat nun jeder verstanden und deswegen fange ich gleich mal an den zweiten Teil zu schreiben.</p>
<p>Hier nun eine Liste der weiteren Artikel, die sich in dieser Serie befinden:</p>
<ul>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-innen-und-aussenabstand-216/">CSS Shorthands &#8211; Innen- und Au&#223;enabstand</a></li>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-rahmen-233/">CSS Shorthands &#8211; Rahmen</a></li>
</ul>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206#comments">4 Kommentare</a> &middot; <a href="http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Links, Verweise, was auch immer… (3)</title>
		<link>http://ajaveeb.de/links-verweise-was-auch-immer-3-174</link>
		<comments>http://ajaveeb.de/links-verweise-was-auch-immer-3-174#comments</comments>
		<pubDate>Thu, 21 Aug 2008 20:47:11 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Linktipps]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[eBook]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=174</guid>
		<description><![CDATA[kuler: Eine Applikation von Adobe, mit der man leicht selbst ansprechende Farbpaletten erstellen kann. (via Webwork-Tools) 15 Quick Ways to Shrink Page Load Times: Sehr interessanter Artikel zum Thema Komprimierung und Ladezeitverbesserung einer Website. Kostenlose eBooks und Magazine: Hier findet man dutzende frei zum Download stehende eBooks zu diversen Themen, wie Design, Entwicklung, SEO, uvm. [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://kuler.adobe.com/">kuler</a>:<br />
Eine Applikation von Adobe, mit der man leicht selbst ansprechende Farbpaletten erstellen kann. (via <a href="http://www.webwork-tools.de/2008/08/farbkombinationen/">Webwork-Tools</a>)</li>
<li><a href="http://webjackalope.com/fast-page-load-time/">15 Quick Ways to Shrink Page Load Times</a>:<br />
Sehr interessanter Artikel zum Thema <a href="http://ajaveeb.de/tags/komprimierung" class="st_tag internal_tag" rel="tag" title="Posts tagged with Komprimierung">Komprimierung</a> und Ladezeitverbesserung einer Website.</li>
<li><a href="http://www.webmasterpro.de/portal/article/kostenlose-ebooks-und-magazine-uebersicht.html">Kostenlose eBooks und Magazine</a>:<br />
Hier findet man dutzende frei zum Download stehende eBooks zu diversen Themen, wie <a href="http://ajaveeb.de/tags/design" class="st_tag internal_tag" rel="tag" title="Posts tagged with Design">Design</a>, Entwicklung, SEO, uvm.</li>
<li><a href="http://pchart.sourceforge.net/">pChart</a>:<br />
Graphen mit <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> erstellen ist kein leichtes Unterfangen. Mit dieser <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Klasse wird es jedoch um einiges einfacher.</li>
<li><a href="http://www.oldversion.com/">OldVersion.com</a>:<br />
Ab und an kommt man nicht daran vorbei &#228;ltere Versionen von Software zu installieren. Hier findet sich ein relativ ausf&#252;hrliches Archiv.</li>
<li><a href="http://www.bplaced.net/?location=home">bplaced</a>:<br />
Bis zu 2 GB kostenlosem Webspace ohne Werbung. Selbst noch nicht getestet, klingt aber gut.</li>
</ul>
<p>Du kennst noch weitere interessante Link zu Websites, die jeder ambitionierte Webdeveloper kennen sollte? <a href="http://www.ajaveeb.de/impressum/#contact">Dann immer her damit!</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/links-verweise-was-auch-immer-3-174#comments">0 Kommentare</a> &middot; <a href="http://ajaveeb.de/links-verweise-was-auch-immer-3-174">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/links-verweise-was-auch-immer-3-174/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML-, CSS- und Javascript-Quelltext optimieren</title>
		<link>http://ajaveeb.de/html-css-und-javascript-quelltext-optimieren-7</link>
		<comments>http://ajaveeb.de/html-css-und-javascript-quelltext-optimieren-7#comments</comments>
		<pubDate>Mon, 04 Feb 2008 21:08:47 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Traffic]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/artikel/html-css-und-javascript-quelltext-optimieren-7/</guid>
		<description><![CDATA[Um auf meinen Eintrag von gestern zur&#252;ckzukommen zeige ich heute M&#246;glichkeiten auf, wie man Quelltexte in Sachen Geschwindigkeit optimieren kann. Zuallererst sollte man sich schon beim Entwerfen des Designs, bspw. mit Photoshop, Gedanken dar&#252;ber machen, wie man das fertige Design am besten in validen Quelltext umsetzen kann. Einfach drauflos zu designen und sich erst dann [...]]]></description>
			<content:encoded><![CDATA[<p>Um auf <a href="http://www.ajaveeb.de/beitraege/schwarzes-google-oder-sauberer-code-6/">meinen Eintrag von gestern</a> zur&#252;ckzukommen zeige ich heute M&#246;glichkeiten auf, wie man Quelltexte in Sachen Geschwindigkeit optimieren kann.</p>
<p>Zuallererst sollte man sich schon beim Entwerfen des Designs, bspw. mit Photoshop, Gedanken dar&#252;ber machen, wie man das fertige <a href="http://ajaveeb.de/tags/design" class="st_tag internal_tag" rel="tag" title="Posts tagged with Design">Design</a> am besten in validen Quelltext umsetzen kann. Einfach drauflos zu designen und sich erst dann Gedanken &#252;ber die Umsetzung zu machen bringt nur massive Probleme mit sich, durch die man schnell die Lust am frisch entworfenen <a href="http://ajaveeb.de/tags/design" class="st_tag internal_tag" rel="tag" title="Posts tagged with Design">Design</a> verliert. Hat man sich jedoch Gedanken gemacht f&#228;llt die Umsetzung meist sehr leicht, da das fertige Grundger&#252;st schon im Kopf herumgeistert.<span id="more-7"></span></p>
<h3>Die Umsetzung des Quelltextes</h3>
<p>Viele setzen bei der <a href="http://ajaveeb.de/tags/html" class="st_tag internal_tag" rel="tag" title="Posts tagged with HTML">HTML</a>-Umsetzung auf Frameworks, wie z.B. <a href="http://www.yaml.de/">YAML</a>. Doch diese engen den Ideenfluss meist nur ein, wenn man ein komplett selbst erstelltes Template f&#252;r eine Website gestalten will. Von daher empfiehlt es sich ein leeres Ger&#252;st zu erstellen, dass bis auf die wichtigsten Metatags und die Basis-Elemente nichts enth&#228;lt. Wenn dahinter noch eine ausgekl&#252;gelte Ordnerstruktur f&#252;r die ausgelagerten Dateien und Bilder steckt ist dies umso besser, da man sich einige Arbeit sparen kann.</p>
<p>Anschlie&#223;end sollte man darauf achten, dass man so wenig Tags wie m&#246;glich verwendet, um den Quelltext nicht unn&#246;tig aufzubl&#228;hen. Ein gutes Beispiel hierf&#252;r sind kompliziert verschachtelte DIV-Bl&#246;cke, die man durch gut eingesetztes <a href="http://ajaveeb.de/tags/css" class="st_tag internal_tag" rel="tag" title="Posts tagged with CSS">CSS</a> auf einen, maximal zwei verringern kann. Zum einen sorgen weniger Tags nat&#252;rlich f&#252;r weniger anfallenden <a href="http://ajaveeb.de/tags/traffic" class="st_tag internal_tag" rel="tag" title="Posts tagged with Traffic">Traffic</a>, zum anderen jedoch auch f&#252;r eine erh&#246;hte Barrierefreiheit, da z.B. Screenreader leichter auf die Inhalte zugreifen k&#246;nnen. Hier k&#246;nnte, wenn es ganz dumm l&#228;uft, etwas &#228;hnliches herauskommen, wie zu Zeiten der Tabellenlayouts. Sieht gut aus, hat aber keinen wirklichen Nutzen f&#252;r die User.</p>
<p>Eine weitere M&#246;glichkeit Traffic zu sparen ist auf Kommentare zu verzichten. Ich will hier niemanden dazu auffordern un&#252;bersichtlichen, da nicht dokumentierten, Code zu produzieren. Ganz im Gegenteil. Eine gute Dokumentation ist f&#252;r die sp&#228;tere Weiterarbeit an Projekten unerl&#228;sslich. Jedoch werden Kommentare nicht f&#252;r den Produktivbetrieb ben&#246;tigt. Deswegen kann man sie getrost entfernen. Positiver Nebeneffekt: Leuten, die zu faul sind eigenen Quellcode zu schreiben und von diversen Sites klauen erschwert man die Arbeit, da die ben&#246;tigten Stellen schwieriger zu finden sind <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>CSS und <a href="http://ajaveeb.de/tags/javascript" class="st_tag internal_tag" rel="tag" title="Posts tagged with Javascript">Javascript</a> optimieren</h3>
<p>In Sachen CSS und Javascript bin ich ebenfalls der Meinung, dass eine Dokumentation das A und O bedeutet. Allerdings sollte man auch hier auf eben diese im Produktiveinsatz verzichten. Was die Entwicklung mit diesen beiden Sprachen angeht sollte man keinesfalls darauf verzichten den Code so zu schreiben, wie er f&#252;r einen selbst am besten zu lesen ist. Wenn man gerne viele Leerzeichen setzt, mit Tabs einr&#252;ckt oder auf Kurzschreibweisen verzichtet, dann soll niemand daran gehindert werden.</p>
<p>Die <a href="http://ajaveeb.de/tags/komprimierung" class="st_tag internal_tag" rel="tag" title="Posts tagged with Komprimierung">Komprimierung</a> und <a href="http://ajaveeb.de/tags/optimierung" class="st_tag internal_tag" rel="tag" title="Posts tagged with Optimierung">Optimierung</a> von diesen beiden Arten Quelltext erfolgt im Nachhinein, nachdem man die Codes ausf&#252;hrlich getestet und f&#252;r gut befunden hat. Hierf&#252;r gibt es einige sehr interessante Dienste im Netz, die diese Arbeit &#252;bernehmen. Und das sogar gut.</p>
<p>Zum einen gibt es f&#252;r Javascript den <a href="http://compressor.ebiene.de/">Compressor</a> von <a href="http://www.ebiene.de/">Sergej M&#252;ller</a>, mit dem man den Code auf zwei verschiedene Arten komprimieren kann. Die erste f&#252;hrt dazu, dass s&#228;mtliche unn&#246;tigen Kommentare, Leerzeichen, -zeilen, Tabs, etc. entfernt werden. Die zweite, effektivere, bewirkt noch um einiges mehr, da alles in eine einzige Zeile geschrieben wird. Hier jedoch muss der Code noch einmal in aller Ausf&#252;hrlichkeit getestet werden, da einzeiliges Javascript schon des &#246;fteren zu Problemen gef&#252;hrt hat.</p>
<p>Eben genannter Dienst ist sogar f&#252;r CSS geeignet, wobei ich daf&#252;r den <a href="http://codebeautifier.com/">Code Beautifier</a> bevorzuge, da er sehr viele n&#252;tzliche Einstellungen bietet. Man kann damit bspw. die letzten &#8220;;&#8221; in einer Definition entfernen oder ausf&#252;hrlich geschriebene Styles durch Kurzschreibweisen (<a href="http://ajaveeb.de/tags/shorthands" class="st_tag internal_tag" rel="tag" title="Posts tagged with Shorthands">Shorthands</a>) ersetzen. Auch Farbnamen und <code>font-weight</code>-Angaben k&#246;nnen optimiert werden. Nebenbei kann er auch ung&#252;ltige Angaben f&#252;r die angegebene CSS-Version l&#246;schen, um validen Code zu erhalten. Das beste Feature ist jedoch, dass man ausw&#228;hlen kann, wie stark man komprimieren will. Vom Entfernen unn&#246;tiger Zeilenumbr&#252;che und Kommentare bis hin zur einzeiligen Ausgabe ist vieles m&#246;glich. Auch hier empfiehlt sich ein ausf&#252;hrlicher Test in verschiedenen Browsern, da durch zu starke Komprimierung schon mal die eine oder andere Angabe durch ungkl&#252;ckliche Sortierung wieder &#252;berschrieben werden kann. Dies stellt jedoch die Ausnahme dar.</p>
<h3>gZip-Komprimierung</h3>
<p>Ist man soweit gekommen, k&#246;nnte man annehmen, dass alle M&#246;glichkeiten den Code zu optimieren schon ersch&#246;pft sind. Weit gefehlt. Es gibt noch eine letzte, extrem wirkungsvolle, Technik, den Code noch weiter zu komprimieren: gZip-Komprimierung. Einige werden jetzt denken, dass dies nur mit <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Dateien funktioniert. Prinzipiell stimmt das auch, jedoch gibt es diverse L&#246;sungsans&#228;tze mit denen man auch andere Arten von Textdateien zippen kann.</p>
<p>Eine davon beschreibt <a href="http://www.alinki.com/de/blog/archives/27">Alinki.com</a>. Hier wird mittels einer .htaccess-Datei und bereits gezippten Dateien ein m&#246;glicher Overhead durch die st&#228;ndige Neugenerierung umgangen, da die komprimierten Dateien bereits auf dem Server liegen und nur noch ausgeliefert werden m&#252;ssen.</p>
<p>Eine weitere M&#246;glichkeit mittels eines PHP-Scripts wird auf <a href="http://www.php-vision.de/plugins-scripte/javascript-css-komprimieren.php">PHP-Vision.de</a> beschrieben. Dort werden die Dateien on-the-fly komprimiert, was jedoch, speziell bei g&#252;nstigen Webspace-Angeboten und Freehostern, zu eventuellen Einbu&#223;en in der Performance f&#252;hren kann.</p>
<h3>Fazit</h3>
<p>Allgemein kann man sagen, dass es nicht allzu schwer ist optimierten und schnellen Code zu produzieren, der sehr viele positive Nebeneffekte mit sich bringt. Logischerweise liegt es immer an einem selbst, ob man die gebotenen M&#246;glichkeiten nutzt oder nicht. Es ist auf alle F&#228;lle jedem zu empfehlen, der seine Website einer breiteren Masse zur Verf&#252;gung stellen will.</p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/html-css-und-javascript-quelltext-optimieren-7#comments">3 Kommentare</a> &middot; <a href="http://ajaveeb.de/html-css-und-javascript-quelltext-optimieren-7">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/html-css-und-javascript-quelltext-optimieren-7/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

