Alles was du weißt ist falsch!

Alles ändert sich.
An diesem Wochenende habe ich ein sehr interessantes Buch gelesen: "Alles, was Sie über CSS wissen, ist falsch". Das Buch zeigt, wie wir, nachdem der ACID 2-Test bestanden hat, endlich damit anfangen können, unsere Websites auf die richtige Art und Weise zu erstellen. Bis jetzt waren wir gezwungen, Hacks zu implementieren, um das perfekte Layout zu bilden - absolute Positionierung, prekäre Schwimmkörper usw. Aber das ändert sich schon! Ich zeige dir wie in zwanzig Minuten.

CSS-Tabellen sind so viel einfacher zu verwenden, dass es sich lohnt, sie so schnell wie möglich zu übernehmen.
-Kevin Yank




In diesem Tutorial erfahren Sie, wie Sie in Zukunft Layouts erstellen. Eigentlich sollten Sie diese Methoden jetzt verwenden! Anstatt sich auf Floats und absolute Positionierung zur Erstellung unserer Layouts zu verlassen, konzentrieren wir uns stattdessen auf die Verwendung von CSS-Tabellen.

Schritt 1: Erstellen eines zweispaltigen Layouts auf die aktuelle Weise

Da wir wissen, dass IE7 und darunter die CSS-Tabelleneigenschaften nicht erkennen, müssen wir zunächst unsere unglaublich einfache Website auf "alte" Weise erstellen. Fügen Sie den folgenden Code in Ihre Datei "index.html" ein.

  

Meine Kopfzeile

  • 1
  • 2
  • 3
  • 4
-- dummer Text--

Meine Fußzeile

Es gibt nicht zu viel, was wir gehen müssen. Wir haben den Inhalt für unser zweispaltiges Layout erstellt. Die Navigation (#nav) wird links vom Hauptinhalt (#primaryContent) angezeigt. Lassen Sie uns fortfahren und ein kurzes Styling hinzufügen. Ich werde Hintergrundfarben verwenden (auch hässliche!), So dass Sie leicht bestimmen können, wo die einzelnen Divisionen beginnen und enden.

Schritt 2: CSS hinzufügen

 / * Nur ein paar Elemente zurücksetzen * / h1, ul, li margin: 0; Polsterung: 0; Listenstil: keine;  p Marge: 0; Auffüllen: .5em 0;  / * Main Content Styling * / #wrap width: 800px; Marge: auto;  #header, #footer Hintergrund: Rot;  #nav Hintergrund: grau; Breite: 150px; Schwimmer: links;  #primaryContent background: gelb; Rand links: 150px; Polsterung: 0,5em; 

Wir haben unserer Sidebar (#nav) eine Breite von 150px gesetzt und sie nach links verschoben. Anstatt auch den Abschnitt primaryContent zu verschieben, ist es besser, einen linken Rand hinzuzufügen, der der Breite unserer Seitenleiste entspricht. Wir werden auch ein bisschen Padding hinzufügen, um den Text von den Rändern des div wegzudrücken.

 #primaryContent Hintergrund: Gelb; Rand links: 150px; Polsterung: 0,5em; 

Sie sollten mit etwas Ähnlichem enden:

Sofort (nachdem die grellen Farben verschwinden) sehen Sie, dass der graue Hintergrund in der Seitenleiste nicht nach unten reicht. Dies liegt daran, dass schwebende Elemente nur so viel Platz beanspruchen, wie nötig ist.

Eine Lösung wäre, eine bestimmte Höhe hart zu codieren, aber dies ist keine gute Idee. Was ist, wenn sich der Hauptinhalt ändert? Sie müssen Ihre CSS-Datei erneut aufrufen, um den Wert für die Höhe erneut anzupassen. Also tu das nicht! Stattdessen besteht die akzeptierte Lösung darin, ein Hintergrundbild zu erstellen und es vertikal zu kacheln. Dies wird als Erstellen von Faux-Spalten bezeichnet. "Wechseln Sie einfach zu Photoshop, erstellen Sie eine Leinwand mit 800 x 10 Pixel und fügen Sie die entsprechenden Farben ein. Sie wissen, dass die Seitenleiste einen grauen Hintergrund hat und 150 Pixel breit ist diesen Bereich und füllen Sie ihn mit Grau. Nachdem Sie dasselbe für das schreckliche Gelb getan haben, erhalten Sie am Ende Folgendes:

Speichern Sie es im Stammverzeichnis Ihrer Lösung und nennen Sie es "bg.png". Wir können dieses Bild jetzt vertikal kacheln und so Faux-Spalten erstellen.

 #main background: URL (… /bg.png) repeat-y; 

Nun haben wir erfolgreich die Illusion gleicher Spalten geschaffen.

Schritt 3: Der neue Weg

Das war also nicht alles zu schwer! Es war jedoch immer noch zu viel Zeit, um etwas so einfaches wie ein zweispaltiges Layout zu erstellen. Wir mussten sogar in Photoshop einsteigen, um den Look zu vervollständigen! Dieses Mal erstellen wir die Site mit CSS-Tabellen neu. Keine Sorge, sehr wenig muss sich ändern!

Denken Sie immer daran, dass IE7 und darunter keine CSS-Tabellen erkennen. Zumindest für den Moment müssen wir also die oben beschriebene Methode anwenden. Erstellen Sie ein neues Stylesheet und nennen Sie es "ie.css". Kopieren Sie dann das gesamte CSS, das wir in diese Datei geschrieben haben, und fügen Sie es ein. Löschen Sie es jetzt nicht aus "default.css". Wir werden einfach ein paar Stile entfernen. Wir werden dieses Mal keine Hacks oder Floats implementieren, um unsere Säulen zu erstellen.

Entfernen Sie die folgenden Stile aus Ihrem Stylesheet "default.css".

 / * Da wir ein "Tabellen" -Layout verwenden, müssen wir kein Hintergrundbild kacheln! * / #main background: URL (… /bg.png) repeat-y;  / * Keine Schwimmer! * / #nav float: left;  / * Keine Floats = kein linker Rand. * / #primaryContent margin-left: 150px; 

Implementieren der CSS-Tabellen

Nachdem Sie nun die unnötigen Stile entfernt haben, fügen Sie einige neue hinzu! Zuerst müssen wir zwei Spalten in unserem "Haupt" -Div erstellen: eine für die Navigation und die andere für den primären Inhalt. Legen Sie den Anzeigetyp von #main als Tabelle fest.

 #main display: table; 

Als Nächstes sollten wir die Elemente #nav und #primaryContent als Tabellenzellen deklarieren.

 #nav, #primiaryContent Anzeige: Tabellenzelle; 

Ob Sie es glauben oder nicht, das ist alles, was wir tun müssen, um unser Spaltenlayout zu erstellen. Wir haben die Breite der Navigation bereits auf 150 Pixel festgelegt. Das primaryContent div füllt einfach den verbleibenden Speicherplatz aus. Hier ist eine Momentaufnahme unseres Layouts mit CSS-Tabellen.

Es sieht genauso aus! Wir haben aber keine Schwimmkörper oder absolute Positionierung verwendet! Wie ich jedoch schon sagte, sehen wir unsere Website jetzt im Internet Explorer.

Obwohl IE8 die Site korrekt anzeigt, werden IE7 und darunter nicht angezeigt. Um dies zu kompensieren, müssen wir ein bedingtes Stylesheet einfügen. (Deshalb haben wir das CSS aus unserem ursprünglichen Layout gespeichert und in "ie.css" abgelegt.).

 

Nun ist alles gut! Moderne Browser rendern die Site mit CSS-Tabellen, und IE verwendet die traditionelle Float-Methode.

Die wahre Macht

Die wahre Kraft kommt ins Spiel, wenn wir Änderungen vornehmen. Stellen wir uns zum Beispiel vor, wir beschließen, eine dritte Spalte unserer Website hinzuzufügen. Wir können dies in etwa dreißig Sekunden erreichen.

Schritt 1: Fügen Sie den zusätzlichen Aufschlag hinzu

Fügen Sie nach dem schließenden Tag im primaryContent div die neue Spalte hinzu.

-- dummer Text --

Schritt 2: CSS

Greifen Sie auf Ihr Stylesheet zu und setzen Sie die Anzeigeeigenschaft von secondaryContent auf "table-cell". Sie müssen auch bestimmen, wie breit es sein soll. In diesem Fall habe ich 90px gewählt.

 #secondaryContent width: 90px; Anzeige: Tabellenzelle; Hintergrund: Orange; 

Das ist es. Keine Floats, kein Nullabgleich, keine Browserinkonsistenzen.

Sie sollten heute mit dieser Methode beginnen! Die IE-Entwickler hörten endlich zu und gaben uns die Werkzeuge, die wir benötigen, um Websites so zu erstellen, wie wir sie bauen wollen. Daher müssen wir diese Tools einsetzen - auch wenn dies für ein paar Jahre etwas mehr Arbeit erfordert. Wenn Sie heute anfangen, sind Sie dem Rudel voraus!

  • Alles, was Sie über CSS wissen, ist falsch

    Wenn Sie mehr über CSS-Tabellen und andere CSS 3-Tricks lernen möchten, empfehle ich dringend, dass Sie das Buch von Rachel und Kevin kaufen. Es kann an einem Tag gelesen werden.

    Besuchen Sie die Homepage des Buches

    Sehen Sie sich die Einführung von Kevin Yank an

  • Abonnieren Sie den NETTUTS-RSS-Feed für mehr tägliche Webentwicklungsberichte und -artikel.