2012-06-20 13 views
13

Mam folder z kilku obrazów tła (one.jpg, two.jpg, three.jpg) i to znacznikówJak użyć atrybutu danych do ustawienia obrazu tła w CSS?

<section class="slide" data-bg="one"></section> 
<section class="slide" data-bg="two"></section> 
<section class="slide" data-bg="three"></section> 

Byłoby możliwe jakoś tylko z CSS zrobić coś takiego ?

.slide{ 
    background-image: url(img/attr(data-bg).jpg); 
} 

Ten kod nie działa, oczywiście.

+0

nie z czystego css, ale z JavaScript - jest to opcja dla Ciebie? – oezi

+0

Moim celem było zdobycie go za pomocą CSS –

+5

Jesteś * przypuszczalnie *, aby móc to zrobić za pomocą [rozszerzonej CSS3 wersji 'attr()'] (http://www.w3.org/TR/css3 -values ​​/ # attr) (z wyjątkiem cytowania ciągów), ale nie ma znanych implementacji. Twoim jedynym sposobem jest ich kodowanie, jak sugeruje Oezi. – BoltClock

Odpowiedz

11

To nie będzie możliwe z czystego css chyba że robisz to „undynamic” sposób:

.slide[data-bg="one"]{ 
    background-image: url('img/one.jpg'); 
} 
.slide[data-bg="two"]{ 
    background-image: url('img/two.jpg'); 
} 
... 

Może można dynamicznie utworzyć ten arkusz stylów od nazw plików po stronie serwera.

Inną (prawdopodobnie łatwiejszą) możliwością jest zrobienie tego przy pomocy JavaScript - ale ponieważ wykluczyłeś, zakładam, że wiesz o tym i po prostu nie chcesz z niego korzystać.

+1

Sucks :(Dzięki. Mógłbym użyć SASS, ale nie mojego preferowanego rozwiązania. –

0

Wiem, że oryginalne pytanie podkreślało, że robi to tylko z CSS, ale dostałem to pytanie, ponieważ inne pytanie (które niekoniecznie wymagało rozwiązania CSS) zostało oznaczone jako duplikat tego. Oto, czego używam jako rozwiązanie, w przypadku pomaga kogoś innego, i wykorzystuje JavaScript w/jQuery:

$('.slide').each(function (index) { 
    var slide = $(this); 
    slide.css('background-image', 'url(' + slide.data('bg') + ')'); 
}); 
Powiązane problemy