Dieser Beitrag wurde ursprünglich am 21. August 2009 veröffentlicht und ist nun aktualisiert, da er vollständig überarbeitet wurde. Beide ursprünglichen Methoden wurden entfernt und durch vier neue Methoden ersetzt.
Ziel ist es, ein Hintergrundbild auf einer Website zu haben, das das gesamte Browserfenster jederzeit ausfüllt. Lassen Sie uns das genauer spezifizieren:
- Füllt die gesamte Seite mit dem Bild, kein Weißraum
- Skaliert das Bild nach Bedarf
- Behält die Bildproportionen (Seitenverhältnis) bei
- Das Bild ist auf der Seite zentriert
- Verursacht keine Scrollbalken
- So browserübergreifend kompatibel wie möglich
- Keine ausgefallenen Tricks wie Flash

Der tolle, einfache, progressive CSS-Weg
Wir können dies rein über CSS realisieren, dank der Eigenschaft background-size, die jetzt in CSS verfügbar ist. Wir verwenden das html-Element (besser als body, da es immer mindestens die Höhe des Browserfensters hat). Wir setzen einen festen und zentrierten Hintergrund darauf und passen dann seine Größe mit background-size auf das Schlüsselwort `cover` an.
html {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
Funktioniert in
- Safari 3+
- Chrome Beliebig+
- IE 9+
- Opera 10+ (Opera 9.5 unterstützte background-size, aber nicht die Schlüsselwörter)
- Firefox 3.6+ (Firefox 4 unterstützt die nicht-Vendor-präfixierte Version)
Update: Danke an Goltzman in den Kommentaren, der auf einen Artikel der Adobe Developer Connection hinwies, der Code enthält, um den IE ebenfalls Cover-Hintergründe darstellen zu lassen
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
Aber Vorsicht, Leser Pierre Orsander sagte, er habe dies ausprobiert und hatte Probleme mit Links auf der Seite, die nicht mehr funktionierten.
Update: Matt Litherland schreibt, dass jeder, der die oben genannten IE-Filter verwendet und Probleme mit Scrollbalken oder toten Links oder was auch immer (wie Pierre oben) hat, versuchen sollte, sie nicht auf dem html- oder body-Element zu verwenden. Stattdessen sollte ein fest positionierter Div mit 100% Breite und Höhe verwendet werden.
Nur-CSS-Technik #1
Großer Dank geht wie immer an Doug Neiner für diese alternative Version. Hier verwenden wir ein Inline-Element, das in jedem Browser in der Größe angepasst werden kann. Wir setzen eine min-height, die es vertikal das Browserfenster ausfüllen lässt, und eine 100% width, die es horizontal ausfüllen lässt. Wir setzen auch eine min-width, die der Breite des Bildes entspricht, damit das Bild nie kleiner wird, als es tatsächlich ist.
Der besonders clevere Teil ist die Verwendung einer Media Query, um zu überprüfen, ob das Browserfenster kleiner als das Bild ist, und die Verwendung einer Kombination aus prozentualem und negativem linken margin, um es trotzdem zentriert zu halten.
Hier ist das CSS
img.bg {
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;
/* Set up proportionate scaling */
width: 100%;
height: auto;
/* Set up positioning */
position: fixed;
top: 0;
left: 0;
}
@media screen and (max-width: 1024px) { /* Specific to this particular image */
img.bg {
left: 50%;
margin-left: -512px; /* 50% */
}
}
Funktioniert in
- Jede Version guter Browser: Safari / Chrome / Opera / Firefox
- IE 6: Kaputt – aber wahrscheinlich reparierbar, wenn Sie eine Art von Fixed-Positioning-Shim verwenden
- IE 7/8: Funktioniert größtenteils, zentriert nicht bei kleinen Größen, füllt aber den Bildschirm gut aus
- IE 9: Funktioniert
Nur-CSS-Technik #2
Eine ziemlich einfache Methode, dies zu handhaben, besteht darin, ein Inline-Bild auf der Seite zu platzieren, es fest oben links zu positionieren und ihm eine min-width und min-height von 100% zu geben, wobei das Seitenverhältnis beibehalten wird.
<img class="bg" src="images/bg.jpg" alt="">
.bg {
position: fixed;
top: 0;
left: 0;
/* Preserve aspet ratio */
min-width: 100%;
min-height: 100%;
}
Dies zentriert das Bild jedoch nicht, und das ist hier ein ziemlich häufiger Wunsch… Wir können das beheben, indem wir das Bild in einem Div umschließen. Diesen Div machen wir doppelt so groß wie das Browserfenster. Dann wird das Bild platziert, wobei das Seitenverhältnis beibehalten wird und das sichtbare Browserfenster sowie dessen exakte Mitte abgedeckt werden.
<div class="bg">
<img src="images/bg.jpg" alt="">
</div>
.bg {
position: fixed;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
}
.bg img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
min-width: 50%;
min-height: 50%;
}
Die Idee hierzu stammt von Corey Worrell.
Funktioniert in
- Safari / Chrome / Firefox (nicht sehr weit zurück getestet, aber aktuelle Versionen sind in Ordnung)
- IE 8+
- Opera (jede Version) und IE scheitern beide auf die gleiche Weise (falsch positioniert, ich bin mir nicht sicher warum)
- Peter VanWylen schrieb, dass, wenn Sie das Bild über JavaScript hinzufügen, das img
width: auto;undheight: auto;haben muss, um in IE 8, 9 oder 10 zu funktionieren.
Update Januar 2018: Versuchen Sie, dies auf Android zum Laufen zu bringen? JL García schrieb mir, dass er height: 100%; und overflow: hidden; zum HTML-Element hinzufügen musste, damit es funktioniert. Das vollständige Snippet ist
html {
background: url(images/bg.jpg) no-repeat center center fixed;
background-size: cover;
height: 100%;
overflow: hidden;
}
Ich habe es getestet, und es schien völlig korrekt. Ohne / Mit.
jQuery-Methode
Diese ganze Idee wird (aus CSS-Perspektive) viel einfacher, wenn wir wissen, ob das Seitenverhältnis des Bildes (inline , das wir als Hintergrund verwenden wollen) größer oder kleiner ist als das aktuelle Seitenverhältnis des Browserfensters. Wenn es niedriger ist, können wir nur die width des Bildes auf 100% setzen und wissen, dass es sowohl Höhe als auch Breite ausfüllt. Wenn es höher ist, können wir nur die height auf 100% setzen und wissen, dass es sowohl Höhe als auch Breite ausfüllt.
Wir haben über JavaScript Zugriff auf diese Informationen. Wie üblich hier verlasse ich mich gerne auf jQuery.
<img id="bg" src="images/bg.jpg" alt="">
#bg { position: fixed; top: 0; left: 0; }
.bgwidth { width: 100%; }
.bgheight { height: 100%; }
$(window).load(function() {
var theWindow = $(window),
$bg = $("#bg"),
aspectRatio = $bg.width() / $bg.height();
function resizeBg() {
if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
$bg
.removeClass()
.addClass('bgheight');
} else {
$bg
.removeClass()
.addClass('bgwidth');
}
}
theWindow.resize(resizeBg).trigger("resize");
});
Dies berücksichtigt nicht die Zentrierung, aber Sie könnten dies definitiv anpassen. Anerkennung geht an Koen Haarbosch für das Konzept hinter dieser Idee.
Funktioniert in
- IE7+ (könnte wahrscheinlich auch in IE6 mit einem Fixed-Positioning-Shim funktionieren)
- Die meisten anderen Desktop-Browser
Update (Juni 2012): Leser Craig Manley schreibt mit einer Technik, um ein passend dimensioniertes Hintergrundbild entsprechend dem Bildschirm zu laden. Das heißt, laden Sie kein riesiges 1900px breites Hintergrundbild für ein iPhone.
Zuerst würden Sie Bilder wie 1024.jpg, 1280.jpg, 1366.jpg usw. erstellen. Dann würden Sie anstatt eines Bildes einen Shim laden.
<img id="bg" style="position: fixed; left: 0; top: 0;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="">
Wenn Ihnen der GIF-Shim nicht gefällt (persönlich finde ich ihn in Ordnung, weil es kein "Inhalt", sondern ein Hintergrund ist), könnten Sie stattdessen eines der echten Bilder laden. Dieser Code wird das berücksichtigen.
Dann testen Sie die Bildschirmbreite und setzen den src des Bildes entsprechend. Der unten stehende Code macht dies bei Größenänderung, was Sie vielleicht wünschen oder auch nicht. Sie könnten den Code auch nur einmal ausführen, wenn Sie wollten.
(function() {
var win = $(window);
win.resize(function() {
var win_w = win.width(),
win_h = win.height(),
$bg = $("#bg");
// Load narrowest background image based on
// viewport width, but never load anything narrower
// that what's already loaded if anything.
var available = [
1024, 1280, 1366,
1400, 1680, 1920,
2560, 3840, 4860
];
var current = $bg.attr('src').match(/([0-9]+)/) ? RegExp.$1 : null;
if (!current || ((current < win_w) && (current < available[available.length - 1]))) {
var chosen = available[available.length - 1];
for (var i=0; i<available.length; i++)="" {="" if="" (available[i]="">= win_w) {
chosen = available[i];
break;
}
}
// Set the new image
$bg.attr('src', '/img/bg/' + chosen + '.jpg');
// for testing...
// console.log('Chosen background: ' + chosen);
}
// Determine whether width or height should be 100%
if ((win_w / win_h) < ($bg.width() / $bg.height())) {
$bg.css({height: '100%', width: 'auto'});
} else {
$bg.css({width: '100%', height: 'auto'});
}
}).resize();
})(jQuery)</available.length;>
Beachten Sie, dass die Bildschirmbreite nicht die einzige nützliche Information bei der Auswahl einer Bildgröße ist. Siehe diesen Artikel.
Viel Spaß
Wenn Sie dies nutzen, können Sie gerne in den Kommentaren unten mitteilen, welche Technik Sie verwendet haben und ob Sie sie in irgendeiner Weise geändert haben. Es ist immer cool, Techniken „in freier Wildbahn“ zu sehen.
Der Vollständigkeit halber gibt es hier ein weiteres Beispiel namens table.php, das eine alte Technik verwendet, die früher Teil dieses Artikels war. Es hatte einige Raffinessen, war aber nicht ganz so gut wie die beiden jetzt vorgestellten CSS-Techniken.
Weitere Ressourcen
- Vegas jQuery-Plugin (Jay Salvat)
- So ändern Sie die Deckkraft eines CSS-Hintergrundbildes (DigitalOcean)
Wenn das Hintergrundbild hochskaliert wird, scheint es für Firefox (vielleicht auch andere Browser) ziemlich aufwendig zu sein, und wenn man durch die Seite scrollt, gibt es eine deutliche Verzögerung.
Schöner Effekt aber, danke!
Ja. In Chrome gibt es eine Verzögerung.
Schöner Folgeartikel zum vorherigen. Ich persönlich wäre nicht auf die Idee gekommen, eine Tabelle zu verwenden – der Buhmann des Webdesigns!
Funktioniert aber gut.
Das ist großartig! Sehr klar bei w200% und h200% und dann -50% Positionierung!
Eine Tabelle ist perfekt in Ordnung, weil sie nur ein Bild enthält. Der Inhalt, um den es Ihnen bei der Barrierefreiheit geht, befindet sich im DIV.
In Ordnung!? Eine Tabelle ist in Ordnung, wenn Sie Semantik und die richtige Verwendung von HTML-Elementen völlig ignorieren möchten.
Diese Lösung ist hässlich wie die Sünde, ein Javascript-Workaround wäre weitaus eleganter (wenn richtig gemacht).
Hat er „kacka“ gesagt? :D Muss Kinder haben. haha
Es überrascht mich immer wieder, wie viel Hass Tabellen in der Design-Community erzeugt haben :)
@ Josh #2
Die eklatant falsche Verwendung von Tabellen hat viel Hass erzeugt, und das zu Recht.
Oh, ich glaube, das ist fast die Definition von Hass, oder? Es macht einen irgendwie irrational.
Das Problem mit Tabellen war, dass es überall viele, viele davon gab, ohne Grund.
Dies hier ist hingegen eine wunderschöne Lösung mit einer winzigen kleinen Tabelle. Oh, wen kümmert's?! :-)
Ich stimme zu, dass es in Ordnung ist – es ist nicht so, als ob man in einer realen Situation die Website für Auszeichnungen einreichen würde.
Sicher, Divs sind speziell für das Layout konzipiert. Aber aus geschäftlicher Sicht (und so verdienen wir alle unser Geld) ist manchmal der schnellere Weg die Verwendung einer Tabelle hier und da.
Sofern nicht anders angegeben, bezweifle ich ernsthaft, dass ein Kunde oder Arbeitgeber sich darum kümmern würde – ich bin noch keinem begegnet.
Dies ist eine fantastische Lösung + besonders, dass sie browserübergreifend kompatibel ist, was weitaus wichtiger ist.
Tabellen … Mann … diejenigen, die sich über deren Schlechtigkeit beschweren, haben im Allgemeinen selbst weniger als perfekte Websites … lol … nichts ist falsch an Tabellen, wenn sie richtig verwendet werden, und dies ist ein hervorragendes Beispiel für eine sehr gute Verwendung.
GUT GEMACHT und danke
Ich habe gestern darüber nachgedacht, wie man das macht, und heute posten Sie das. Das ist wirklich großartig!
Danke
Schöne Tipps. Übrigens, wie trickreich ist das Bild in CSS-Code?
Nur eine Kleinigkeit,
Füllt die gesamte Seite mit dem Bild, kein Weißraum
Auf der Demo, wenn das Fenster weniger als 1125px breit ist, gibt es WEISSRAUM oben und unten.
Ich denke, dieser Platz wird eher auf dem Bildschirm eines Benutzers erscheinen, als wenn Weißraum vorhanden ist, wenn das Fenster größer als 2560px ist (mit einem großen Bild und overflow:hidden) – letzteres ist in dieser Demo nicht der Fall, aber hier schon
In Chrome 2.0.172.39 sehe ich den Hintergrund oben und unten auf der Seite (auf Ihrem Beispiel und auf http://ringvemedia.com/), und in Opera 9.64 sehe ich Scrollbalken auf Ihrem Beispiel. Auf http://ringvemedia.com/ werden keine Scrollbalken angezeigt.
Die neueste Opera-Version sieht für mich gut aus, aber in Chrome (Mac) gibt es tatsächlich einen Fehler. Ich werde mich damit noch nicht auseinandersetzen, bis es eine finale Mac-Version gibt, die ich testen kann.
http://img29.imageshack.us/gal.php?g=chromeq.jpg das sind Screenshots von meinem Heim-Desktop, aber die Probleme sind bei der Arbeit die gleichen, dort bin ich auf XP, hier auf Win 7.
Der Opera-Screenshot stammt von 10beta, aber ich hatte das gleiche Problem auf 9.64.
Das wurde in den paar Minuten aufgenommen, während ich an einer neuen Idee arbeitete, um das Fokus-/Scrollproblem zu beheben…
Aber Opera ist immer noch ziemlich kaputt.
Mann, die Opera-Benutzer kommen wirklich aus den Löchern gekrochen, wenn man eine Technik wie diese postet.
Danke fürs Anschauen und Aufschlüsseln. Ich fand auch eine frühere Methode, die auf dieser Seite aufgeführt ist, https://css-tricks.de/how-to-resizeable-background-image/, aber ich habe letztendlich die Methode verwendet, die Anders auf http://www.cssplay.co.uk/layouts/background.html verwendet.
Es scheint, als gäbe es immer mehrere Wege, dasselbe zu erreichen... ich bin mir immer noch nicht sicher, wie Tabellen in diesem Fall funktionieren, aber es macht trotzdem Spaß, sich das anzusehen.
Danke!
Doug
Die CSSPlay-Methode scheint das Bild jedoch zu skalieren, was unerwünscht sein kann.
Anders' Methode bewahrt das Seitenverhältnis nicht, oder?
Ich stimme Chris zu, dass das verzerrte Seitenverhältnis ziemlich unerwünscht ist.
Es wäre großartig, wenn wir dies ohne die Verwendung einer "Layout-Tabelle" tun könnten, ABER dies ist ein fantastischer Effekt und perfekt für Fotoblogs, Portfolios usw.
Vielen Dank fürs Teilen!
Schöner Effekt, Chris, den werde ich definitiv gut gebrauchen können. Gute Arbeit.
Diese Technik (zumindest die Demo und die ringvemedia-Seite) funktioniert in Safari 4.0.2 nicht sehr gut.
Die horizontale Skalierung funktioniert einigermaßen, aber das vertikale Zeug nicht.
Screenshot
Es scheint, dass das Attribut min-height auf dem Bild in Safari 4 nicht funktioniert. Ich bin mir nicht sicher, was die Lösung sein wird. JavaScript müsste leider involviert sein.
Schöner Proof of Concept, ich mag diese Art von Beiträgen. Danke.
Eine weitere Möglichkeit, diesen Trick zu machen, die ich verwende, ist die Verwendung von Jquery wie folgt
Um dies zu erklären, hole ich mir mit Jquery die Höhe und Breite des Fensters und passe dann mit PHP GD meinen Hintergrund an die richtige Größe an
Welchen Erfolg hatten Sie mit jQuery und PHP? Funktioniert es in allen Browsern?
Das ist ein wirklich schlechter Weg, um Vollbildhintergründe zu handhaben, Geekbay. Ich nehme an, Sie würden dies bei $(window).resize() ausführen und nicht bei $(document).ready()? Das bedeutet, Sie rufen jedes Mal, wenn das Fenster geändert wird, ein PHP-Skript auf und lassen GD das Bild anpassen! Wissen Sie, wie viel Speicher das verbrauchen wird?!
nur eine kleine Panne ist es
$(body).style(‘background’,’url(phpthumb.php?src=bg.jpg&w=’+w+’&h=’+h+’)’);
Ziemlich clever =)
Würden Sie das bitte etwas ausführlicher erklären? Ist diese Funktion in der document.ready-Funktion? Etwas mehr Einblick in die Implementierung würde mir helfen, es zu verstehen.
Danke
Soweit ich sehe, wird dies entweder
a) nicht mit dem Fenster skaliert
oder b) fordert das Bild jedes Mal neu an, wenn Sie die Fenstergröße ändern.
Noch wichtiger ist, dass diese Technik das Zwischenspeichern des Hintergrundbildes durch den Browser verhindert – was bei großen Bildern wie diesen entscheidend ist.
Sehr cooler Trick. Kann CSS3 das auch implementieren? Ich weiß, dass es noch nicht IE-freundlich ist. Nur neugierig.
Das habe ich auch schon mal gesehen. Wurde ursprünglich davon inspiriert..
Hmmm, auf FF3.5, wenn ich die "Leertaste" drücke, scrollt die ganze Seite...
Ich habe das Problem mit der Leertaste behoben, indem ich ein verstecktes Eingabefeld mit Javascript angehängt und den Fokus darauf gesetzt habe. Ziemlich hacky, aber behebt den Bug vorerst.
Okay, ich habe die derzeit bekannten Bugs am Ende des Artikels dokumentiert. Wenn Sie Korrekturen oder weitere Bugs finden, lassen Sie es mich wissen.
Das Scrollen der Seite kann tatsächlich mit der Leertaste erfolgen, aber auch mit den Pfeiltasten, für horizontales und vertikales Scrollen.
Ich nehme an, es ist ein Fokusproblem; für die Barrierefreiheit wäre es sowieso besser, den Fokus auf dem Mittelelement zu haben.
Das bedeutet also… JavaScript.
Das einzige Problem, das ich sehe, ist die Bilddefinition. Wenn Sie ein riesiges Bild in ein kleines Fenster laden, kann die Neuskalierung es lustig aussehen lassen, oder ein Bild, sagen wir 1280px groß, zeigt auf einem riesigen Bildschirm große Pixel. Ich lade im Allgemeinen ein Standardbild von 1280px als Hintergrund und lade ein größeres in Ajax nach, wenn der Bildschirm breiter ist. In diesem Fall gibt es keine Neuskalierung, aber zumindest gibt es eine absolute Kontrolle über die Qualität des Hintergrundbildes.
Das schien für mich gut zu funktionieren: Supersized
Das erinnert mich an das neue WPC2-System, das ich kürzlich erstellt habe.
Ich kann nicht zu viel sagen, aber das lässt mich Ihr Beispiel mit meiner Technik zur Größenanpassung der WPC-Seite nachbauen, um zu sehen, ob die meisten Ihrer Bugs verschwinden. Wenn ich Erfolg habe, antworte ich auf diesen Kommentar und lasse es Sie wissen
Das ist fantastisch! Ich dachte, das wäre nur mit Flash möglich. Danke für den Beitrag. Werde dies definitiv für eine Fotogalerie-Seite verwenden.
Die Bildleiste erscheint im IE 6, wenn Sie über das Bild fahren
d.h. die Schaltflächen zum Speichern, Drucken usw., die IE überlagert.
Sie könnten das vielleicht deaktivieren wollen, es ruiniert den Effekt, ich bin sicher, es gibt einen Weg, das zu tun
Sehr schön, werde es ausprobieren. Danke!
Ich habe mir auch die Lösung dieser Seite für Hintergrundbilder angesehen
http://www.type3digital.com/
Push – wie haben sie das gemacht?
Ja, diese Frage blieb mir auch im Kopf… :D
Ich werde dies bei einem meiner Kunden verwenden. Schlägt wirklich das Javascript, das ich verwendet habe. Danke!
In der Demo, zumindest im IE8, scrollt das Mausrad den Inhalt nur, wenn der Cursor sich innerhalb des weißen Textcontainers befindet, und es ist bei großen Auflösungen etwas träge.
Großartig, dass es mit CSS funktioniert, aber zu viele Bugs, um es effektiv nutzen zu können.
Ich verwende Supersize 2.0 für den gleichen Effekt (hat auch Übergänge). Ich habe es hier verwendet.
Einverstanden. Supersize 2.0 sieht großartig aus. Hat ES irgendwelche Bugs oder Inkonsistenzen? Was ist, wenn ein Benutzer JavaScript nicht aktiviert?
In Opera 9.6 gibt es einen Scrollbalken, der zu Weißraum scrollt
Danke dafür – gespenstisch genau, als ich es brauchte!
Es gibt auch einen vertikalen Scrollbalken in Opera 10b3, aber der ist für den Text – wenn ich jedoch nach unten scrolle (ohne zuerst auf den Text zu klicken), scrollt das Bild anstelle des Textes.
Tatsächlich kann ich, wenn ich mit der mittleren Maustaste auf die Seite klicke, sowohl auf der Y- als auch auf der X-Achse in Opera, Firefox 3.5, Chrome, Safari 4 und IE8 Weißraum aufdecken. Dies ist auch bei whatstheweather der Fall, aber dann nur auf der rechten Seite.
~ Nix
Der Scrollbalken-„Bug“ in FF3.5 ist kein Bug. Das ist eine Tastenkombination zum Scrollen auf jeder Seite. Probieren Sie es auf dieser Seite, bei Google News oder wo auch immer aus. Die Tastenkombination funktioniert auch in Chrome und IE8.
Der „Bug“ bezieht sich auf diese Technik, nicht auf Firefox selbst.
Ich bekomme oben und unten Weißraum, wenn der Browser im Verhältnis zum Bild höher als breiter ist. Das muss in die Mitte zoomen.
Kann mir jemand erklären, warum genau es notwendig ist, eine Tabelle für diesen Effekt zu verwenden? Ich nehme an, dass eine Tabelle angeborene Fähigkeiten hat, die dies ermöglichen, aber ich bin mir nicht sicher, welche. Da ich XHTML von Anfang an gelernt habe, bin ich nicht sehr tabellenkundig ;)
Hmm, es ist theoretisch schön, aber aktuelle Browser scheinen beim Skalieren und Scrollen ziemlich träge zu sein – und wenn man kein hochauflösendes Bild verwendet, besteht die Gefahr, dass man sehr unprofessionelle Artefakte sieht. Gut zu wissen für die Zukunft aber =)
Hallo Chris. Danke für diesen Beitrag. Die NorthFace-Seite hat ähnliche Funktionen, aber es sieht so aus, als würden sie eine Flash-Lösung verwenden.
Ich liebe das! Das ist einer dieser CSS-Tricks, die ich gerne im RSS-Feed sehe! Viele Leute scheinen das nicht zu mögen, wegen kleiner Bugs und der bösen Teufelskind-Tische des Internetdesigns. Meine persönliche Ansicht dazu ist, dass ich Tabellen hasse, aber wenn es die Aufgabe ohne Flash oder Javascript erfüllt, dann ist eine Tabelle in Ordnung. Semantik ist nur gut und ein Leitfaden, dem man folgen sollte, wenn man es sich leisten kann. Denken wir alle daran, dass das Ziel ist, gut aussehende, funktionierende Websites zu gestalten. Und das sind verdammt gute CSS-Tricks!
Danke für diesen tollen Tipp! Ich denke, ich werde diesen Trick auf vielen Seiten verwenden ;) Dieser Trick funktioniert im IE 5.5. Gute Arbeit!
Ich mache so etwas
http://dump.myxcp.net/de…..ound.html
Es fehlt die vertikale Zentrierung, funktioniert aber trotzdem gut. Oder Sie können es 100% hoch und 100% min-breit machen (dann kann es leicht horizontal zentriert werden).
@monkey56657 Mir ist in Ihrem Beispiel aufgefallen, dass der Browser, wenn er nicht proportional zum Bild angepasst wird, den gesamten Hintergrund vertikal nicht abdeckt.
Es gibt etwas Merkwürdiges, wenn der Browser bei Technik 1 wirklich kurz wird.
aber Technik 2 funktioniert super :) Danke.
Bei Technik 2: Wenn Sie img.bg bottom: 0 anstatt top: 0 setzen, können Sie das Bild am unteren Rand des Browserfensters verankern, anstatt es am oberen Rand zu verankern. Wenn Sie eine Stadtlandschaft oder ein anderes unten gestaltetes Bild hätten, wäre dies sehr wichtig.
Technik 2 ist eine sehr gute Ergänzung des Artikels.
@Chris: Könnten Sie irgendwie darauf hinweisen, dass dieser Artikel aktualisiert wurde?
Danke für diesen Beitrag. Eine Frage: Warum eine Tabelle verwenden? Hat jemand dies ohne Tabelle ausprobiert und es funktioniert?
Es gibt ein Problem in FF3: Wenn ich das Mausrad benutze, kann ich nach links und unten scrollen, und der Weißraum erscheint
Wenn Sie nur mit dem Mausrad scrollen, würden Sie überall Weißraum sehen.
Haben Sie das überprüft?
Gute Arbeit, Chris, ganzseitige Hintergründe haben mich schon immer fasziniert, aber ich habe mich nie wirklich damit auseinandergesetzt, aufgrund unterschiedlicher Bildabmessungen, Bildschirmauflösungen usw.
Ich hatte den Eindruck, dass man ein bestimmtes Bild dynamisch je nach Client-Browsergröße auswählen würde.
Das sieht aber ziemlich gut aus!
Hallo Chris,
Ich sehe nur „Bild“-Platzhaltertext in Opera 9.64 auf Vista Business 64 Bit. Während Firefox die Seite kurz mit einem Hintergrundbild rendert und dann zu Ihrer 404-Fehlerseite umleitet…
Grüße
Mathew
Hallo Leute,
Ich liebe diese Lösung. Es ist offensichtlich eine eingebettete SWF-Datei. Irgendeine Ahnung, wie das ActionScript in der .fla-Datei aussieht :)?
Es ist kein Flash. Es ist Javascript.
Ich könnte es übersehen haben, aber hat sonst noch jemand Schwierigkeiten, das Hintergrundbild mit IE7 oder 8 anzuzeigen? Es funktioniert in jedem anderen Browser wunderschön, aber ich erhalte das Logo mit dem defekten Bild im IE. Ugh! Ich habe übrigens beide Techniken ausprobiert.
Sehr beeindruckt davon und es ist noch besser, jetzt, wo Doug eine reine CSS-Lösung gefunden hat!
Vielen Dank für die großartige Lektion. Dennoch zögere ich ehrlich gesagt, die Technik auf meiner Seite anzuwenden. Manchmal füge ich eine Tabelle in ein DIV-Tag ein, und die Tabelle springt aus dem Haupt-Wrapper heraus.
Sehr schön. Ich werde dies bei meinem nächsten Projekt ausprobieren.
Endlich habe ich auch ein gutes Tutorial gefunden. Danke
cool. füge das zu meinen Favoriten hinzu.
Ich musste mich kürzlich selbst mit diesem Problem auseinandersetzen und habe eine ziemlich gute Lösung gefunden, die standardkonform ist, minimalen Code (nur ein zusätzliches Div) verwendet, kein Flash verwendet und in allen Browsern zu funktionieren scheint. Probieren Sie dies aus: http://blog.urbanmainframe.com/2009/05/create-a-dynamically-resizing-background-image-using-css/
Exzellent! Und welch ein Timing…
Ich habe die Seite vor einer Weile gesehen und mich gefragt, wie sie das gemacht haben. Dann habe ich es aufgegeben, da ich es nicht durch Code herausfinden konnte!
Lob für diesen Artikel!
http://normalbookmark.com/ hat eine schöne JS-Implementierung des Vollbildhintergrunds.
Ich persönlich bevorzuge die Verwendung einer SWF- (Flash-) Lösung. Eine SWF-Datei kann weniger als 15 KB (komprimiert) groß sein. Ich habe auch Flash-Beispiele überprüft, die oben gepostet wurden, alle sehen in allen Browsern perfekt aus. Reine CSS-Lösung ist eine schöne Sache, aber wahrscheinlich hängt es von Ihrem Bild und seiner Größe ab, und das Ändern der Größe ist, meiner Meinung nach, etwas knifflig. Darüber hinaus wird mit Flash das Ändern der Größe viel besser von Flash gehandhabt (aus Erfahrung sprechend)… http://www.beyondfayte.com verwendet einen Flash-Hintergrund, ja, die Seite ist komplett in Flash, aber achten Sie auf den Hintergrund, wie wunderschön er konstruiert ist und die Übergänge. Stellen Sie sich nun für eine Sekunde vor, nehmen Sie diese SWF-Datei und implementieren Sie Ihre Seite (HTML und CSS)….
Schöner Effekt, funktioniert gut.
Ich habe diesen Trick vor einiger Zeit gesehen und auch verwendet… er hat wunderbar funktioniert, aber im Moment gibt es mit Safari ein Problem. Er passt sich nicht vertikal an. Wenn das Fenster nicht „breit“ ist, verformt sich das Foto nicht und zeigt hier in der Demo den weißen Hintergrund und auf der verlinkten Seite den „Lade“-Hintergrund. Aber ich erinnere mich, dass ich dieses Problem nicht bemerkt hatte, als ich die Seite vor einiger Zeit sah.
Frage – wie bekomme ich das Beste aus beiden Welten? Eine scrollende Seite mit einem vollen statischen Hintergrund. Hier wurde eine gezeigt – http://ringvemedia.com/introduction.
Hallo Chris,
Zunächst einmal vielen Dank für den tollen Artikel.
Ich verwende die Technik #2 und bin auf ein seltsames Verhalten gestoßen, als ich zusätzliche Divs in den Content-Wrapper eingefügt habe.
Ich möchte diese Seite nicht mit Code überladen, aber hier ist die Seite online
http://www.brentwoodrestaurant.com/bg_test.html
Wie Sie sehen werden, versuche ich, mit Margins etwas Abstand zwischen den Divs zu schaffen, aber wenn ich einem DIV einen Margin zuweise, wird dieser Margin aus irgendeinem Grund auf den übergeordneten Div angewendet.
Ich hoffe, ich konnte mein Problem erklären und dass Sie eine Lösung dafür haben.
Ich bin mir nicht sicher, ob dies ein Fehler im Skript oder mein Fehler ist.
Vielen Dank im Voraus.
Egal, ich glaube, es lag ausschließlich an meinen verschachtelten Divs, nichts mit dem Skript zu tun.
Interessante Vorgehensweise. Scheint gut zu funktionieren, danke :-)
Okay, wie können wir das in ein WordPress-Theme integrieren?
Können wir Hilfe für WordPress-Benutzer bekommen? Niemand spricht je darüber, wo dieser Code platziert werden soll und ob überhaupt jemand ihn unter WordPress verwendet. Jede Hilfe ist willkommen.
Ich finde das sehr gut gemacht, obwohl ich eine Theorie habe…
Wenn Sie nichts dagegen haben, Ihre Lösung mit etwas PHP und Javascript zu kombinieren, könnten Sie JS verwenden, um die Fensterhöhe und -breite zu ermitteln, und dann mit Joe Lencionis Smart Image Resizer Ihr Bild folgendermaßen ansprechen
Ich würde denken, dass man die Bilder tatsächlich neu skalieren könnte, anstatt sie nur zu vergrößern, und so die Downloadzeiten auf ein Minimum reduzieren könnte. Dies würde das neu skalierte Bild jedoch möglicherweise nur beim Laden der Seite erstellen… und dann könnte der Rest Ihrer Lösung es von dort aus skalieren…
Das ist alles nur lautes Nachdenken. Ich liebe Joes Lösung und verwende sie ständig und denke, dass man sie mit großem Effekt in diese Idee integrieren könnte.
Supersized (http://buildinternet.com/project/supersized/) funktioniert sehr gut und kann angepasst werden, um Inhalte mit Scrollen zu ermöglichen.
Hier ist ein Beispiel: SOUND Phuket http://www.soundphuket.com
Schauen Sie sich die Kalenderseite an, die einen Scrollbalken hat.
Yo, da ist ein Fehler in deiner Beschreibung!!
Ändere es verdammt noch mal. Ich brauchte eine Stunde, um das herauszufinden. Ich schätze, alle anderen haben den Code von der Demo-Seite genommen, wo er korrekt war, deshalb hat es niemand sonst bemerkt. (Oder vielleicht habe ich einfach etwas am Anfang übersehen :P).
Jedenfalls in der Beschreibung der Technik
html, body, #bg, #bg table, #bg td {
height:100%;
width:100%;
overflow:hidden;
}
ABER! auf der Demo-Seite
html, body, #bg, #bg table, #bg td, #cont {
…
.
Die fehlende Sache war die 100% Höhe und Breite auf dem #cont. Ohne sie funktionierte das Scrollen in keinem der Browser.
Cheers.
Bei Technik 1 scheint es in Opera 10 ein Problem zu geben, wenn man das Scrollrad oder die Tastaturpfeile nach unten benutzt.
Tatsächlich sieht man dann Weißraum, den man nicht sehen möchte.
Die Lösung ist, dies zum CSS hinzuzufügen:
#bg { position: fixed; }Dies funktioniert in allen Browsern.Guter Beitrag, ich bin kein großer Fan von 100% irgendetwas, aber das scheint wirklich gut zu funktionieren und könnte es sogar in einem meiner Site-Designs ausprobieren, also danke dafür.
Ich versuche herauszufinden, warum das Bild mit DW nicht angezeigt wird? Ich habe es sogar mit EW3 getestet und es funktioniert dort… irgendwelche Ideen?
Der Div-Container, der es ermöglicht, Inhalte anzuzeigen, hinterlässt eine große weiße Box in der Mitte der Seite.
Ich möchte ein weiteres Tutorial anfordern, das ausführlich erklärt, wie man alle Code-Boxen transparent macht, um sie mit dem Bild zu verschmelzen, damit wir beliebige Links und Inhalte auf unseren jeweiligen Websites posten können.
Ein paar zusätzliche Informationen, und wir sollten praktisch alles tun können.
Ich freue mich sehr, es gefunden zu haben. Ich bin Fotograf und entwickle manchmal einige Fotografie-Websites, als ehemaliger Grafikdesigner.
Nur eine Anmerkung, dass die Technik #2 das Bild streckt, wenn wir den Browser auf F11 stellen.
Vielen Dank fürs Teilen!
Okay, ich habe noch ein letztes Problem auf meiner Website zu lösen. Wie bekomme ich es hin, dass das Inhaltsfeld die Absatz-Tags trennt.
Meine Hauptseite enthält eine Menge Absatz-Tags, aber sie sind alle zusammengefasst, anstatt nach dem Einfügen in das Inhaltsfeld verteilt zu sein.
Ich bin etwas spät dran, aber ich liebe es! Das ändert meinen Designansatz erheblich. Danke, Chris.
Dies scheint eine gute Lösung zu sein, besonders für Kunden, die wählerisch sein können, was den Besuchern angezeigt wird. Der einzige Nachteil, den ich hier sehe, ist die Interpolation/Auflösung für größere Monitore im Vergleich zur Hintergrunddateigröße. Großartige Sache. Danke
Super Sache…!
Es hat alle meine „Oh nein!-kein-Bild-Hintergrund“-Probleme gelöst. :D
Es hat mir sehr geholfen, besonders für mein Computerprojekt.
-Daumen hoch-
Danke, großartige Lektüre. Ich finde alle Techniken, außer CSS3, als partiell und als kurzfristige Lösungen, semantisch problematisch und, wie oben erwähnt – leistungsmäßig herausfordernd. Ich würde bei dieser Art von Problem keine Kompromisse beim Caching eingehen.
Siehe meine CSS3-Lösung, implementiert auf stage-center.org
In CSS-Only Technique #2 sollten die richtigen Stile für das Bild sein
#bg img {
position:absolute;
top:25%;
left:25%;
right:25%;
bottom:25%;
margin:auto;
min-width:50%;
min-height:50%;
}
Beachten Sie die 25%-Positionierung, die notwendig ist, um das Bild richtig zu platzieren. Deshalb schlägt die Methode in Opera fehl. Ich habe sie noch nicht in anderen Browsern getestet.
Aber laut CSS 2.1 «Visual formatting model details» ist es ein echter Bug, dass absolut positionierte Bilder mit margin:auto nicht zentriert werden.
Toller Beitrag ..danke yaaa
Die neue CSS3-Methode ist fantastisch. Es scheint, dass ich diese Technik bei etwas weniger als der Hälfte meiner Projekte anwenden muss. Ich denke, von jetzt an werde ich eine Kombination aus der CSS3-Methode mit einem Fallback für ältere Browser unter Verwendung einer der anderen Techniken verwenden.
Danke Chris für einen weiteren tollen Beitrag!
Ich habe alle möglichen nicht-Flash-Vollbildlösungen für meine Designs erforscht. Eine Sache, die ich finden wollte, ist eine browserübergreifende Lösung, die
a) Skalierung mit dem Mittelpunkt des Bildes und nicht mit dem oberen Teil
b) Beim Laden der Seite sanft einblenden konnte (mit voller 'Preloading'-Kontrolle)
c) Eine minimale Menge Code für schnelles Seitenrendering verwendet.
Supersize war eine meiner ersten Wahl. Aber sein JS kollidierte mit anderen Elementen, und mir gefiel die Tatsache nicht, dass das Bild nicht immer schön eingeblendet werden konnte. Je nachdem, was beim Laden der Seite geschah, gab es keine sichere Möglichkeit, den Prozess zu steuern.
Ich fand dann einen anderen Ansatz, der, soweit ich das beurteilen kann, in allen Browsern funktioniert, weder JS noch Flash verwendet und meine Anforderungen erfüllte.
Es ist eine Mischung aus CSS und der Verwendung von Tabellen. Ich weiß… es ist nicht 'rein', aber es funktioniert so gut…
Ich konnte das img mit JQuery ansprechen, um es beim Laden der Seite genau so einzublenden, wie ich es wollte – sobald das Bild wirklich zur Anzeige bereit war – kein Raum für Fehler und kein Raum für JQuery, das das Einblenden startete, bevor das Bild vollständig heruntergeladen war.
Ich habe es hier implementiert: http://www.cadranhotel.com/.
Die Credits für diese Technik gehen an: http://www.g2geogeske.com/ (wo ich dieses Konzept zum ersten Mal sah und es weiterentwickelte).
Das ist meine Lösung, ein Dojo Toolkit Modul. Wenn möglich, verwendet es CSS3, wenn nicht, fällt es auf JS zurück.
http://code.ttcon.hu/fullscrn/
Wow, diese CSS3-Eigenschaft kannte ich nicht, das wird für die Zukunft erstaunlich sein.
Ich liebe, wie CSS3 immer besser wird…
Danke Chris für den Beitrag
Das ist wirklich super, danke! Ich werde den 'Awesome, Easy, Progressive CSS3 Way' ausprobieren. Ich kann es kaum erwarten, es zu versuchen ….
Thx! Ich habe es jetzt benutzt und es funktioniert gut auf http://optikaikeret.hu :)
(ungarischer Brillen-Webshop etc.)
Hey,
Danke für den tollen Tipp! :) Ich habe ihn auf meiner aufstrebenden Seite zum Laufen gebracht.
Ich habe eine kurze Frage, die wahrscheinlich nicht der richtige Ort ist, um sie zu posten, aber man weiß ja nie: Hat jemand eine Lösung, um diese Hintergründe zufällig zu gestalten? Ich benutze gerade eine Joomla-Seite und möchte die Bilder jedes Mal durchwechseln, wenn jemand die Seite aufruft. Ich dachte, ich könnte es mit einer Art jQuery oder noch besser mit einem PHP-Plugin machen, würde aber jeden Rat schätzen.
Danke!
Schöner Beitrag, ich liebe Vollbild-Hintergründe, und du gibst einige gute Möglichkeiten, sie zu sortieren! Prost
Danke, das wollte ich heute machen. Also super Timing :P
Vollbild-Hintergründe sind wirklich schön, wenn sie gut gemacht sind, exzellente Auswahl an Beispielen, habe Supersized in der Vergangenheit schon gesehen, aber nie implementiert, obwohl ich nach all den positiven Kommentaren über Supersized in Zukunft die Implementierung in Betracht ziehen werde. LT
Hier ist ein Link zu einer Website, die ich mit jQuery gebaut habe, um das Aussehen und die Funktion einer Flash-Seite nachzubilden.
http://www.aurumdesign.com
Der Hintergrund ist ein Vollbild-Hintergrund, der über ein verschachteltes Div-Tag ausgetauscht wird. Er wurde bis IE6 getestet und funktioniert in fast allen Browsern. Läuft in älteren Browsern aufgrund einiger zufälliger jQuery-Funktionalität, die pro Kundenwunsch hinzugefügt wurde, etwas holprig.
Toller Beitrag, danke für das Tutorial und den Code. Sehr geschätzt.
Hallo, ich bin wirklich neugierig, welche dieser Techniken auf TouchArcade.com verwendet werden – ich möchte meinen Blog ähnlich gestalten, mit einem coolen Hintergrundbild
Ich muss sagen, ich liebe es, aber wie immer funktioniert es nicht auf IE 6 (ausgestorbener Dinosaurier), ich muss sagen, ich würde die jQuery-Methode gut finden, weil ich Javascript liebe, danke für den Beitrag, es hat geholfen :)
Toller Text, danke für die Hilfe
Natürlich muss man immer darauf achten, wie groß das Hintergrundfoto sein wird. Ich versuche normalerweise, sie unter 200 KB zu halten, um ein größeres Seitenvolumen zu vermeiden. Oft muss man bei der Optimierung des Jpegs Bildqualität für die Download-Geschwindigkeit opfern.
Gute Arbeit, jQuery funktioniert einwandfrei in IE7 und FF3.6. Aber ich kann das Bild vor der Skalierung sehen.
Gibt es eine Möglichkeit, das Bild im Hintergrund zu laden und dann anzuzeigen? Vielleicht sanftes Einblenden? Ich habe jquery.html verwendet. Danke!
Danke!
CSS #2 hat wunderbar funktioniert – schau es dir an: http://keaneangle.com/idosocial
Aber es hat einige Positionierungsprobleme in IE7 & IE6..
Hi, ist es möglich, das Hintergrundbild mit Javascript mithilfe der ersten Methode (nur CSS) zu ändern?
Ich weiß nicht, wie ich das HTML-Tag erreichen kann.
Das Folgende funktioniert nicht
function changeBg(source){
document.html.background = source;
}
Das ist brillant, kein Wunder, dass du so viele Beiträge hast, jeder will wissen, wie man es macht. Danke.
CSS-only #2 ist erstaunlich! Ich stimme @GreLI bei seinem Vorschlag zu, auch wenn dies das Bild nicht zentriert, ist es immer noch ein schöner IE7-Fallback. Ich würde auch vorschlagen, einige Bild-Rendering-Eigenschaften für glattere Ergebnisse einzuschließen
image-rendering: optimizeQuality; /* Gecko */
-ms-interpolation-mode: bicubic; /* IE */
Hallo Chris, du könntest dir auch das jQuery-Plugin fullscreenr ansehen. Ich habe gerade angefangen, es in einem Projekt zu verwenden, und es funktioniert super!
Hallo Andy, ich möchte ein jQuery-Plugin teilen, das dasselbe tut: http://srobbin.com/blog/jquery-plugins/jquery-backstretch/#demo
Chris, schöner Beitrag!
Hey Chris, sehr nett, danke fürs Posten.
Meine Webseite hat ein rosa Hintergrundbild. Aber auf diese Weise wird ein sehr gutes Bild entstehen. Danke
Nur jQuery und CSS#1 funktionieren korrekt im neuesten Opera. CSS#2 versagt, wie im Artikel bemerkt, und die ordentliche CSS3-Methode funktioniert GRÖSSTENTEILS, aber das Hintergrundbild ruckelt (vielleicht aufgrund einer Verzögerung bei der CSS-Verarbeitung?). Mit deaktiviertem JS geht die jQuery-Methode kaputt, sodass mir nur CSS#1 als funktionierende Option bleibt. Schade…
Meine Wahl wäre wahrscheinlich
1. Ein Standardbild mit 1280px Breite mit CSS#1 verwenden,
2. Andere Bildversionen (800px, 1920px, vielleicht mehr) hinzufügen und jQuery verwenden, um die CSS#1-Technik zu überschreiben. In JS-deaktivierten Browsern wird ein 1280px breites Bild wahrscheinlich anständig aussehen, in allen anderen Browsern wird es ein perfektes Bild ohne (oder so wenig wie möglich) Hochskalierung geben, während so wenig Bandbreite wie möglich verschwendet wird.
Denken Sie auch daran, dass die Bilder in vielen Fällen nicht verkleinert werden müssen, manchmal reicht es aus, nur einen Teil des Bildes anzuzeigen (als ob es zugeschnitten wäre).
Der Ansatz, den ich auf der Website meiner Firma verwende, ist ein Bild, das an den Rändern zu Schwarz überblendet (es füllt jedoch nicht die gesamte Seite aus, nur den Header). Das Bild ist 1600px breit. Sieht auf meinem 1440px breiten Bildschirm perfekt aus, aber ich habe es auch auf einem 1920px breiten Bildschirm getestet und es sieht so völlig akzeptabel aus. Ich denke, es hängt alles vom Website-Design ab, das Sie im Sinn haben.
Das war genau das, was ich für mein letztes Projekt brauchte! Mein Kunde wird sehr glücklich sein, danke! <3
Vielen Dank für diesen Beitrag. Ich hatte einen Kunden, der einen ganzseitigen Hintergrund benötigte, und ich konnte das dank dieses Beitrags erledigen.
Das ist interessant, denn ich habe ein Projekt bei der Arbeit, bei dem ich diese Funktion ausführen muss und mir gesagt wurde, ich solle dieses Plugin namens BgStretcher von ajaxblender.com verwenden.
Es verwendet jQuery, aber ich hätte nichts dagegen, nur CSS 3 zu verwenden, um dasselbe Ziel zu erreichen.
Gibt es Nachteile bei der Verwendung von BgStretcher?
vielen Dank dafür
Ich habe schon SEHR lange mit meinem HTML herumgespielt und das hat endlich alles zum Laufen gebracht
Vielen Dank für diesen großartigen Artikel! Wenn es Ihnen nichts ausmacht, ist er in unserem Blog vorgestellt und verlinkt (nur ein Auszug) :-)
Es wird besser aussehen, wenn das Bild ein Farbverlauf-PNG ist und mit der gleichen Hintergrundfarbe abgedeckt wird.
Es gibt einen IE-Filter, der diesen CSS3-Trick in jeder IE-Version zum Laufen bringt.
http://cookbooks.adobe.com/post_Scale_Background_image_to_browser_size-17590.html
Schade, dass dieser Filter das Seitenverhältnis des Bildes nicht beibehält.
Großartiger Artikel! Ich habe versucht, den Filter hier zu verwenden, aber wenn er angewendet wird, werden alle Links auf der Seite in IE8 deaktiviert (das heißt, sie erscheinen, sind aber nicht anklickbar). Wenn ich den Filtercode entferne, werden alle Links wieder anklickbar, aber es gibt offensichtlich keinen Hintergrund mehr. Hat jemand ein Problem damit gehabt und eine Lösung gefunden?
Chris, du bist mein Held. Ich möchte so sein wie du, wenn ich erwachsen werde!
Besuch.. Nette Info.. Komm schon IE, sei der beste Browser… Ich bin so enttäuscht von IE, da gibt es viele Bugs.
Schönes Konzept, gefällt mir!
Es funktioniert gut, aber in IE zeigt es einige Fehler.
Hallo, ich werde die CSS3-Option verwenden und möchte das Hintergrundbild wirklich zu einem Link machen, weiß jemand, wie ich das erreichen könnte?
Ihre erste Technik (css3) birgt ein Problem.
Ich sehe einen einzelnen Pixel Leerraum links und rechts vom Bild, abhängig von der Fenstergröße.
Manchmal ist er da, manchmal nicht.
Gibt es ein Heilmittel?
Chris ist eine Legende, persönlich werde ich nicht pro oder kontra argumentieren, solange ein Hack unkompliziert und produktiv ist. Ich habe dies auf das Joomla-CSS meiner Kunden angewendet und ein großartiges Ergebnis erzielt. Die Großzügigkeit der Web-Community mal wieder!
Das ist fantastisch
Gibt es eine Möglichkeit, den Hintergrund dieses Elements dynamisch zu ändern? – d.h.
<a>Hintergrund ändern</a>Das wäre großartig! Irgendwelche Ideen?
ANMERKUNG DES HERAUSGEBERS: Sicher, mit JavaScript könnte man auf einen Klick auf diesen Ankerlink achten, das HTML-Element auswählen und einen anderen Hintergrund anwenden. =)
Entschuldigung – der HTML-Code für „Hintergrund ändern“ im vorherigen Beitrag lautet onclick=“document.html.background …
Hat perfekt funktioniert… habe einfach das bereitgestellte CSS verwendet und die Bilder aktualisiert… danke!
PS Ich habe CSS-Option #2 verwendet
Hier ansehen…
http://dsn.versusdsn.com
Es funktioniert nicht in Opera
Das Hintergrundbild wird in der oberen linken Ecke skaliert und platziert
Hat jemand eine Idee, wie ich ein Bild darüber legen könnte, das skaliert und seine Position beibehält, während das Hintergrundbild skaliert (wie ein Marker auf einer Karte)?
Das ist einfach fantastisch. Vielen Dank dafür. Ich werde es in einigen meiner zukünftigen Projekte verwenden :)
Hat perfekt funktioniert, nettes Tutorial.
Danke.
Das sind alles gute Informationen.
Da ich noch relativ neu in dieser Materie bin, irgendwelche Ideen, wie diese Seite gemacht wurde?
http://www.yabupushelberg.com
Danke!
Gibt es eine endgültige Version für ältere IE-Versionen oder ein spezielles Skript, das ich implementieren kann, um das Hintergrundbild stabiler zu machen?
Okay, kann mir bitte jemand helfen?
Ich möchte dieses Bild machen
http://t2.gstatic.com/images?q=tbn:ANd9GcRd66tQRZBspVVECmBHu4pMluIer0Zl6lhzcfd-75xlp-_kIus2
Der Hintergrund meiner Tumblr-Seite. http://connerftw.tumblr.com/
Aber es ist einfach etwa 20 Mal gekachelt. Ich möchte, dass es ein einziges Bild als gesamten Hintergrund ist.
Wie mache ich das? Ich kann es überhaupt nicht herausfinden.
Hallo,
Vielen Dank für das Tutorial! Ich habe es zum Laufen gebracht, habe aber Probleme mit der Höhe, die auf dem iPhone abgeschnitten wird.
Muss ich etwas für mobile Geräte hinzufügen? Die Indexseite ist in Ordnung, aber wenn ich zu ihrer Blogseite gehe, wird sie abgeschnitten und der Betrachter kann nicht nach unten scrollen.
http://vanessafiola.com/blog
Beste Grüße,
Katrina
Das gleiche Problem gibt es in IE6 und IE7. Vielleicht kann overflow-y:scroll; für den Body oder HTML das Problem lösen.. Aber das sollte man vor anderen Browsern verstecken..
Dieses Hintergrundbild sieht ziemlich schick aus
http://www.setupsigning.nl/diensten.html
Das Hintergrundbild behält ein festes Verhältnis bei. Das Bild wird fließend skaliert.
Wie erreiche ich dieses Ergebnis??
ich liebe dichuuuuuuuuuu!!
CSS-Technik 2 funktioniert bei mir! Aber schade für IE 6 (Sie wissen, dass er immer noch von vielen Leuten da draußen verwendet wird)
CSS-Technik 2 funktioniert bei mir. Aber schade um IE6 (Sie wissen, dass er immer noch von vielen Leuten da draußen verwendet wird)
Ich bekomme einen interessanten Effekt in IE8+ mit der „fantastischen, einfachen, progressiven CSS3-Methode.“
Auf einer Kundenwebsite, nach Anwendung des CSS und des zusätzlichen Materials, das Adobe oben bereitgestellt hat, um IE zum richtigen Funktionieren zu bringen… sind keine der Links anklickbar…
siehe hier: …Clients Testseite…
Gedanken?
Vielen Dank übrigens… Chris, deine Videos und Artikel haben mich in eine neue Karriere katapultiert! Ich werde dir ewig dankbar sein. Du machst so etwas Uneigennütziges, uns zu unterrichten, und ich schätze das.
Aaron
Update….
Dieses Problem tritt auch bei Verwendung der Lösung „Option #2“ auf…
Ich möchte Bill Gates jetzt am liebsten schlagen… lol
irgendwelche Ideen, Leute?
a
Ich glaube jetzt, dass das Problem bei
Filter: progid:DXImageTransform.Microsoft.AlphaImageLoader
Bisher habe ich versucht hinzuzufügen
hasLayout = ‚true‘
und
verschiedene z-index-Werte am Ende der Alpha-Anweisung im CSS….
so
-ms-filter: „progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’/testSite/wp-content/themes/BareBones/images/bg3.png’, sizingMethod=’scale’, hasLayout = ‘true’)“
Im Ernst, ich verliere wirklich die Geduld mit diesem Problem… jede konstruktive Hilfe oder Richtung wird sehr geschätzt.
a
ICH HABE ES BEHOBEN!!!!!!!!
habe dies in den Header eingefügt, direkt nach dem Body-Tag…
habe das CSS geändert in dies
Ich habe genau dasselbe Problem wie Sie, aber ich habe nicht ganz verstanden, wie Sie es gelöst haben. Haben Sie eine Website, auf der Sie diese Methode angewendet haben?
#bg_image{
position: absolute;
oben:0;
links:0;
rechts:0;
unten:0;
margin:auto;
Filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’/testSite/wp-content/themes/BareBones/images/bg3.png’, sizingMethod=’scale’);}
min-width:100%;
min-height:100%;
html{
background: url(/testSite/wp-content/themes/BareBones/images/bg3.png) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover; }
Sieht nur für proprietäre Hardware innerhalb einer von Microsofts „Partner“-Installationen von 1 Million Geräten gut aus. Hat bei mir nie funktioniert. Danke für das wunderbare Ausschneiden und Einfügen. Irgendwo, äh…
Wow Chris das ist genial genau das, wonach ich gesucht habe, da meine Seite ein bisschen wackelt, vielen Dank
Hallo zusammen,
nette Tutorials, danke. Ich bin auf ein Problem gestoßen und möchte um Hilfe bitten. Ich habe einen Kunden, der ein großes Bild als Hintergrund haben möchte, das aber nicht skaliert werden soll. Ich werde einen Inhalt in der Mitte haben und der Hintergrund soll sich nicht bewegen, wenn die Auflösung niedriger ist als das Original. Ich meine, dass das Hintergrundbild immer die feste Höhe und Breite haben sollte, es sollte zentriert sein und falls die Breite des Browserfensters geringer ist als die Bildbreite, sollte das Bild von beiden Seiten (links und rechts) beschnitten werden, nicht skaliert. Auf diese Weise erreiche ich, dass der Inhalt immer die richtige Hintergrundabdeckung hat.
Ist das möglich? Jede Hilfe wäre willkommen.
AB
Hi AB
Bitte entschuldigen Sie mein schlechtes Englisch im Voraus…
Vielleicht hilft Ihnen das
Ich habe es geschafft, das Bild mit top:auto; bottom:0px unten „anzuhängen“
Mit min-height:640px und min-width:1024px für ein 2560×1600 Bild passt es anständig auf fast jede Auflösung/Fenstergröße… *versteckend*
Versuchen Sie top:0px;bottom:0px;left:auto;right:auto
Ich hoffe es hilft :)
CSS Technik 2 funktioniert bei mir. Vielen Dank.
jQuery-Methode ist super für mich!! Einfach perfekt ;) danke!!
CCS3 Way Rulz! Wurde in zwei großen Websites hinzugefügt, scheint perfekt zu funktionieren!!!
Hey, das ist wirklich der sauberste und einfachste Weg für einen geilen Hintergrund!
Aber ich scheine das in meinem DIV nicht zum Laufen zu bringen. Es sollte doch möglich sein, oder?
Mein DIV hat eine fluide Breite und eine feste Höhe von 200px.
Ich möchte, dass das Hintergrundbild immer in die Breite passt, das Seitenverhältnis beibehält und zentriert ist.
Aber wie kann ich das mit diesen Codes bewerkstelligen?
Ich habe die gleiche Frage, falls jemand eine Lösung findet!
Ich habe die jQuery-Methode verwendet, die bei mir einwandfrei funktionierte. Ich liebe jQuery einfach, obwohl CSS vielleicht „sauberer“ ist. Vielen Dank für den ausgezeichneten Beitrag
Ich habe ein Problem mit der jQuery-Methode.. Manchmal muss ich die Seite aktualisieren, um das Bild in voller Größe zu sehen.. nur MANCHMAL…. Es gibt, sagen wir, eine Verzögerung… kann jemand helfen??
Vielen Dank!!
ANMERKUNG DES HERAUSGEBERS: Der obige Code wurde aktualisiert, um dies zu beheben.
Dies funktioniert fast perfekt, aber es gibt einen Fehler, den ich auf großen Bildschirmen nicht vollständig lösen kann. Ich werde ihn hier beschreiben und hoffe, dass jemand den Fehler bestätigen und sehen kann, ob es eine Lösung gibt oder ob es ein Fehler des Cover-Wertes in der background-size-Eigenschaft ist.
Alles funktioniert perfekt, wenn es keine vertikale Scrollleiste gibt,
Wenn eine vertikale Scrollleiste vorhanden ist, scheint es einen Rand von etwa 1 % auf der linken Seite zu geben. Wenn das Viewport riesig ist, wird der Abstand größer, wenn das Viewport kleiner ist, verschwindet der Abstand und funktioniert einwandfrei,
Wenn ich anstelle von: „no-repeat center center fixed“ schreibe: no-repeat 49% center fixed, wird das Problem des linken Randes gelöst, aber es erscheint 1 % auf der rechten Seite, was besser, aber immer noch nicht perfekt ist.
Fazit
Ich denke, der Cover-Wert macht einige Annäherungen und aus irgendeinem Grund ist die Ausgabe, wenn eine vertikale Leiste vorhanden ist, falsch, zumindest in Chrome, Opera und Safari. Nur Firefox und IE funktionieren einwandfrei.
„Awesome, Easy, Progressive CSS3 Way“ hat bei mir funktioniert! Danke!
Danke für dieses tolle Tutorial, wie sollen die Bildabmessungen sein?
Passt auf, Leute, es gibt einen Fehler im Snap Mode in Windows 8, wenn ihr das auf die CSS3-Art macht.
[Hier ist ein Dropbox-Link mit einem Screenshot davon.](https://www.dropbox.com/s/7je5f19vxp9bwxb/iebug.png „Hier ist ein Link mit Dropbox-Screenshot davon.“)
Bitte, schreiben Sie mir eine Nachricht, wenn Sie eine Lösung gefunden haben.
Ich habe dies auf das Body-Element angewendet, um IE8 mit einer konditionalen CSS-Datei zu reparieren.
IE8 wird im gesamten Unternehmen verwendet, daher war es unerlässlich, dass es behandelt und auch im IE Tester getestet wurde.
Mein Fehler: "position fixed" auf dem Body-Element hat nicht funktioniert, habe stattdessen dies verwendet
}
Danke, CSS3-Methode funktioniert bei mir!
Hallo Chris… Ich interessiere mich für dieses Thema. Vielleicht ist es spät… aber ich habe versucht, den Vollbild-Hintergrund basierend auf dem Tutorial zu erstellen. Aber mit ein paar Tricks… unten ist mein Code
HTML
CSS
JQuery
$(window).load(function() {var theWindow = $(window),
$bg = $(".home");
if(theWindow.width() != $bg.width())
{
$bg.css("width",theWindow.width());
}
if(theWindow.height() != $bg.height())
{
$bg.css("height",theWindow.height());
}
function resizeBg() {
if(theWindow.width() != $bg.width())
{
$bg.css("width",theWindow.width());
}
if(theWindow.height() != $bg.height())
{
$bg.css("height",theWindow.height());
}
}
console.log($bg.width() + " " + $bg.height());
console.log(theWindow.width() + " " + theWindow.height());
theWindow.resize(resizeBg).trigger("resize");
});
Und es gelingt mir, es jedes Mal zu laden, wenn ich die Browser-Skalierung ändere. Vielen Dank für Ihren Artikel.
Hey, was ist, wenn es 3 Bilder für den Hintergrund gibt? Eines oben, eines unten und in der Mitte für repeat-y. Ich kann es auf einigen kürzeren Seiten nicht dehnen. Man kann es auf http://www.konji.rs sehen, ich habe es auf einigen Seiten mit einem Plugin gemacht, aber es ist ein Problem. Kann es mit zwei machen: oben und einem sich wiederholenden, aber mit freier Anzahl. Irgendwelche Vorschläge? Danke
Ich verwende diese Methode oft, habe sie aber auf der Website eines Kunden implementiert, und sie verwendet ein Windows Phone, um ihre Website anzuzeigen, und der Hintergrund dehnt sich nicht aus.
Ich habe auf IOS und Android getestet und alles ist in Ordnung? Irgendwelche Ideen?
Hallo, wie macht man einen nicht-vollständigen Hintergrund (zentriert), aber fest?
Ich habe eine reine CSS3-Lösung (mit SASS) mit Retina-Unterstützung, IE-Fallback UND es lädt Bilder je nach Bildschirmauflösung.
HTML
SASS
Mixins
SASS-Stil
Jetzt benötigen Sie 8 Versionen Ihres Hintergrundbildes
Zum Beispiel befinden sich diese Bilder im Ordner
/assets/images/background/, sodass Ihr absoluter Pfadyourdomain.com/assets/images/background/_768.jpgwäre, dann benötigen Sie dies+fullscreen('/assets/images/background', '.jpg')mit der @media query lädt es das Bild je nach Bildschirmauflösung und wenn es ein Retina-Display ist, lädt es das Retina-Bild (
doppelte Auflösung)
Getestet in Firefox 25, Chrome 31 und IE 7, 8, 9, 10
Dank an diesen Artikel und retina.js für die
(-webkit-min-device-pixel-ratio : 1.5)LösungIn Zeile 4 finden Sie dies
$image_p : '../images/' + $image_path + '/'Dies hängt von Ihrem CSS-Speicherort ab. In meiner Lösung befinden sich die Bilder in
/assets/images/background/moon/und die CSS
/assets/stylesheets/style.css. also muss ich
../images/zu $image_p hinzufügen und den Mixin mit+fullscreen('background/moon', '.jpg')hinzufügenDies muss an Ihren eigenen Dateispeicherort angepasst werden
Danke!
Hallo Dino, das sieht toll aus.
Haben Sie eine Idee, wie das auf einer One-Page-Website mit mehreren Bildern als Hintergründen funktionieren könnte?
Vielen Dank,
Carlos
Hallo, Sie können das Hintergrundbild einer Klasse zuweisen und es mit Javascript ändern. Verwenden Sie meinen Code oben und machen Sie etwas Ähnliches
HTML
SASS
JQuery
Es spielt keine Rolle, wie Sie die Klasse ändern. Weisen Sie den Fullscreen-Mixin einfach einer Klasse zu, und Sie können ihn ändern.
Danke für die schnelle Antwort. Werde es später versuchen.
Vielen Dank! :)
Kann mir bitte jemand sagen, was die sicherste Mindestgröße für ein Header-Hintergrundbild für ein HTML-/Wordpress-Theme ist? Sind das 1600 px oder weniger?
Es hängt wirklich von Ihrem Theme und den integrierten Beschränkungen ab, aber wenn man bedenkt, dass die meisten Benutzer heutzutage Bildschirme haben, die mindestens 1280 Pixel breit sind, würde ich sagen, dass Sie wahrscheinlich nicht viel weniger als 1600 Pixel gehen möchten.
Für Vollbildbilder oder Websites mit vollflächigen Bildern mache ich sie immer 1920×1280. Ich finde, das ist die beste Größe, die man durchweg verwenden kann, sieht auf einem 15-Zoll-Laptop gut aus, aber auch auf einem 27-Zoll-Monitor.
Chris, gerade sind zwei Dinge passiert, und wir beide hoffen, dass dein Genie das herausfinden kann, denn wir genießen deine Hintergrund-'Cover'-Methode seit Jahren.
1) Mein Desktop-IE11 versagt bei deiner 'Cover'-Variable, nimmt anscheinend tatsächliche Abmessungen und mit fester Proportion des flüssigen Hintergrundbildes und Hintergrundgröße relativ zur Fenstergröße schrumpfen die Seitenränder des Hintergrunds innerhalb der Fensterbegrenzungen, wenn das Fenster nicht im richtigen Verhältnis (egal welche Fenstergröße) ist, um eine festgelegte Hintergrundbildproportion zu erfüllen. Du bist dir vielleicht bewusst, dass Stu Nichols in England mit dieser OS-Empfindlichkeitssache unter Verwendung eines weißen Hasenbildes im Jahr 2002 gespielt hat.
Der Hase (heute besser denn je.
Abishek und die anderen Microsoft-Ingenieure, die die Fensterblöcke meiner Box beobachten, könnten interessiert sein, also geben wir ihnen einen Einblick. Jedenfalls… wir vermuten, sie wissen mehr als wir.
2) Oh, und gleichzeitig überlappen sich deine Kommentare in diesem Kommentarbereich, egal ob Safari, Chrome oder IE, Mac oder PC, sodass sie leider nicht lesbar sind.
2013 Weihnachtstag W3C Paradigmenwechsel? Ein weiterer globaler Bug? Google/Microsoft Kampfschläge? Lokalisierte (hoffentlich) Web-Lieferprobleme, die hauptsächlich (was sonst) IE betreffen?
Was geht ab, lol (viele Lacher).
Ich empfehle das imagecover.js Plugin, es ist super, ein Element mit einem Bild abzudecken (es unterstützt css2 und css3)
https://github.com/Metalchocobo/imagecover/
Ich habe das gerade meinem CSS hinzugefügt und es funktioniert perfekt für mich
`{
margin:0;
padding:0;
}
/————————-
Allgemeine Stile
————————–/
html{
/ Dieses Bild wird im Vollbildmodus angezeigt /
background-image:url(images/bg1.jpg);
background-repeat:no-repeat;
background-position:center;
background-size:cover; / Der Trick */
}`
Wenn ich CSS#1 verwende, verschwindet ein Teil meines Textes unter dem Bild. Wie behebe ich das?
Ich kann sehen, dass der Text unter dem Bild liegt, denn als ich im CSS top: 0px auf top:60px geändert habe, erschien der Text plötzlich.
egal, behoben durch Verwendung von z-index ;)
Habe den zweiten Trick verwendet, aber jetzt, wenn ich etwas darauf schreibe, erscheint es nicht.
wie wenn ich benutze
<
p> Tag dann wird es nicht erscheinen, nur das Bild erscheint im Browser.
Sie müssen
#bg {z-index: -10}oder etwas anderes hinzufügen, das niedriger ist als andere Elemente auf der Seite.#2 war mit Abstand die beste Lösung, ich habe verschiedene Methoden/Wege ausprobiert und es war nie gut, besonders mit einem Bokeh-Bild.
Danke an Chris und Corey Worrell :)
Ich möchte den oberen Teil des Bildes fixiert halten (damit es auf breiten Bildschirmen nicht verschwindet). Welche Methode sollte ich verwenden und welche Änderungen (falls vorhanden) sollte ich am Code vornehmen? Danke!
Funktioniert nicht. Es skaliert das Bild nicht.
Ausgezeichnete Ressource. Eine Sache, die ich jedoch festgestellt habe, ist, dass ältere IEs (IE6 und 7) manchmal abstürzen, wenn man Filter übermäßig verwendet. Nur etwas, worauf man achten sollte.
Danke für die nützlichen Code-Snippets! Ich habe die jQuery-Methode verwendet, sie aber so geändert, dass das Bild immer zentriert bleibt.
Ist es möglich, mehrere vollseitige Bilder als Hintergrundbilder zu haben?
Zum Beispiel, wenn Sie eine Reihe von Bildern im HTML hatten und Sie wollten, dass jedes die Höhe und Breite des Browsers und eine proportionale Skalierung auf die gleiche Weise hat, wie es background-cover erreicht, aber es auch im Dokumentfluss belassen, damit Sie wie gewohnt die Seite nach unten scrollen können.
Also im Grunde wie Technik Nummer 2, aber ohne feste Positionierung auf dem Elternteil?
Entschuldigung, ich habe es zum Laufen gebracht. Ich musste nur absolute anstelle von fixed verwenden und einen relativen Elternteil haben, um den Fluss zu halten.
Viele mobile Browser unterstützen jedoch keine feste Position. Daher ist Technik #1 möglicherweise keine gute Wahl.
Hallo, es funktioniert! Danke.
Kann ich fragen, ob es auch mit jQuery Mobile funktioniert? Website kann, aber ist es dasselbe mit Mobiltelefonen?
Ich benutze das >>>
body {
background-repeat: no-repeat;
background-attachment: scroll;
background-image: url(../image/mainbg.png);
max-height: auto;
max-width: 100%;
margin: 0px;
padding: 0px;
height: 800px;
background-position: 0px 0px;
width: 1280px;
}
funktioniert das also auch bei mobilen Apps für den Hintergrund?
Vielen Dank :)
Für mich funktionierte diese erste Option nicht. Die Verwendung von: background-attachment:fixed; hat es zum Laufen gebracht.
Ich habe die CSS3-Methode auf einem Block verwendet, dessen Größe von jQuery und Angular gesteuert wurde. Als ich ihn aus dem Blickfeld scrollte und dann zum Seitenanfang zurückging, verschwand der Hintergrund entweder oder wurde in Abschnitte aufgeteilt. Ich habe den Code unten basierend auf der Juliana Bicycles-Website geändert und er funktioniert perfekt.
Wirklich! Quellcode ansehen… Wir haben einen langen Weg zurückgelegt. Warum verwenden Sie Skripte, um die Standard-DOM-Standards zu ersetzen?