2008-12-31 22 views
15

Angenommen ich ein Hintergrundbild für eine Web-Seite in CSS wie diese Einstellung:Bilder in CSS überlagern - möglich, um 2 Bilder im selben Element zu platzieren?

body { 
font-size: 62.5%; /* Resets 1em to 10px */ 
font-family: Verdana, Arial, Sans-Serif; 
background-color: #9D5922; 
color: #000; 
margin-left: auto; 
margin-right: auto; 
margin: 0; 
padding: 0; 
background: url(images/desk.gif) repeat bottom left; 
} 

Gibt es eine Möglichkeit, ein zweites Bild auf der Oberseite des desk.gif innerhalb des Körperelements Schicht selbst oder ist die einzige Möglichkeit, eine separate Klasse zu erstellen und die Z-Achse zu verwenden?

Es tut mir leid, es ist eine einfache Frage, aber ich habe versucht, das herauszufinden und obwohl ich es nicht schaffen konnte, habe ich auch keinen klaren Schlag der Idee irgendwo online gefunden .. Also, gibt es einen Weg, oder ist das nur ein Nein?

Danke!

+3

font-size: 62,5%;/* Setzt 1em auf 10px zurück */ tut so etwas nicht. – Sparr

+0

Ja, tut mir leid - dieser Kommentar neben dem Attribut ist verkümmert. Danke, dass du es aufgezeigt hast, du hast mich daran erinnert, es zu löschen! –

+0

"tut so etwas nicht!" = "Macht es nur etwa 97% der Zeit" –

Antwort

4

Kurz gesagt, es ist nicht möglich. Sie können dies tun, aber Sie müssen der Seite ein zweites HTML-Objekt hinzufügen, damit es funktioniert. Setzen Sie zum Beispiel einen Div-Block direkt unter Ihrem Körper und weisen Sie diesem Objekt den zweiten Hintergrund zu.

Hoffe, das hilft!

+0

Ich dachte, aber es war eine Hoffnung! Danke, ich werde es mit einem Div Block machen. –

+1

Kein Problem! Vielleicht wird CSS4 so etwas einführen? Mit der Richtung CSS & HTML wollen die Leute immer weniger HTML-Objekte verwenden, um die Seite zu gestalten. Man kann träumen, oder? :) – Dave

+2

Eigentlich in CSS3, über Border Bilder - siehe http://www.w3.org/TR/2002/WD-css3-border-20021107/ (AFAIK, nur Safari und FF3.1 unterstützen dies obwohl) – Shog9

0

Die einzige Möglichkeit besteht darin, einen anderen Container zu verwenden. Jedes Element darf nur ein Hintergrundbild enthalten.

0

Verwenden Sie absolute Positionierung und einen Z-Index, um das zweite Element oben zu erhalten.

0

Vergessen Sie nicht, Sie Stile auf das HTML-Element anwenden können:

html { 
background: url(images/whatever.gif); 
} 
6

Layered Hintergründe Teil des CSS3 Working Draft sind aber, soweit ich weiß, die Unterstützung für sie ist begrenzt auf WebKit/KHTML-basierten Browser wie Safari, Chrome, Konqueror und OmniWeb.

Ihr Beispielcode verwenden, würde dies wie folgt aussehen:

body { 
    font-size: 62.5%; /* Resets 1em to 10px */ 
    font-family: Verdana, Arial, Sans-Serif; 
    background-color: #9D5922; 
    color: #000; 
    margin-left: auto; 
    margin-right: auto; 
    margin: 0; 
    padding: 0; 
    background: url("images/top.gif") left bottom repeat, 
       url("images/desk.gif") left bottom repeat; 
} 
5

Ich habe bereits die Lösung in einer doppelten Frage gestellt, sondern für alle, die diese Informationen benötigen kann ich es auch hier posten.

Soweit ich weiß, ist es nicht möglich, es in die gleiche Schicht zu legen, aber es ist möglich, mehrere Bilder in separaten divs übereinander zu legen, und wurde von beliebten Usability-Test-Website Silverback implementiert (Überprüfen Sie den Hintergrund, um zu sehen, wie es geschichtet wurde). Wenn Sie durch den Quellcode schauen, können Sie sehen, dass der Hintergrund aus mehreren Bildern besteht, die übereinander liegen.

Hier ist der Artikel, der zeigt, wie man den Effekt auf Vitamin finden kann. Ein ähnliches Konzept zum Umhüllen dieser "Zwiebelschalen" -Schichten findet sich unter A List Apart.

+2

Dies ist eine viel nützlichere Antwort als die "akzeptierte" Antwort. –

0

link text

Link oben erwähnt am besten beschreibt, was Sie bis zu r ...

1

Heutzutage kann dies (nicht < IE9, afaik) in allen "modernen" Browser erfolgen. Ich kann bestätigen, dass es in Firefox, Opera, Chrome funktioniert. Es gibt keinen Grund, es nicht zu tun, solange Sie eine anständige Ausweichlösung für ältere Browser/IE haben.

Für die Syntax Sie können wählen zwischen

 
    background:url(..) repeat-x left top, 
      url(..) repeat-x left bottom; 

und

 
    background-image:url(..), url(..); 
    background-position:left top, left bottom; 
    background-repeat:repeat-x; 

Sie haben nicht die Zeilenumbrüche müssen, aber das Komma ist wichtig.


Achtung! Im Folgenden werden zwei Hintergründe erstellen, auch wenn Sie nur eine Bild-URL angegeben:

 
    background-image:url(..); 
    background-position:top, bottom; 

Und natürlich gibt es die Alternative ist, verschachtelte Container zu verwenden, aber dies wird Ihre HTML aufblasen.

0

Im Anschluss an diese Verbindung für Schichten auf Schicht in CSS

http://www.handycss.com/tips/layers-on-layer-in-css/

+1

Nizza Link, um zu bekommen, worum es bei der CSS-Layering geht. – mtk

+0

Wenn Sie einen externen Link veröffentlichen, hilft es, die wichtigsten Punkte hier zu dokumentieren, so dass der Kern des Posts verfügbar ist, selbst wenn die Verbindung ausfällt. – mbinette