Hallo! Dieser Artikel ist ziemlich alt. Wir haben ihn hier überarbeitet, was viel bessere Informationen enthält.

Die Einführung der brandneuen CSS-Tricks-Foren in den letzten Tagen war großartig! Es gab Sorge, dass es eine Weile dauern würde, bis sie ankommen, aber in den letzten Tagen gab es etwa 150 Beiträge zu vielen großartigen Themen.
Eines dieser großartigen Themen war die Hintergrund-Herausforderung von John Steven
Ich stehe vor einer Herausforderung und möchte sie zum Anlass nehmen, um euch zu bitten, mich bei dieser Angelegenheit zu inspirieren. Wir brauchen einen Hintergrund, der 100% breit ist, aber auf 50% des Bildschirms ein anderes Muster aufweist. Die Idee, ein Hintergrundbild zu erstellen, das zum Beispiel 2500px breit ist und sich vertikal wiederholt, ist nicht das, wonach ich suche.
Mein erster Gedanke war, 2 divs zu erstellen, eine linke Hälfte und eine rechte Hälfte
#leftHalf {
background: url(images/bg-1.jpg);
width: 50%;
position: absolute;
left: 0px;
height: 100%;
}
#rightHalf {
background: url(images/bg-2.jpg);
width: 50%;
position: absolute;
right: 0px;
height: 100%;
}
Das funktioniert, hat aber ein „kleines“ (buchstäblich) Problem. Wenn die Browserfensterbreite eine ungerade Pixelzahl hat, gibt es keine gerade 50%-Teilung dieser Zahl und es entsteht ein winziger Streifen Weiß in der Mitte zwischen den beiden divs.
John selbst hat die perfekte Lösung dafür vorgeschlagen, die das Problem behebt. Anstatt einer linken Hälfte, wendet einfach dieses Hintergrundbild auf das gesamte `body`-Element an. Das löst das Problem des weißen Streifens und benötigt weniger Markup!
(Ja, das Muster der linken Hälfte passt nicht ganz richtig, aber die Theorie zählt hier!)
Mit einem Monitor von 1280×1024 gibt es ein Problem.
http://farm4.static.flickr.com/3169/2384472443_bbf251138b_o.gif
PS: Entschuldigung für mein schlechtes Englisch
Es ist nur das Bild, das falsch ist, DAG. Nicht der Code ;)
Richtig ;)
Das Problem liegt in der Wiederholung des Bildes.
PS: Ich habe mich im Forum angemeldet. Komplimente.
Wir haben etwas sehr Ähnliches auf der cssoff-Homepage erreicht. Schauen Sie mal rein.
Ich habe gerade ziemlich dasselbe gemacht, aber den linken Div auf 60% vergrößert und den rechten bei 50% darüber belassen. So wiederholt sich der linke darunter.
Das Problem, das ich jedoch habe, ist, dass egal wo ich die leeren divs oder das CSS platziere, ich keinen Inhalt darüber bekomme. Ich habe einige Zeit mit verschiedenen z-index-Werten experimentiert und nichts hat funktioniert.
Du hast kein Beispiel für Inhalt, daher frage ich mich, ob du dasselbe Problem hättest.
Hier ist mein Ergebnis, nachdem ich die linke Seite auf den Body statt auf ein leeres div angewendet habe
http://digitalskraps.com/test/ctchallenge.html
Wenn ich dem rechten Div einen negativen zIndex gebe, verschwindet er unter dem Body. Wenn ich irgendeine Kombination von zIndex für den Container und das rechte Div verwende, ändert sich nichts. Und mein Div kommt sogar nach dem Inhalt.
(CSS ist im Kopf)
Dieser CSS-Trick funktioniert nicht unter IE6. Ich denke, er erfordert eine JavaScript-Korrektur, um auf 100% Körperhöhe angezeigt zu werden.
Mit freundlichen Grüßen
Wenn jemand eine Kopie des Bildes verwenden möchte, das sich gut wiederholt, kopiert dieses http://209.98.250.109/css-tricks/splitbackground/bg-1.jpg (man könnte es direkt verwenden, aber ich würde meiner Internetverbindung nicht trauen… mein Netzwerk ist ein Durcheinander)
Versuchen Sie das, und Sie brauchen kein div-Tag, nur die HTML- und Body-Tags
html, body {
height: 100%;
margin: 0px;
padding: 0px;
background-repeat: repeat;
background-position: left top;
}
html {
background-image: url(https://css-tricks.de/examples/SplitBackgroundPattern/images/bg-1.jpg);
width: 100%;
}
Körper {
background-image: url(https://css-tricks.de/examples/SplitBackgroundPattern/images/bg-2.jpg);
width: 50%;
}
Vielleicht brauchen Sie nur 1 Div. Machen Sie den Hintergrund im Body-Element ganz und wiederholen Sie ihn durchgängig. Und darüber legen Sie ein 50%iges rechtes Div. So vermeiden Sie Komplikationen mit jeder ungeraden Pixelbreite.
Das Problem bei der Verwendung eines zweifarbigen Hintergrundbildes in CSS für einen Hover-Effekt usw. ist, dass wenn der Benutzer die Schriftgröße erhöht und sich die Box vergrößert, die andere Seite des Bildes sichtbar wird.
Das könnte man aber umgehen, wenn es sich um ein Gradientenbild handelt und man `background-position: top` mit `background-color X` im Normalzustand und dann `background-position: bottom` mit `background-color Y` im Hoverzustand usw. verwendet.
Der Trick dabei ist die Vorbereitung der Bilder. Eines der Bilder sollte die horizontale Wiederholung bereits enthalten. Die Hälfte seiner Breite sollte auch transparent sein.
Der Effekt kann dann ohne zusätzliches HTML und ohne Breitenbeschränkung auf dem Body erzielt werden.
css (mit einem kleinen Hack wegen der Verwendung von min-height)
*{margin:0;padding:0;}
html{
background: url(bg-2.jpg) repeat ;
height:100%;}
body{
background: url(body_bg.gif) repeat-y top center;
min-height:100%;height:auto!important;
Demo
„Der Trick dabei…“ – entschuldige
Wie würde man zulassen, dass dies für kleinere Bildschirme wie ein iPad skaliert, ohne das linke Bild zu beschneiden? Also, beide behalten ihre Proportionen und skalieren entsprechend hoch und runter?
Habe es herausgefunden
Körper {
background: url(‘left.jpg’), url(‘right.jpg’);
background-position: top left, top right;
background-repeat: no-repeat, no-repeat;
background-size: 50%, 50%;
}