2008-12-31 10 views
15

zakładając mam ustawienie obrazu tła dla strony internetowej w CSS tak:Układanie obrazów w CSS - możliwe umieszczenie 2 obrazów w tym samym elemencie?

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; 
} 

Czy istnieje jakiś sposób, aby warstwa A drugi obraz na górze desk.gif wewnątrz elementu ciała samego, czy jedyny sposób na stworzenie oddzielnej klasy i użycie osi Z?

Przykro mi, to proste pytanie, ale próbowałem to rozgryźć i chociaż nie udało mi się sprawić, że to zadziałało, również nie znalazłem wyraźnego slapdownu tego pomysłu w Internecie. Czy istnieje jakiś sposób, czy może to po prostu nie można zrobić?

Dzięki!

+3

font-size: 62,5%;/* Resetuje 1e do 10px */ nie robi czegoś takiego. – Sparr

+0

Tak, przepraszam - ten komentarz obok atrybutu jest szczątkowy. Dzięki za wskazanie, przypomniałeś mi, żebym to usunął! –

+0

"nie ma czegoś takiego"! = "Robi to tylko w 97% przypadków" –

Odpowiedz

4

Krótko mówiąc, nie jest to możliwe. Możesz to zrobić, ale musisz dodać do strony drugi obiekt HTML, aby działał. Na przykład umieść blok div tuż poniżej ciała i przypisz drugie tło do tego obiektu.

Mam nadzieję, że to pomoże!

+0

Pomyślałem, ale to była nadzieja! Dzięki, zrobię to z blokiem div. –

+1

Nie ma problemu! Może CSS4 wprowadzi coś takiego? Wraz z kierunkiem CSS i HTML, ludzie chcą używać coraz mniej obiektów HTML do stylizacji strony. Można marzyć, prawda? :) – Dave

+2

Właściwie w CSS3, za pośrednictwem obrazów granicznych - patrz http://www.w3.org/TR/2002/WD-css3-border-20021107/ (AFAIK, tylko Safari i FF3.1 obsługują to) – Shog9

0

Jedynym sposobem jest użycie innego pojemnika. Każdy element może zawierać tylko jeden obraz tła.

0

Użyj bezwzględnego pozycjonowania i indeksu z, aby uzyskać drugi element na wierzchu.

0

Nie zapomnij można zastosować style do elementu HTML:

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

Warstwy tła są częścią CSS3 Working Draft ale, o ile wiem, wsparcie dla nich jest ograniczony do WebKit/KHTML opartej przeglądarki takie jak Safari, Chrome, Konqueror i OmniWeb.

Korzystanie z przykładowy kod, będzie to wyglądać tak:

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

Już pisał rozwiązanie w duplikatu pytanie, ale dla każdego, kto może wymagać tej informacji będę go zakładać również tutaj.

O ile mi wiadomo, nie jest możliwe umieszczenie go w tej samej warstwie, ale możliwe jest umieszczenie kilku obrazów w oddzielnych elementach div na sobie i zostało zaimplementowane przez popularną stronę testowania użyteczności Silverback (sprawdź tło, aby zobaczyć, jak zostało ułożone). Jeśli przejrzysz kod źródłowy, zobaczysz, że tło składa się z kilku obrazów, umieszczonych jeden na drugim.

Oto artykuł demonstrujący, jak to zrobić, można znaleźć pod adresem Vitamin. Podobną koncepcję owijania warstw "cebuli" można znaleźć na stronie A List Apart.

+2

To jest o wiele bardziej użyteczną odpowiedzią niż "akceptowana" odpowiedź. –

1

Obecnie można to zrobić we wszystkich przeglądarkach "nowoczesnych" (nie < IE9, AFAIK). Mogę potwierdzić, że działa w Firefox, Opera, Chrome. Nie ma powodu, aby tego nie robić, o ile masz przyzwoite rozwiązanie awaryjne dla starszych przeglądarek/IE.

Dla składni można wybrać pomiędzy

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

i

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

Nie trzeba linebreaks, ale przecinek jest ważne.


Uwaga! Następujące będzie utworzenie dwóch środowisk, nawet jeśli podano tylko jeden obraz adres:

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

I oczywiście, nie jest alternatywą do korzystania zagnieżdżone pojemników, ale będzie to uwędzić html.

0

wykonując te łącza dla warstw na warstwie w CSS

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

+1

Ładne łącze, aby uzyskać to, o co chodzi w warstwie css. – mtk

+0

Kiedy publikujesz link zewnętrzny, pomaga to udokumentować kluczowe punkty, aby crux postu był dostępny, nawet jeśli link się zmniejszy. – mbinette

Powiązane problemy