2012-03-23 27 views
13

Tiêu đề cơ bản nói lên tất cả.Chỉ thay đổi một trong nhiều hình nền khi di chuột


Dưới đây là một ví dụ:

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

Như bạn có thể thấy, chỉ có một trong những thay đổi ảnh nền - một trong những khác giữ nguyên trong mỗi nhà nước, nhưng vẫn đang được công bố Bốn lần!

Vì vậy, có thể chỉ thay đổi một trong các hình nền, nhưng để nguyên bản gốc khác - không phải khai báo lại nhiều lần?

Tôi biết rằng các thuộc tính nền CSS khác (lặp lại, vị trí, v.v.) có thể được đặt riêng. Đây chỉ là một ví dụ nhanh ...

+2

Tôi có một cảm giác câu trả lời sẽ là thất vọng ... –

+0

câu hỏi hay, nhưng có lẽ không –

+0

@ WesleyMurch - không còn nữa. Xem câu trả lời của tôi. –

Trả lời

1

này bây giờ có thể với các biến 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); 
} 

Xem nó ở đây trong hành động: https://jsfiddle.net/22zu6oaq/

+0

Có, và điều tốt nhất về điều này là nó bay ngay trước những mối quan tâm mà tôi đã nêu ra trước đây: "nó sẽ diễn ra như thế nào về cú pháp và thác". [Đây] (http://stackoverflow.com/questions/40010597/how-do-i-apply-opacity-to-a-css-color-variable/41265350#41265350) một ví dụ thậm chí còn điên rồ hơn. – BoltClock

5

Không, không thể làm được, xin lỗi. Điều này nghe có vẻ giống như một bổ sung mà bạn có thể đề xuất, mặc dù tôi không chắc chắn nó sẽ diễn ra như thế nào về cú pháp và thác.

+0

Tôi thậm chí không thể tưởng tượng cú pháp có thể là gì. Tôi khá ghen tỵ với bất kỳ ai thực sự sử dụng nhiều nền tảng ngay từ đầu, tôi vẫn gắn với sự hỗ trợ của IE7. Tăng cường tiến bộ? Chắc chắn rồi, hãy nói cho khách hàng biết điều đó. –

+0

Thất vọng, để nói rằng ít nhất. Đối với cú pháp: tại sao không sử dụng một số giống như mảng? Ví dụ 'background-image-1',' background-image-2' vv Điều này cũng hữu ích cho 'box-shadow', hoặc bất kỳ thuộc tính CSS nào khác có nhiều giá trị. Đối với các thác: Tôi thấy không có vấn đề gì. Tại sao nó lại khác với [background-position-x' và 'background-position-y'] của IE (http://snook.ca/archives/html_and_css/background-position-x-y)? –

+1

Tôi rất vui nếu có một cú pháp như 'background-position:,, 0 -20px,;' để sửa đổi vị trí của nền thứ ba trong bốn. – Pioul

Các vấn đề liên quan