<?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>Der Interaktionsdesigner - PHP, jQuery und CSS &#187; CSS</title>
	<atom:link href="http://www.interaktionsdesigner.de/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.interaktionsdesigner.de</link>
	<description>Pauls Blog beschäftigt sich mit Webentwicklungsthemen, im Focus stehen jQuery, TYPO3, CSS und PHP.</description>
	<lastBuildDate>Sat, 05 Jun 2010 21:13:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Layout mit 100 Prozent Höhe</title>
		<link>http://www.interaktionsdesigner.de/2009/03/31/layout-mit-100-prozent-hohe/</link>
		<comments>http://www.interaktionsdesigner.de/2009/03/31/layout-mit-100-prozent-hohe/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 07:13:13 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.interaktionsdesigner.de/?p=370</guid>
		<description><![CDATA[Diesmal geht es die Höhe von Div-Containern. Findige Designer haben sich ausgedacht ein Layout zu basteln, welches eine Fußzeile besitzt die immer am unteren Bildschirmrand klebt. Es sei denn der Inhalt ist größer, dann muss die Fußzeile mit runterrutschen.
Soweit kein Problem; vor einiger Zeit habe ich ein schönes Beispiel gefunden welches genau diese Problem löst, [...]]]></description>
			<content:encoded><![CDATA[<p>Diesmal geht es die <strong>Höhe von Div-Containern</strong>. Findige Designer haben sich ausgedacht ein Layout zu basteln, welches eine Fußzeile besitzt die <strong>immer am unteren Bildschirmrand</strong> klebt. Es sei denn der Inhalt ist größer, dann muss die Fußzeile mit runterrutschen.</p>
<p>Soweit kein Problem; vor einiger Zeit habe ich ein <a title="100% Höhe mit CSS" href="http://www.xs4all.nl/~peterned/examples/csslayout1.html" target="_self">schönes Beispiel</a> gefunden welches genau diese Problem löst, in allen Browsern und nur mit CSS. Was aber, wenn die Seite mit dem <a title="960.gs CSS Framework" href="http://www.960.gs" target="_blank"><strong>960 Grid System</strong> CSS Framework</a> aufgebaut wurde und nicht nur ein Footer hat sondern <strong>zwei</strong>?</p>
<p>Um genau zu sein, ist die Breite vom CSS Framework auf 960 Pixel beschränkt, der Footer mit Inhalten befindet sich innerhalb des umfassenden Containers, aber die Hintergrundgrafik soll <strong>über die gesamte Breite gehen</strong>.</p>
<p>Unmöglich? Niemals! Es folgt eine <strong>Skizze</strong>, der <strong>Lösungsansatz</strong> und ein paar Worte über das <strong>960.gs</strong>.<span id="more-370"></span></p>
<h2>Die Anforderung</h2>
<p><img class="alignright size-full wp-image-379" title="100% Höhe mit CSS" src="http://www.interaktionsdesigner.de/wp-content/uploads/2009/03/100hoehe-1.jpg" alt="100% Höhe mit CSS" width="550" height="424" />Diese Skizze soll das Problem verdeutlichen. Der weiße Bereich ist der Inhalt welcher sich in der Höhe ausdehnt und den gesamten Platz ein nimmt.</p>
<p>Header und Footer sollen aber über die gesamte Breite gehen, wobei die Inhalte sich aber am Content orientieren müssen da die gesamte Seite zentriert ist.</p>
<p>"<em>Viel Spaß</em>" hat der Designer gesagt, hatte ich auch!</p>
<h2>Das 960.gs</h2>
<p><strong>CSS Frameworks</strong> sind in aller Munde und es lassen sich damit wirklich schnell und einfach Layouts aufbauen. Ich habe mich in diesem Projekt gegen das kompliziertere, aber dafür flexiblere <a title="YAML ist auch ein CSS Framework" href="http://www.yaml.de" target="_blank">YAML</a> entschieden weil es mir überdimensioniert erschien.</p>
<p>Im 960.gs entscheidet man sich für ein <strong>12-</strong> oder <strong>16-spaltiges</strong> Layout und benennt, je nach dem, den umfassenden Container:<br />
<pre><code class='html'>&lt;div class="container_16"&gt;&lt;/div&gt;</code></pre><br />
Anschließend hat man innerhalb mit den Klassen <strong>grid_1</strong> bis <strong>grid_16</strong> (bzw. grid_12) beliebige Möglichkeiten zur Steuerung der Inhalte. Auch die <strong>Integration in TYPO3</strong> ist natürlich überhaupt kein Problem, mein Template sieht für das oben beschriebene Projekt so aus:</p>
<pre><code class="html">&lt;div class="outerwrap"&gt;
&nbsp;&nbsp;&lt;div class="container_16 wrap png_fix"&gt;
&nbsp;&nbsp;[tab]
&nbsp;&nbsp;[tab]&lt;!-- KOPF --&gt;
&nbsp;&nbsp;[tab]&lt;div class="grid_11 top"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;ul class="menu sf-menu"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]###MAIN_MENU###
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;/ul&gt;
&nbsp;&nbsp;[tab]&lt;/div&gt;
&nbsp;&nbsp;[tab]
&nbsp;&nbsp;[tab]&lt;div class="grid_4 top logo"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;###LOGO###
&nbsp;&nbsp;[tab]&lt;/div&gt;
&nbsp;&nbsp;[tab]
&nbsp;&nbsp;[tab]&lt;!-- TEASER (Bild) --&gt;
&nbsp;&nbsp;[tab]&lt;div class="grid_11 teaser left"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;###TEASER###
&nbsp;&nbsp;[tab]&lt;/div&gt;
&nbsp;&nbsp;[tab]
&nbsp;&nbsp;[tab]&lt;div class="grid_4 teaser right png_fix"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;###LOGIN###
&nbsp;&nbsp;[tab]&lt;/div&gt;

&nbsp;&nbsp;[tab]
&nbsp;&nbsp;[tab]&lt;!-- CONTENT --&gt;
&nbsp;&nbsp;[tab]&lt;div class="content_wrap"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;!-- ganze spalte --&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;div class="grid_11 left"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]&lt;div class="content"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]&nbsp;&nbsp;###CONTENT_LEFT###
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]&lt;/div&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;!-- Rechts vom Inhalt --&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;div class="grid_4 right png_fix"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]###CONTENT_RIGHT###
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;div class="clear"&gt;&lt;/div&gt;
&nbsp;&nbsp;[tab]&lt;/div&gt;
&nbsp;&nbsp;[tab]
&nbsp;&nbsp;[tab]
&nbsp;&nbsp;[tab]&lt;!-- FOOTER --&gt;
&nbsp;&nbsp;[tab]&lt;div class="footer_wrap"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;div class="grid_11 footer"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]###COPYRIGHT###
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;div class="grid_4 footer"&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]&lt;ul&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]&nbsp;&nbsp;###FOOTER_MENU###
&nbsp;&nbsp;[tab]&nbsp;&nbsp;[tab]&lt;/ul&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;
&nbsp;&nbsp;[tab]&nbsp;&nbsp;&lt;div class="clear"&gt;&lt;/div&gt;
&nbsp;&nbsp;[tab]&lt;/div&gt;
&nbsp;&nbsp;&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p>Ein allgemeines Problem von CSS Frameworks wird in diesem Template auch gleich sichtbar: <strong>CSS Frameworks neigen zur Divirites</strong>. Dafür wird einem aber eine große Menge CSS-Nerv abgenommen. Hier bleibt kritisch zu betrachten wie viel Traffic die Seite zu erwarten hat und wie viel Zeit für die Realisierung veranschlagt wurde.</p>
<h2>100% Höhe Nr. 1</h2>
<p>Die kleinere Aufgabe besteht darin den <strong>Footer an das untere Ende der Seite</strong> zu kleben. Das geht mit dem Tutorial von <a title="100% Höhe mit CSS" href="http://www.xs4all.nl/~peterned/examples/csslayout1.html" target="_blank">xs4all</a> ganz leicht: Der Container <em>wrap</em> bekommt eine relative Position zugewiesen und eine<strong> Mindesthöhe von 100%</strong><em>.</em><br />
Der <em>footer_wrap</em> wird <strong>absolut positioniert</strong> und mit <em>bottom:0</em> an den unteren Rand vom <em>wrap</em> gelegt. Damit bei längerem Inhalt oder kleinem Browserfenster, der Inhalt nicht über den Footer reicht kriegt der Container <em>content_wrap</em> einen Innenabstand (<em>padding</em>) nach unten, welcher der Höhe vom <strong>Footer plus Abstand</strong> enthält. Das ist der Trick!</p>
<h2>100% Höhe Nr. 2</h2>
<p><img class="alignright size-full wp-image-345" title="Problem mit 100% Höhe" src="http://www.interaktionsdesigner.de/wp-content/uploads/2009/03/100hoehe-2.jpg" alt="Problem mit 100% Höhe" width="550" height="600" />Jetzt hat der Footer noch kein Hintergrundbild. Damit es über die gesamte Breite geht kriegt es der Container <em>outerwrap</em>. Der hat allerdings ein Problem: Bei 100% Höhe hängt der Balken immer am <strong>unteren Browserrand</strong>. Wenn die Inhalte länger sind, bleibt der Balken einfach stehen. Im Bild repräsentiert der schwarze Rahmen das Browserfenster.</p>
<p>Da im guten <strong>Standard Typoscript</strong> sowieso <strong>jQuery</strong> eingebunden ist und für diverse Zwecke genutzt wird, kann das Lieblingsframework hier treue Dienste leisten:</p>
<p>Die <strong>Besucher ohne JavaScript</strong> kriegen einfach keinen Balken zu sehen. Dem Container <em>outerwrap</em> wird das Hintergrundbild wieder genommen und statt dessen der Klasse <em>balken</em> zugewiesen. Im jQueryscript wird eine Funktion hinzugefügt: <em>fix_outerwrap_bug()</em>. <pre><code class='javascript'>function fix_outerwrap_bug() {<br />
&nbsp;&nbsp;$(".outerwrap")<br />
&nbsp;&nbsp;[tab].addClass("balken")<br />
&nbsp;&nbsp;[tab].css("height", $(document).height());<br />
}</code></pre><br />
Damit erhält der Container <em>outerwrap</em> die Klasse <em>balken</em> (sofern noch nicht vorhanden; das checkt jQuery von alleine) und die <strong>Höhe des Dokuments</strong> zugewiesen. Die Funktion muss beim laden der Seite aufgerufen werden:<br />
<pre><code class='javascript'>jQuery(function($) {<br />
&nbsp;&nbsp;fix_outerwrap_bug();<br />
});</code></pre><br />
Funktioniert einwandfrei, allerdings nur beim ersten laden der Seite. Der findige Internetbenutzer der die <strong>Größe des Browserfensters</strong> verändert kriegt Blödsinn zu sehen. Deshalb noch eine Zeile hinzufügen:<br />
<pre><code class='javascript'>$(window).resize(function() { fix_outerwrap_bug(); });</code></pre><br />
Eigentlich selbsterklärend: Bei Größenänderung (<em>resize()</em>) vom Fenster (<em>$(window)</em>) wird die Funktion <em>fix_outerwrap_bug()</em> aufgerufen. Das wars!</p>
<h2>Fazit</h2>
<p>Das es ohne JavaScript nicht funktioniert ist natürlich nicht ganz so schön, aber für eine Kleinigkeit im Design zu verkraften. Selber Schuld wer JavaScript deaktivert. <strong>Dank jQuery</strong> ist es ganz einfach und validieren tut es auch, warum also nicht?</p>
<p>Wer die vorgestellte <strong>Lösung in Aktion</strong> sehen will, dem sei ein Besuch auf der Seite <a title="ArminiusFunds" href="http://www.arminiusfunds.com" target="_blank">http://www.arminiusfunds.com</a> ans Herz gelegt. <strong>Viel Spaß </strong>und frohes investieren!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interaktionsdesigner.de/2009/03/31/layout-mit-100-prozent-hohe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Schlankes CSS mit CSSTidy</title>
		<link>http://www.interaktionsdesigner.de/2008/04/11/schlankes-css-mit-csstidy/</link>
		<comments>http://www.interaktionsdesigner.de/2008/04/11/schlankes-css-mit-csstidy/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 09:21:03 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.interaktionsdesigner.de/?p=23</guid>
		<description><![CDATA[Der Pixelgangster hat mich auf das schöne Tool CSSTidy aufmerksam gemacht. Mit umfangreichen Möglichkeiten lassen sich so Stylesheets komprimieren und aufräumen. Verfügbar ist es als Software für Windows, Linux und OSX, aber auch als PHP Script (meine Wahl). So sieht es aus:


Nach der "Reinigung" gibt es ein übersichtliches Protokoll der vorgenommenen Änderungen:


Die CSS Datei von [...]]]></description>
			<content:encoded><![CDATA[<p>Der <a href="http://www.pixelgangster.de/" target="pg">Pixelgangster</a> hat mich auf das schöne Tool <a href="http://csstidy.sourceforge.net/index.php" target="ct">CSSTidy</a> aufmerksam gemacht. Mit umfangreichen Möglichkeiten lassen sich so Stylesheets komprimieren und aufräumen. Verfügbar ist es als Software für Windows, Linux und OSX, aber auch als PHP Script (meine Wahl). So sieht es aus:<br />
<img src="http://www.interaktionsdesigner.de/wp-content/uploads/2008/04/bild-4.png" border="0" title="CSSTidy Startbildschirm"><br />
<br />
Nach der "Reinigung" gibt es ein übersichtliches Protokoll der vorgenommenen Änderungen:<br />
<img src="http://www.interaktionsdesigner.de/wp-content/uploads/2008/04/bild-5.png" border="0" title="CSSTidy Protokoll"><br />
<br />
Die CSS Datei von <a href="http://www.papyros.org" title="Literaturplattform Papyros" alt="Lesen Denken Schreiben" target="pa">Papyros</a> hat es mit den oben gezeigten Einstellungen um 22% geschrumpft, was ich nicht als primären Grund für die Verwendung ansehe. Viel praktischer ist es während der Entwicklung gnadenlos zu kommentieren (auch kleine Nachrichten an die Mitentwickler sind immer wieder Quell der Freude), und beim Onlinegang rauszuschmeißen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interaktionsdesigner.de/2008/04/11/schlankes-css-mit-csstidy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gleichhohe Div Container mit CSS</title>
		<link>http://www.interaktionsdesigner.de/2008/04/09/gleichhohe-div-container-mit-css/</link>
		<comments>http://www.interaktionsdesigner.de/2008/04/09/gleichhohe-div-container-mit-css/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 15:51:46 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.interaktionsdesigner.de/2008/04/09/gleichhohe-div-container-mit-css/</guid>
		<description><![CDATA[Wir brauchen mehrere Div-Container welche dynamisch per Typo3 gefüllt werden. Der Designer hat sich gemeinerweise ausgedacht, dass die Spalten stets die gleiche Höhe einnehmen und mit einer schönen Hintergrundfarbe versehen sein sollen.
Der Redakteur kann dabei bestimmen ob ein Inhaltselement ein Viertel oder zwei Viertel einnehmen soll. Dieser HTML Code wird erzeugt:
&#60;div class=&#34;wrap&#34;&#62;
	&#60;div class=&#34;box&#34;&#62;Bla bla bla&#60;/div&#62;
	&#60;div [...]]]></description>
			<content:encoded><![CDATA[<p>Wir brauchen mehrere Div-Container welche dynamisch per Typo3 gefüllt werden. Der Designer hat sich gemeinerweise ausgedacht, dass die Spalten stets die gleiche Höhe einnehmen und mit einer schönen Hintergrundfarbe versehen sein sollen.<br />
Der Redakteur kann dabei bestimmen ob ein Inhaltselement ein Viertel oder zwei Viertel einnehmen soll. Dieser HTML Code wird erzeugt:</p>
<pre><code class="html">&lt;div class=&quot;wrap&quot;&gt;
	&lt;div class=&quot;box&quot;&gt;Bla bla bla&lt;/div&gt;
	&lt;div class=&quot;box&quot;&gt;Blu blu blu&lt;/div&gt;
	&lt;div class=&quot;box&quot;&gt;Bingo Bongo&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p><b>Lösung:</b> Bei <a href="http://www.ejeliot.com/blog/61" target="neu">Ejeliot</a> habe ich eine spannende Möglichkeit entdeckt. Die Spalten erhalten einen großen Abstand per Padding mit gleichzeitigem negativen Margin! Der Trick liegt im umfassenden Container. Per <i>overflow:hidden;</i> werden die überflüssigen Abstände entfernt! Das CSS ist in etwa dieses hier:</p>
<pre><code class="css">.wrap {
  overflow:hidden;
}
.box {
  float:left;
  padding:5px 5px 2005px 5px;
  margin-bottom:-2000px;
}</code></pre>
<p>Über die 5 Pixel unterschied im Padding bekommen die Boxen den gleichen Abstand nach unten wie zu den anderen Seiten. So schön und effektiv das vorgehen auch ist, es gibt leider ein paar <a href="http://www.positioniseverything.net/articles/onetruelayout/appendix/equalheightproblems" target="neu2">Probleme</a> (Position is everything). Bin gespannt wann sie mich eine ganze Nacht lang aufhalten...</p>
<p>&nbsp;<br />
Davor lohnt sich aber ein Blick auf das komplett in JavaScript geschrieben SuperMario Spielchen von <a href="http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html" target="neu3">nihilogic</a>. Ohne externe Grafiken! Herrlich.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interaktionsdesigner.de/2008/04/09/gleichhohe-div-container-mit-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
