<?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>PHP Gangsta - Der PHP Blog mit Praxisbezug &#187; browser performance</title> <atom:link href="http://www.phpgangsta.de/tag/browser-performance/feed" rel="self" type="application/rss+xml" /><link>http://www.phpgangsta.de</link> <description>Ein PHP Blog mit Themen aller Art. Manchmal vergewaltige ich PHP...</description> <lastBuildDate>Thu, 02 Feb 2012 22:22:51 +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>CSS Sprites</title><link>http://www.phpgangsta.de/css-sprites</link> <comments>http://www.phpgangsta.de/css-sprites#comments</comments> <pubDate>Wed, 02 Sep 2009 23:09:38 +0000</pubDate> <dc:creator>Michael Kliewe</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[browser performance]]></category> <category><![CDATA[css]]></category> <category><![CDATA[css sprites]]></category> <category><![CDATA[Optimierung]]></category> <category><![CDATA[sprites]]></category><guid isPermaLink="false">http://www.phpgangsta.de/?p=392</guid> <description><![CDATA[In einem meiner letzten Artikel zum Thema &#8220; Externe Javascript Dateien zusammenfassen&#8221; haben wir bereits gemerkt, dass man HTTP-Requests verringern sollte, um die Performance auf dem Client und die Benutzererfahrung zu verbessern. Dies kann im Falle von CSS-Dateien weniger effektiv sein als beispielsweise bei Javascript-Dateien. Bei Bildern in großer Anzahl muss der Browser diese auch [...]<br/><br/> Keine ähnlichen Artikel.]]></description> <content:encoded><![CDATA[<p>In einem meiner letzten Artikel zum Thema &#8220;<strong> </strong><a href="http://www.phpgangsta.de/341" target="_blank">Externe Javascript Dateien zusammenfassen</a>&#8221; haben wir bereits gemerkt, dass man HTTP-Requests verringern sollte, um die Performance auf dem Client und die Benutzererfahrung zu verbessern. Dies kann im Falle von CSS-Dateien weniger effektiv sein als beispielsweise bei Javascript-Dateien.</p><p>Bei Bildern in großer Anzahl muss der Browser diese auch nacheinander laden, was zu Verzögerungen bei der Anzeige führen kann. Nehmen wir an, wir haben eine Webseite mit vielen Grafiken. Das Menu besteht aus 10 Bildern, jedes davon hat einen Mouseover-Effekt, und es gibt noch einige weitere Bilder. Es resultiert also in &gt;25 Bildern, die der Browser einzeln laden muss. Außerdem stehen dann die Mouseover-Bilder bereits von Anfang an zur Verfügung, und müssen nicht erst geladen werden, wenn die Maus darüber bewegt wird, wir haben also eine Art eingebauten Preload.</p><p>Um die Anzahl von HTTP-Requests zu verringern, kann man alle Bilder in ein großes Bild packen, und mit Hilfe von CSS dann den richtigen Abschnitt anzeigen. In diesem Schritt kann man auch nochmal diese Bilder etwas komprimieren, um noch Bandbreite zu sparen, denn häufig sehen die Bilder auch mit weniger Farben genausogut aus.</p><p>Ein solches Bild könnte zB. so aussehen:</p><p><img class="alignnone size-full wp-image-393" title="nav-final" src="http://www.phpgangsta.de/wp-content/uploads/nav-final.jpg" alt="nav-final" width="490" height="80" /></p><p>Wir haben also viele kleine Bilder in einem Bild untergebracht. Um diese Bildchen dann nutzen zu können und nur einen kleinen Ausschnitt dieses großen Bildes anzeigen zu können, nutzen wir die CSS-Funktion &#8220;background-position&#8221;.</p><p>Beispielsweise könnte der HTML-Code so aussehen:</p><pre class="brush: xml; title: ; notranslate">&lt;ul id=”navigation”&gt;
	&lt;li id=”navigation-01&quot;&gt;&lt;a href=”#”&gt;&lt;span&gt;Blog&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li id=”navigation-02&quot;&gt;&lt;a href=”#”&gt;&lt;span&gt;Portfolio&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li id=”navigation-03&quot;&gt;&lt;a href=”#”&gt;&lt;span&gt;Resume&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li id=”navigation-04&quot;&gt;&lt;a href=”#”&gt;&lt;span&gt;Contact&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre><p>Wir schreiben die einzelnen Menupunkte noch als Text rein, damit Suchmaschinen sie lesen können. Das entsprechende CSS sieht dann so aus:</p><pre class="brush: css; title: ; notranslate">#navigation {
	background:url(”/images/navigation.jpg”) no-repeat;
	width:490px;
	height:40px;
	margin:0;
	padding:0;
}

#navigation span {
	display: none;
}

#navigation li, #navigation a {
	height:40px;
	display:block;
}

#navigation li {
	float:left;
	list-style:none;
	display:inline;
}

#navigation-01 {width: 98px;}
#navigation-02 {width: 131px;}
#navigation-03 {width: 123px;}
#navigation-04 {width: 138px;}

#navigation-01 a:hover {background:url(”/images/navigation.jpg”) 0px -40px no-repeat; }
#navigation-02 a:hover {background:url(”/images/navigation.jpg”) -98px -40px no-repeat; }
#navigation-03 a:hover {background:url(”/images/navigation.jpg”) -229px -40px no-repeat; }
#navigation-04 a:hover {background:url(”/images/navigation.jpg”) -352px -40px no-repeat; }</pre><p>Standardmäßig soll die &#8220;erste Zeile&#8221; des Bildes angezeigt werden. Das erreichen wir, indem wir das ganze Bild nehmen, aber nur 490*40 Pixel anzeigen (Zeilen 2-6). Wir blenden die spans aus (Zeile 10), ändern noch das Verhalten der Liste, damit die einzelnen Punkte nicht untereinander, sondern nebeneinander erscheinend (Zeilen 19-21). Wir definieren die Breite der einzelnen Listenelemente, und spezifizieren zum Schluss noch den Hover-Effekt, der einen anderen Ausschnitt anzeigen soll.</p><p>Es gibt auch Online CSS Sprite Generatoren, mit deren Hilfe es einfach ist, viele einzelne Bilder zu einem großen Bild zusammenzufassen, und dann die entsprechenden Koordinaten zu erhalten. Schaut euch einfach die folgenden Webseiten an:</p><p><a href="http://www.csssprites.com" target="_blank">http://www.csssprites.com</a></p><p><a href="http://spritegen.website-performance.org" target="_blank">http://spritegen.website-performance.org</a></p> <br/><br/><p>Keine ähnlichen Artikel.</p>]]></content:encoded> <wfw:commentRss>http://www.phpgangsta.de/css-sprites/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic
Database Caching using disk: basic
Object Caching 516/566 objects using disk: basic

Served from: www.phpgangsta.de @ 2012-02-08 13:58:48 -->
