Là màu nền: không có CSS ​​hợp lệ?


432

Bất cứ ai có thể cho tôi biết nếu CSS sau đây là hợp lệ?

.class {
    background-color:none;
}

10
Các validator thường có thể trả lời loại câu hỏi này.
ba mươi

10
Bạn có thể nhầm lẫn với background:none;cái nào là hợp lệ và cái nào đặt màu nền thành trong suốt.
Ông Lister

Câu trả lời:


552

Bạn có thể muốn transparentnhư nonekhông phải là một giá background-colortrị hợp lệ .

Thông số CSS 2.1 nêu các điều sau đây cho thuộc background-colortính:

Value: <color> | transparent | inherit

<color>có thể là một từ khóa hoặc một đại diện số của một màu. Các colortừ khóa hợp lệ là:

thủy, đen, xanh dương, fuchsia, xám, xanh lá cây, vôi, maroon, hải quân, ô liu, cam, tím, đỏ, bạc, teal, trắng và vàng

transparentinheritlà các từ khóa hợp lệ theo cách riêng của họ, nhưng nonekhông phải.


25
Đúng. Vì giá trị ban đầutransparent, đó là những gì bạn sử dụng nếu bạn muốn tắt "màu nền".
Ông Lister

1
không ai trong số này sẽ đặt lại về giá trị trước đó (nghĩa là nếu được đặt theo quy tắc css khác :(
pstanton

2
@pstanton trong trường hợp của bạn, bạn cần đưa ra màu nền: trong suốt! quan trọng;
đây là

Điều này nhắc nhở tôi về việc cố gắng sử dụng màu chữ khi tôi bắt đầu sử dụng mã hóa. Tất nhiên rồi color, không phải font-color. Làm cho rất nhiều ý nghĩa bất cứ khi nào tài sản phông chữ khác có fontở phía trước của nó ...
serraosays

@herr Nhưng vẫn như pstanton đã nói, thiết lập màu nền trong suốt sẽ ghi đè lên các thuộc tính css trước đó! Có cách nào để loại bỏ thuộc tính màu nền này để nó lấy thuộc tính CSS từ thuộc tính trước không?
SE_User

159

Không, sử dụng transparentthay thế none. Xem ví dụ hoạt động ở đây trong ví dụ này nếu bạn thay đổi transparentthành nonekhông hoạt động

sử dụng như .class { background-color:transparent; }


Nơi .class là những gì bạn sẽ đặt tên lớp trong suốt của bạn.


Trong ví dụ của tôi, nó hoàn toàn ngược lại. Nếu bạn không thay đổi để minh bạch, nó sẽ không hoạt động. Tôi thực sự không cần sử dụng: jsfiddle.net/BkAad
Hrvoje Golcic

Trong ví dụ của bạn, thay đổi thành body *: not (.exception) {background-color: minh bạch} Bạn phải xóa! Quan trọng vì điều đó buộc tất cả những người khác bên trong phải có thuộc tính đó. Và trên li (s) bên trong thay vì sử dụng thuộc tính màu nền thay vì thuộc tính của nền cho riêng màu nền.
yveslebeau

67

Câu trả lời là không.

Sai

.class {
    background-color: none; /* do not do this */
}

Chính xác

.class {
    background-color: transparent;
}

background-color: transparenthoàn thành điều tương tự những gì bạn muốn làm với background-color: none.


7
.class {
    background-color:none;
}

Đây không phải là một tài sản hợp lệ. Trình xác nhận W3C sẽ hiển thị lỗi sau:

Lỗi giá trị: không có màu nền không phải là giá trị màu nền: none

transparentcó thể đã được chọn là thuật ngữ tốt hơn thay vì 0hoặc nonecác giá trị trong quá trình phát triển đặc tả CSS.


2
Và điều này lặp lại những gì James nói cách đây hai năm rưỡi, nhưng ở dạng không cắt và có thể dán được. ; ^)
ruffin

6

CSS Cấp 3 chỉ định unsetgiá trị thuộc tính. Từ MDN :

Từ khóa CSS không được đặt là sự kết hợp của các từ khóa ban đầu và kế thừa. Giống như hai từ khóa toàn CSS này, nó có thể được áp dụng cho bất kỳ thuộc tính CSS nào, bao gồm cả tốc ký CSS. Từ khóa này đặt lại thuộc tính về giá trị được kế thừa của nó nếu nó kế thừa từ cha mẹ của nó hoặc thành giá trị ban đầu nếu không. Nói cách khác, nó hoạt động giống như từ khóa kế thừa trong trường hợp đầu tiên và giống như từ khóa ban đầu trong trường hợp thứ hai.

Thật không may, giá trị này hiện không được hỗ trợ trong tất cả các trình duyệt, bao gồm IE, Safari và Opera. Tôi đề nghị sử dụng transparenttrong thời gian này.


3

ghi chép lại cái đó:

.class {
background-color:transparent;
}

2
Vui lòng giải thích mã của bạn và cách nó giúp giải quyết vấn đề! - Từ đánh giá
Luca Kiebel

Đồng ý. màu nền là một thuộc tính css và giống như mọi thuộc tính css có thể có một số giá trị hợp lệ và không hợp lệ. giá trị hợp lệ cho màu nền có thể là một trong các định dạng dưới đây: # 5f9 hoặc # 56f293 hoặc trong suốt. trong suốt có nghĩa là bạn muốn null hoặc không có màu nền.
Abolfazl Miadian

1
wow - 6 năm sau câu hỏi (và câu trả lời) bạn trả lời bằng một bản sao?
NarfkX

thời gian hỏi không quan trọng vì mỗi ngày một số người truy cập trang này hoặc trang cũ khác để tìm câu trả lời. Tôi nghĩ cú pháp trả lời của tôi rõ ràng hơn!
Abolfazl Miadian

1

Vì vậy, tôi muốn giải thích về kịch bản mà tôi phải sử dụng giải pháp này. Về cơ bản, tôi muốn hoàn tác thuộc tính màu nền được đặt bởi một CSS khác. Kết quả cuối cùng dự kiến ​​là làm cho nó trông như thể CSS ban đầu chưa bao giờ áp dụng thuộc tính màu nền. Thiết lập background-color:transparent;làm cho hiệu quả.


1
Tôi đang tìm thấy nền đó: trong suốt không hoạt động đối với tôi để ghi đè màu nền được đặt bởi một css khác. Nếu tôi chọn nền: đỏ; ví dụ - điều đó sẽ làm việc Nhưng nền: minh bạch; đang cho phép màu nền css khác vẫn còn. Bất kỳ ý tưởng làm thế nào để ngăn chặn điều đó?
Joel phụ trợ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.