2012-03-23 11 views
13

Tytuł w zasadzie mówi wszystko.Zmiana tylko jednego z wielu tła przy uaktywnieniu myszy


Oto przykład:

#element { 
    background: url(image.png) no-repeat center center, 
       linear-gradient(to top, #86a53c, #516520); 
} 

#element:hover { 
    background: url(image.png) no-repeat center center, 
       linear-gradient(to top, #A0C153, #516520); 
} 

#element:active { 
    background: url(image.png) no-repeat center center, 
       linear-gradient(to top, #516520, #A0C153); 
} 

Jak widać, tylko jeden z obrazów tła zmian - druga pozostaje taka sama w każdym stanie, ale wciąż jest zadeklarowana cztery razy!

Tak, to jest możliwe, aby zmienić tylko jedną z tła, ale pozostawić drugą jak jest - bez konieczności ponownego zadeklarować je w kółko?

wiem, że inne właściwości CSS tła (powtarzam, pozycja itd.) Można ustawić oddzielnie. To tylko krótki przykład ...

+2

Mam uczucie odpowiedź będzie rozczarowujący ... –

+0

dobre pytanie, ale prawdopodobnie nie –

+0

@ WesleyMurch - już nie jest. Zobacz moją odpowiedź. –

Odpowiedz

1

Jest to obecnie możliwe ze zmiennymi CSS:

#element { 
    --gradient: linear-gradient(to top, #86a53c, #516520); 

    background: url(image.png) no-repeat center center, 
       var(--gradient); 
} 

#element:hover { 
    --gradient: linear-gradient(to top, #A0C153, #516520); 
} 

Zobacz go w akcji tutaj: https://jsfiddle.net/22zu6oaq/

+0

Tak, a najlepsze w tym jest to, że leci prosto w obliczu obaw, które poprzednio podniosłem: "jak to się będzie działo pod względem składni i kaskady". [Tutaj jest] (http://stackoverflow.com/questions/40010597/how-do-i-apply-pacity-to-a-css-color-variable/41265350#41265350) jeszcze bardziej szalony przykład. – BoltClock

5

Nie, nie można zrobić jeszcze, przepraszam. Brzmi to jak dodatek, który możesz zaproponować, choć nie jestem pewien, jak by to wyglądało pod względem składni i kaskady.

+0

Nie mogę sobie nawet wyobrazić, jaka mogłaby być składnia. Jestem zazdrosny o każdego, kto w rzeczywistości korzysta z wielu środowisk, nadal jestem związany z obsługą IE7. Progresywne ulepszanie? Jasne, spróbuj powiedzieć klientowi, że. –

+0

Rozczarowujące, delikatnie mówiąc. Co do składni: dlaczego nie używać liczby tablicowej? Na przykład 'background-image-1',' background-image-2' itp. Byłoby to również użyteczne dla 'box-shadow' lub jakiejkolwiek innej własności CSS, która ma wiele wartości. Jeśli chodzi o kaskadę: nie widzę żadnych problemów. Dlaczego miałoby to być coś innego niż [IE's background-position-x' & 'background-position-y'] (http://snook.ca/archives/html_and_css/background-position-x-y)? –

+1

Byłbym zadowolony, gdyby istniała składnia w rodzaju 'background-position:,, 0 -20px,;' zmieniająca położenie trzeciego tła wśród czterech. – Pioul

Powiązane problemy