Schneller Tipp Gleiche Spalten mit CSS3-Farbverläufen imitieren

Was passiert, wenn der Hauptinhaltsbereich zwei bestimmte Hintergrundfarben benötigt: eine für den primären Inhalt und eine für die Seitenleiste? Wenn Sie jemals versucht haben, den Hintergrund auf jeden Container selbst anzuwenden, haben Sie zweifellos erkannt, dass Ihr Layout schnell fragmentiert wird, sobald der primäre Inhaltsabschnitt die Höhe der Seitenleiste überschreitet.

Im Allgemeinen besteht die Lösung darin, ein Hintergrundbild für das übergeordnete Element festzulegen und es so einzustellen, dass es vertikal wiederholt wird. Wenn wir jedoch mit CSS3-Farbverläufen klug werden, können wir den gleichen Effekt mit Nullbildern erzielen. Die Ironie dabei ist, dass wir CSS3-Farbverläufe verwenden, um einen Effekt zu erzeugen, der keinen Farbverlauf enthält! Lesen Sie weiter, um mehr zu erfahren.


Bevorzugen Sie ein Video-Tutorial?


Abonniere unsere YouTube-Seite, um alle Video-Tutorials anzusehen!

Schritt 1. Konstruktion

Beginnen wir mit dem Erstellen eines lächerlich einfachen Layouts. Auf diese Weise können wir ein allgemeines Layoutproblem demonstrieren, das wir alle an einem oder anderen Punkt erfahren haben.

Erstellen Sie ein neues HTML-Dokument und fügen Sie Folgendes hinzu Karosserie Etikett:

   

Meine Kopfzeile

Primärer Inhalt.

Vergessen Sie nicht, dass Sie das benutzen können Karosserie Element als Wrapper für Ihr Layout. Einfach ein setzen Breite direkt zum Karosserie.

Was wir hier haben, ist ziemlich üblich. EIN Header Element enthält ein Heading-Tag; und dann haben wir eine Main div, das den primären Inhalt sowie das Seitenleiste.


Schritt 2. Erstellen Sie die Spalten

Als Nächstes wollen wir dieses Layout ein bisschen gestalten. Da verwenden wir die Karosserie Element wie unser Wrapper, legen wir ein Breite und Hintergrundfarbe.

 Körper Breite: 700px; Marge: auto; Hintergrund: # e3e3e3; 

Nun werden wir den primären Inhalt und das Seitenleiste nach links bzw. rechts. Da wir nicht mit wirklichem Inhalt arbeiten, legen wir jedem Container eine Höhe fest, um die Illusion des Inhalts darzustellen. Dies selbst wird nicht genug sein; Wir müssen auch genau angeben, wie breit jeder sein sollte. Andernfalls nehmen sie aufgrund ihres Speicherplatzes den gesamten verfügbaren Platz ein Block Natur.

 #primary float: left; Breite: 75%; Höhe: 500px; Hintergrund: rot;  beiseite Anzeige: Block; / * Weil HTML5-Element ist * / float: right; Breite: 25%; Höhe: 500px; Hintergrund: grün; 

Schritt 3. Der Rub

Also, das alles sieht gut aus - für den Moment. Probleme treten jedoch auf, sobald die Höhe des Primärinhalts die Höhe des Seitenleiste. In den meisten Situationen ist dies typischerweise der Fall.

Um hinzugefügte Inhalte zu simulieren, vergrößern Sie die Höhe von #primary div sein 700px.

Normalerweise besteht die Lösung für diese Arten von Dilemmata darin, ein Hintergrundbild auf das übergeordnete Element anzuwenden (#Main) Element. Dies ist normalerweise ein kleiner Ausschnitt des Hintergrunds, der dann vertikal wiederholt wird.

 #main … background: URL (klein / Scheibe / von / background.png) repeat-y; 

Problem gelöst! Nun, nicht genau. Das funktioniert zwar. Sobald Sie sich jedoch entschlossen haben, eine Hintergrundfarbe zu ändern, müssen Sie zu Photoshop zurückkehren, um ein neues Hintergrundbild zu erstellen. Was für ein Langeweiler!

Eine andere übliche Lösung besteht darin, JavaScript zu verwenden, um die Breite jedes Containers dynamisch zu erkennen und diese dann auf dieselbe Höhe zu bringen. Beachten Sie, dass dies dazu erforderlich ist, dass Ihr Layout von der Aktivierung von JS abhängig ist.

Schritt 4. Die Lösung

Wenn wir Vordenker sein wollen, können wir CSS3-Gradienten verwenden, um diesen Effekt zu erzielen. Was sagst du dazu? "Aber Jeff, das sind Volltonfarben, keine Farbverläufe!" Richtig, aber ich zeige Ihnen einen kleinen Trick, den ich gelernt habe. Wenn Sie in einem CSS3-Verlauf zwei Stops an derselben Stelle erstellen, erhalten Sie am Ende zwei Volltonfarben. Das ist etwas verwirrend. lass mich demonstrieren.

Bevor Sie fortfahren, kehren Sie, wenn Sie mitarbeiten, zu Ihrem Projekt zurück und entfernen Sie die Hintergrundfarben. Sie werden nicht mehr benötigt. Jetzt fügen wir dem übergeordneten Element einen Hintergrundverlauf hinzu, #Main, stattdessen Container.

 #main Hintergrund: -moz-linearer Gradient (links, rot, grün); 

Also haben Sie das wahrscheinlich erwartet. Aber wie hilft uns das? Wir brauchen eine klare Trennung zwischen dem primären Inhalt und dem Seitenleiste.

Diesmal legen wir fest, dass sowohl das Rote als auch das Grüne Farbstopps sollte an der 75% Markierung platziert werden.

 #main Hintergrund: -moz-linearer Gradient (links, rot 75%, grün 75%); 

Ist das nicht großartig? Wir verwenden nicht nur einen Farbverlauf, um ironischerweise einfarbige Farben zu erzeugen, sondern auch die Höhen jedes untergeordneten Containers sind jetzt identisch.

Denken Sie daran, dass dies nicht ganz richtig ist. Sie haben die Illusion, dieselbe Höhe zu haben. In Wahrheit wenden wir jedoch nur einen Hintergrund auf das übergeordnete Element an. Das Seitenleiste ist noch kürzer; Du kannst es einfach nicht sagen.


Schritt 5. Webkit

Der letzte Schritt besteht darin, Webkit-Browser (Safari und Chrome) glücklich zu machen. Leider stimmen sie mit Mozilla hinsichtlich der korrekten Syntax zum Erstellen von Farbverläufen nicht ganz überein. Ihre Methode ist nicht ganz so prägnant wie die von Mozilla.

 #main Hintergrund: -moz-linearer Gradient (links, rot 75%, grün 75%); Hintergrund: -webkit-gradient (linear, links oben, rechts oben, von (rot), Farbstopp (.75, rot), Farbstopp (.75, grün)); 

Wenn du an das gewöhnt bist von() und zu() Funktionen, denken Sie daran, dass es sich lediglich um Hilfsfunktionen handelt, die auf Farbstopp ().

Farbstopp akzeptiert zwei Parameter:

  • Die Position, um anzuhalten
  • Die gewünschte Farbe

Zu klären, Farbstopp (0,75, grün) bedeutet: "Bei 75% der Breite des Elements sollte die Farbe jetzt grün sein." Ja, die Syntax ist anders, aber die Konvertierung dauert nur wenige Sekunden.


Fazit

Das ist alles dazu! Bitte denken Sie daran, dass dies CSS3-Techniken sind, dh IE wird in der Kälte gelassen. Beachten Sie jedoch: "Nicht alle Websites müssen in jedem Browser identisch aussehen."

Was denkst du? Verwenden Sie diese Methode, wenn Sie wissen, dass Sie eine Fallback-Farbe für den IE angeben müssen, oder verwenden Sie zur Verwendung eines Fallback-Images konditionale Anweisungen?