light-dark()
Baseline
2024
Newly available
Since May 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Hàm CSS <color> function light-dark() cho phép đặt hai màu cho một thuộc tính - trả về một trong hai màu tùy chọn bằng cách phát hiện xem nhà phát triển đã đặt bố cục màu sáng hay tối, hoặc người dùng đã yêu cầu chủ đề màu sáng hay tối - mà không cần bao bọc màu chủ đề trong truy vấn media feature prefers-color-scheme.
Người dùng có thể chỉ định tùy chọn bố cục màu của mình thông qua cài đặt hệ điều hành (ví dụ: chế độ sáng hoặc tối) hoặc cài đặt user agent. Hàm light-dark() cho phép cung cấp hai giá trị màu trong đó bất kỳ giá trị <color> nào đều được chấp nhận. Hàm màu CSS light-dark() trả về giá trị đầu tiên nếu tùy chọn của người dùng được đặt thành light hoặc không có tùy chọn nào được đặt, và giá trị thứ hai nếu tùy chọn của người dùng được đặt thành dark.
Để bật hỗ trợ cho hàm màu light-dark(), color-scheme phải có giá trị light dark, thường được đặt trên lớp giả :root.
:root {
color-scheme: light dark;
}
body {
color: light-dark(#333b3c, #efefec);
background-color: light-dark(#efedea, #223a2c);
}
Cú pháp
/* Giá trị màu có tên */
color: light-dark(black, white);
/* Giá trị màu RGB */
color: light-dark(rgb(0 0 0), rgb(255 255 255));
/* Thuộc tính tùy chỉnh */
color: light-dark(var(--light), var(--dark));
Giá trị
Ký hiệu hàm: light-dark(light-color, dark-color)
light-color-
Giá trị
<color>được đặt chocolor-schemesáng. dark-color-
Giá trị
<color>được đặt chocolor-schemetối.
Cú pháp chính thức
<light-dark()> =
<light-dark-color> |
<light-dark-image>
<light-dark-color> =
light-dark( <color> , <color> )
<light-dark-image> =
light-dark( [ <image> | none ] , [ <image> | none ] )
<image> =
<url> |
<image()> |
<image-set()> |
<cross-fade()> |
<element()> |
<gradient>
<image()> =
image( <image-tags>? [ <image-src>? , <color>? ]! )
<image-set()> =
image-set( <image-set-option># )
<cross-fade()> =
cross-fade( <cf-image># )
<element()> =
element( <id-selector> )
<image-tags> =
ltr |
rtl
<image-src> =
<url> |
<string>
<image-set-option> =
[ <image> | <string> ] [ <resolution> || type( <string> ) ]?
<cf-image> =
[ <image> | <color> ] &&
<percentage [0,100]>?
<id-selector> =
<hash-token>
Ví dụ
>Đặt màu dựa trên bố cục màu
Theo mặc định, trong các trình duyệt hỗ trợ, màu trả về bởi hàm màu light-dark() phụ thuộc vào tùy chọn người dùng được đặt thông qua cài đặt hệ điều hành (ví dụ: chế độ sáng hoặc tối) hoặc từ cài đặt user agent. Bạn cũng có thể thay đổi cài đặt này trong developer tools của trình duyệt.
HTML
Chúng ta bao gồm ba phần để có thể nhắm mục tiêu màu sáng, màu tối và màu được chọn dựa trên tùy chọn bố cục màu của người dùng.
<h1><code>light-dark()</code> CSS function</h1>
<section>
<h2>Automatic</h2>
<p>This section will react to the users system or user agent setting.</p>
</section>
<section class="light">
<h2>Light</h2>
<p>
This section will be light due to the <code>color-scheme: light;</code>.
</p>
</section>
<section class="dark">
<h2>Dark</h2>
<p>This section will be dark due to the <code>color-scheme: dark;</code>.</p>
</section>
CSS
Chúng ta bao gồm màu cho cả chủ đề sáng và tối. Chúng ta cũng định nghĩa color-scheme cho tài liệu trên :root để bật hàm màu light-dark() cho toàn bộ tài liệu.
:root {
/* this has to be set to switch between light or dark */
color-scheme: light dark;
--light-bg: ghostwhite;
--light-color: darkslategray;
--light-code: tomato;
--dark-bg: darkslategray;
--dark-color: ghostwhite;
--dark-code: gold;
}
* {
background-color: light-dark(var(--light-bg), var(--dark-bg));
color: light-dark(var(--light-color), var(--dark-color));
}
code {
color: light-dark(var(--light-code), var(--dark-code));
}
Ngoài việc bật hàm light-dark(), thuộc tính color-scheme còn cho phép ghi đè bố cục màu của người dùng cho các phần của tài liệu. Việc buộc một phần trang chỉ sử dụng bố cục màu sáng hoặc tối có thể được thực hiện bằng cách đặt thuộc tính color-scheme thành light hoặc dark.
Note: Nói chung, điều này không nên được thực hiện; chúng tôi sử dụng nó ở đây cho mục đích minh họa. Nếu người dùng đã đặt tùy chọn, bạn thường không nên ghi đè tùy chọn của họ.
.light {
/* forces light color-scheme */
color-scheme: light;
}
.dark {
/* forces dark color-scheme */
color-scheme: dark;
}
Kết quả
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| CSS Color Module Level 5> # light-dark> |
Khả năng tương thích trình duyệt
Xem thêm
color-scheme<color>- Mô-đun CSS colors
- Tính năng
prefers-contrast@media contrast()- WCAG: color contrast
- Thuộc tính tùy chỉnh CSS và
var()