2010-09-21 14 views

Odpowiedz

37

Może powinieneś użyć do tego celu :after lub :before, ponieważ nie ma potrzeby dodawania dodatkowego znacznika w kodzie HTML. Tak:

.container{ 
    height:400px; 
    background:red; 
    position:relative; 
    width:400px; 
} 
.container:after{ 
    content:""; 
    position:absolute; 
    top:20px; 
    left:0; 
    right:0; 
    bottom:0; 
    background:url(http://lorempixel.com/400/200) repeat-y; 
} 

Sprawdź to http://jsfiddle.net/h6K9z/

Działa w IE8 & powyżej. W przypadku IE7 lub IE6 można podać dodatkowe DIV.

+0

To jest niesamowite; to działa! Dzięki, @sandeep. 'right: 0; dół: 0; po lewej: 0 ', czy jest to sposób na "rozciągnięcie" całkowicie pozycjonowanego kontenera w celu wypełnienia 100% szerokości i 100% wysokości (od 20 px, oczywiście)? – moey

+0

Podczas sprawdzania odpowiedzi odkrył niesamowitą usługę lorempixel.com, dzięki! – Trufa

+0

w prawo: 0; dół: 0; left: 0 to naprawdę wypełniacz kontenerów, testowane ok w ie8. Działa również jak u dołu: 90 pikseli; Sam ten był wart złota. – Johan

-2

Wystarczy właściwość background-position być ustawione:

background-position: 0px 20px; 
background-repeat: repeat-y; 
+5

Pozycja tła przesuwa punkt początkowy tła, np. 20 pikseli w dół strony, ale nie uniemożliwia jej powtórzenia * powyżej * tego punktu. – ajcw

1

Wolę skrótowej metody:

.yourClass { 
    background: url(../images/yourImage.png) repeat-y 0 20px; 
} 
0

nie sądzę po prostu łącząc background-position i background-repeat np repeat-y 0 20px zadziała. Zakładając, że to jsFiddle sample reprezentuje przypadek OP, rozwiązanie powinno sprawić, że zielone tło zacznie się od (pionu) 20 pikseli; "Cześć tam!" tekst nie powinien siedzieć na zielonym tle.

Moja odpowiedź brzmi: nie można tego zrobić w prosty sposób za pomocą CSS; co oznacza, że ​​możesz chcieć zmienić strukturę HTML, aby osiągnąć swój cel. Jednak zaczynam nagrodę, mając nadzieję, że inni wymyślą lepsze odpowiedzi.