Donnerstag, 25. Juni 2009

HTML CSS

Flexible Spalten und die Lösung für das Faux Column Problem

Ziel: flexibles 2-spaltiges Layout

Jeder kennt das: man möchte ein 2-spaltiges Layout erstellen, bei dem beiden Spalten jeweils dieselbe Höhe haben.

Das zu realisieren schien bisher ein Ding der Unmöglichkeit zu sein, wenn man kein JavaScript verwenden möchte.

A List Apart bietet eine Möglichkeit, das Problem über ein sich wiederholendes Hintergrundbild zu lösen. Doch was macht man, wenn ein flexibles Layout haben möchte? Im Zuge der Barrierefreiheit bzw. -armut ein wichtiger Punkt.
Im Zuge meiner Tätigkeit als Webentwickler stellte sich für mich genau dieses Problem und ich habe ein Lösung gefunden.

Folgende Situation: Man möchte 2 Spalten haben, eine Haupt- und eine Maginalspalte. Beiden Spalten sollen zu jeder Zeit gleich lang sein, egal in welcher der beiden Spalten mehr Inhalt steht. (siehe Bild). Ich lege das Beispiel in der Einheit Pixel (px) an, es funktioniert aber genauso mit Element (em) und Prozent (%).

In meinem Fall soll die Hauptspalte #content blau (#003797) sein und eine Breite von 600px haben, die Maginalspalte #service orange (#ffcc00) und 200px. Mein Wrapper #main hat also insgesamt 800px.

Hier mein HTML Markup (relevanter Teil). Ich empfehle außerdem, IMMER ein Reset StyleSheet zu verwenden. Ich empfehle das von Eric Meyer.

Download Code!

  1.  
  2. <div id="main">
  3.         <div id="content">
  4.                 <!-- Start Maginalspalte -->
  5.                 <div id="service"><p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
  6.                 </div>
  7.                 <!-- End Maginalspalte -->
  8.                 <!-- Start Content -->
  9.                 <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
  10.                 <!-- End Content -->
  11.         </div>
  12. </div>
  13.  

Wichtig: Die Maginalspalte (#service) muss im Markup vor dem Inhalt kommen, aber IM #content Container. Warum? Gleich. Zudem sollen meine Container auch ein Padding haben.

Und hier jetzt der Trick!: Die Servicespalte wird mit negativen Margin nach rechts versetzt.

Download Code!

  1.  
  2. #main {
  3.         width:800px; /* Breite von unserem Wrapper */
  4.         background:#ffcc00; /*gleiche Hintergrundfarbe von unserer Maginalspalte */
  5.         overflow:hidden; /* Damit die Box mitläuft */
  6.         _display:inline; /* IE6 Hack */
  7. }
  8. #content {
  9.         padding:10px;
  10.         float:left;
  11.         width:580px; /* 600px - (2*10px) */
  12.         background:#003797; /* Blauer Hintergrund */
  13.         color: #fff /* weiße schrift */
  14. }
  15. #service{
  16.         width:180px; /* 200px - (2*10px) */
  17.         padding:0 10px; /* Padding top vererbt von #content */
  18.         float:right;
  19.         background:#ffcc00;
  20.         color: #000;
  21.         margin:0 -210px 0 0; /* Breite (200px) + padding (10px) = 210px */
  22.         *margin-left: 13px; /* Padding (10px) + Jog Bug (3px); IE 6 & 7 */
  23.         _position:relative; /* IE6 Hack  */
  24.         _display:inline; /* IE6 Hack*/
  25. }
  26.  

Demo

Um das Ganze noch besser zu illustrieren, habe ich eine Demo erstellt: Flexible-Columns Demo

Browser-Kompatiblität

Funktioniert auf: Firefox 3.0 (win), Internet Explorer 6/7 (Win), Safari 4 (Mac OS X), Opera (Win)

Soweit, sogut. Ich hoffe, ich konnte all den Frustrierten da draußen weiterhelfen.

dhe

Bewertung: 3 von 5, 2 Stimme(n) 972 Klicks
Von Mr.Foo in HTML CSS am 25.06.09@14:35 Uhr

Trackbacks
Trackback für spezifische URI dieses Eintrags

Keine Trackbacks

1 Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Asra - #1 - 20.10.2010 14:28 - (Antwort)

Hi Mr. Foo,
danke fürs 2-Spalten-layout und guuute Besserung!


Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
 
 

Mr. Foo

Flexible Spalten und die Lösung für das Faux Column Problem

  • Homepage

Suche

Kategorien

  • C-Sharp (4)
  • Datenbank (28)
  • Delphi (2)
  • Entwicklung (36)
  • Flash (5)
  • Games (10)
  • Gutscheine (4)
  • Hardware (14)
  • HTML CSS (15)
  • Internet (87)
  • Java (32)
  • Javascript (24)
  • Linkdump (9)
  • Linux (95)
  • Low-Level (10)
  • Lua (8)
  • Musik (9)
  • Netzwerk (25)
  • New World Order (109)
  • Perl (3)
  • PHP (123)
  • Magento (5)
  • Symfony (3)
  • Zend Framework (7)
  • Probleme und Lösungen (26)
  • Python (22)
  • Ressourcen (23)
  • Sicherheit (91)
  • Software (58)
  • Sonstiges (45)
  • Own Stuff (46)
  • Spass (45)
  • Technik / Wissenschaft (4)
  • Tips (15)
  • Weisheiten (16)
  • Windows (23)
  • Wort des Tages (15)


Alle Kategorien

Archive

  • Februar 2012
  • Januar 2012
  • Dezember 2011
  • Das Neueste ...
  • Älteres ...

Abonnieren lohnt sich!

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Kommentare

Tagcloud

Datenbank Entwicklung Internet Java Javascript Linux Lösung Netzwerk News New World Order PHP Problem Probleme und Lösungen Python Sicherheit Software Sonstiges Spass Tipp Update

Beliebte Einträge

  • Magento ist scheisse (188)
  • Plugin-container.exe deaktivieren (101)
  • C compiler cannot create executables unter Debian (53)
  • BWin Betrug und Abzocke bei Minigames? (49)
  • Scheiss Linux - USB-Platte viel zu langsam (wenns mal funktioniert) (41)
  • Sicheres Kontaktformular mit PHP - Spam verhindern (37)
  • Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden (26)
  • UML-Diagramme aus Java-Klassen generieren – Java2UML (25)
  • Option Bug im Internet Explorer bei Nutzung von innerHTML und Javascript (24)
  • Zend Studio - Javaw.exe lastet die CPU aus (24)

Kommentare

sandi zu Plugin-container.exe deaktivieren
Mo, 06.02.2012 11:10
Leider hat es nicht geklappt. Jetz [...]
Frank zu Magento ist scheisse
So, 05.02.2012 21:58
Seit etwa 6 Monaten bin ich auf de [...]
hansie zu Canon Blink Codes
Sa, 04.02.2012 19:49
Hallo, mein Canon Drucker MP 630 [...]
Bachsau zu Scheiss Linux - USB-Platte viel zu langsam (wenns mal funktioniert)
Mi, 01.02.2012 22:54
Bei Linux machen die Kernel-Entwic [...]
Mr. Foo zu Scheiss Linux - USB-Platte viel zu langsam (wenns mal funktioniert)
Mi, 01.02.2012 21:47
Also so kurz mal probiert hab ich [...]
 

Kontakt/Informationen