2012-08-27 27 views
6

Tôi đã cố gắng xóa nền trắng khỏi các phần tử .win-container (lát) trong điều khiển ListView của Windows 8 để cho phép nền hiển thị qua . Khi tôi bắt nguồn từ phong cách, tôi có thể thấy rằng nền trắng được nhận được áp dụng với các nguyên tắc sau ...Không thể ghi đè màu nền bằng "không có gì", chỉ với "kế thừa"

.win-listview :not(.win-footprint).win-container 

Vì vậy, tôi đã viết quy tắc của riêng mình cho rằng như thế này ...

.win-listview :not(.win-footprint).win-container { 
    background-color: none; 
} 

Nhưng điều đó không hiệu quả.

Một người bạn đã giúp tôi tìm ra rằng tôi có thể sử dụng ...

.win-listview :not(.win-footprint).win-container { 
    background-color: inherit; 
} 

Và đó hoạt động tuyệt vời. Bất cứ ai có thể cho tôi biết tại sao trên thế giới này là như vậy?

Trả lời

9

none là giá trị của thuộc tính background-image, không phải background-color. Vì nó không phải là giá trị hợp lệ của background-color, khai báo sẽ bị bỏ qua và hệ thống sẽ tiếp tục vẽ các lát của bạn với nền trắng mặc định. Nếu bạn muốn cho gạch của bạn có nền trong suốt, bạn cần phải sử dụng background-color: transparent thay vì:

.win-listview :not(.win-footprint).win-container { 
    background-color: transparent; 
} 

(Bạn cũng có thể sử dụng background: none, nhưng một lần nữa none đại diện background-image với một ngụ ý transparent cho background-color.)

background-color: inherit chỉ cần yêu cầu gạch của bạn tiếp tục (hoặc inherit) cùng màu nền như ListView chứa chúng. Điều này có thể có hoặc không có tác dụng rõ ràng khi không có màu nền riêng biệt. Tuy nhiên, nó không giống như có một nền trong suốt (trừ khi bản thân ListView cũng có nền trong suốt, mà trong trường hợp của bạn nó có thể không).

+1

Cảm ơn một triệu. Tôi không biết về giá trị màu 'trong suốt'. –

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