Unterstützung für ältere Browser
Wenn die Unterstützung älterer Browser ein Muss ist, sodass Sie nicht mit mehreren Hintergründen oder Verläufen arbeiten können, möchten Sie wahrscheinlich Folgendes für ein Ersatzelement tun div
:
#background {
position: fixed;
top: 0;
left: 0;
width: 50%;
height: 100%;
background-color: pink;
}
Beispiel: http://jsfiddle.net/PLfLW/1704/
Die Lösung verwendet ein zusätzliches festes Div, das den halben Bildschirm ausfüllt. Da es behoben ist, bleibt es in Position, auch wenn Ihre Benutzer scrollen. Möglicherweise müssen Sie später mit einigen Z-Indizes herumspielen, um sicherzustellen, dass sich Ihre anderen Elemente über dem Hintergrund-Div befinden, aber es sollte nicht zu komplex sein.
Wenn Sie Probleme haben, stellen Sie einfach sicher, dass der Rest Ihres Inhalts einen höheren Z-Index als das Hintergrundelement hat, und Sie sollten bereit sein.
Moderne Browser
Wenn neuere Browser Ihr einziges Problem sind, können Sie einige andere Methoden verwenden:
Linearer Gradient:
Dies ist definitiv die einfachste Lösung. Sie können einen linearen Farbverlauf in der Hintergrundeigenschaft des Körpers für eine Vielzahl von Effekten verwenden.
body {
height: 100%;
background: linear-gradient(90deg, #FFC0CB 50%, #00FFFF 50%);
}
Dies führt zu einem harten Cutoff von 50% für jede Farbe, sodass es keinen "Farbverlauf" gibt, wie der Name schon sagt. Versuchen Sie, mit dem Teil "50%" des Stils zu experimentieren, um die verschiedenen Effekte zu sehen, die Sie erzielen können.
Beispiel: http://jsfiddle.net/v14m59pq/2/
Mehrere Hintergründe mit Hintergrundgröße:
Sie können eine Hintergrundfarbe auf das html
Element anwenden, dann ein Hintergrundbild auf das body
Element anwenden und die background-size
Eigenschaft verwenden, um es auf 50% der Seitenbreite festzulegen. Dies führt zu einem ähnlichen Effekt, der jedoch nur dann über Farbverläufe verwendet wird, wenn Sie zufällig ein oder zwei Bilder verwenden.
html {
height: 100%;
background-color: cyan;
}
body {
height: 100%;
background-image: url('http://i.imgur.com/9HMnxKs.png');
background-repeat: repeat-y;
background-size: 50% auto;
}
Beispiel: http://jsfiddle.net/6vhshyxg/2/
ZUSÄTZLICHER HINWEIS: Beachten Sie, dass in den letzteren Beispielen sowohl das html
als auch das body
Element festgelegt sind height: 100%
. Dies soll sicherstellen, dass der Hintergrund, selbst wenn Ihr Inhalt kleiner als die Seite ist, mindestens der Höhe des Ansichtsfensters des Benutzers entspricht. Ohne die explizite Höhe wird der Hintergrundeffekt nur bis zum Seiteninhalt verringert. Es ist auch nur eine gute Praxis im Allgemeinen.
linear-gradient
harte Cutoff funktioniert auch für Pixel:background: linear-gradient(90deg, #FFC0CB 225px, #00FFFF 0, #00FFFF 100%);
background: linear-gradient(90deg, #FFC0CB 25%, #00FFFF 0);
.Einfache Lösung, um einen "Split in Two" -Hintergrund zu erzielen:
Sie können auch Grad als Richtung verwenden
quelle
Sie können eine harte Unterscheidung anstelle eines linearen Verlaufs treffen, indem Sie die zweite Farbe auf 0% setzen.
Zum Beispiel,
Farbverlauf -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 80%);
Harte Unterscheidung -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 0%);
quelle
Dies ist also eine schrecklich alte Frage, die bereits akzeptiert wurde, aber ich glaube, dass diese Antwort gewählt worden wäre, wenn sie vor vier Jahren veröffentlicht worden wäre.
Ich habe das rein mit CSS und ohne EXTRA DOM ELEMENTS gelöst! Dies bedeutet, dass die beiden Farben nur das sind, nur Hintergrundfarben von EINEM ELEMENT, nicht die Hintergrundfarbe von zwei.
Ich habe einen Farbverlauf verwendet und da ich die Farbstopps so eng beieinander eingestellt habe, sieht es so aus, als ob die Farben unterschiedlich sind und sich nicht mischen.
Hier ist der Gradient in der nativen Syntax:
Farbe
#74ABDD
beginnt bei0%
und ist immer noch#74ABDD
bei49.9%
.Dann zwinge ich den Farbverlauf, innerhalb
0.2%
der Elementhöhe zu meiner nächsten Farbe zu wechseln , wodurch eine scheinbar sehr durchgezogene Linie zwischen den beiden Farben entsteht.Hier ist das Ergebnis:
Und hier ist meine JSFiddle!
Habe Spaß!
quelle
background: repeating-linear-gradient(var(--grayLight), var(--grayLight) 430px, rgba(0,0,0,0) 201px, rgba(0,0,0,0) 100%);
Dies sollte mit reinem CSS funktionieren.
Nur in Chrome getestet.
quelle
In einem früheren Projekt, das IE8 + unterstützen musste, habe ich dies mit einem Bild erreicht, das im Daten-URL-Format codiert ist.
Das Bild war 2800 x 1 Pixel groß, die Hälfte des Bildes weiß und die Hälfte transparent. Hat ziemlich gut funktioniert.
Sie können sehen, dass es hier funktioniert JsFiddle . Hoffe es kann jemandem helfen;)
quelle
Ich habe verwendet
:after
und es funktioniert in allen gängigen Browsern. Bitte überprüfen Sie den Link. Ich muss nur auf den Z-Index achten, da danach die Position absolut ist.Geigenlink
quelle
Sie könnten den
:after
Pseudo-Selektor verwenden, um dies zu erreichen, obwohl ich mir nicht sicher bin, ob dieser Selektor abwärtskompatibel ist.Ich habe dies verwendet, um zwei verschiedene Verläufe auf einem Seitenhintergrund zu haben.
quelle
Verwenden Sie auf Ihrem Bild bg
Vertikale Aufteilung
Horizontale Aufteilung
Beispiel
quelle
background-position: center center
Eine Möglichkeit, Ihr Problem zu implementieren, um eine einzelne Zeile in Ihr div einzugeben:
Hier ist ein Demonstrationscode und weitere Optionen (horizontal, diagonal usw.). Klicken Sie auf "Code-Snippet ausführen", um ihn live zu sehen.
quelle
Die kugelsicherste und semantisch korrekteste Option wäre die Verwendung eines fest positionierten Pseudoelements (
::after
oder::before
). Vergessen Sie bei dieser Technik nichtz-index
, Elemente im Container festzulegen. Beachten Sie auch, dass diesecontent:""
Regel für Pseudoelemente benötigt wird, da sie sonst nicht gerendert wird.Live-Beispiel: https://jsfiddle.net/xraymutation/pwz7t6we/16/
quelle
quelle
Dies ist ein Beispiel, das in den meisten Browsern funktioniert.
Grundsätzlich verwenden Sie zwei Hintergrundfarben, die erste beginnt bei 0% und endet bei 50% und die zweite beginnt bei 51% und endet bei 100%
Ich verwende horizontale Ausrichtung:
Für verschiedene Anpassungen können Sie http://www.colorzilla.com/gradient-editor/ verwenden.
quelle
Wenn Sie
linear-gradient
mit 50% der Höhe verwenden möchten :quelle