:lang()

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Lớp giả CSS :lang() khớp với các phần tử dựa trên ngôn ngữ được xác định cho chúng.

Try it

*:lang(en-US) {
  outline: 2px solid deeppink;
}
<p lang="vi">
  Music during road trips and long commutes aren't a problem, but using
  headphones isn't the best thing to do while driving in your car.
</p>

<p lang="pl-PL">
  Gdy widzimy znak z narysowaną czaszką i napisem
  <strong lang="vi">DANGER</strong> to lepiej nie wchodzić do środka.
</p>

Note: Trong HTML, ngôn ngữ được xác định bởi tổ hợp thuộc tính lang, phần tử <meta>, và có thể là thông tin từ giao thức (chẳng hạn các HTTP header). Với các loại tài liệu khác, có thể có những phương pháp tài liệu khác để xác định ngôn ngữ.

Cú pháp

:lang(<language-code> [,<language-code> ]*) {
  /* ... */
}

Tham số

<language-code>

Danh sách phân cách bằng dấu phẩy gồm một hoặc nhiều <string> nhắm đến các phần tử dựa trên các thẻ ngôn ngữ BCP 47 được đặt trong thuộc tính lang của chúng. Khớp theo phạm vi ngôn ngữ không phân biệt chữ hoa/thường.

Mô tả

Khi chọn ngôn ngữ, có khớp wildcard ngầm định, vì vậy :lang(de-DE) sẽ khớp với de-DE, de-DE-1996, de-Latn-DE, de-Latf-DEde-Latn-DE-1996. Khi dùng wildcard tường minh phải bao gồm khớp đầy đủ của một subtag ngôn ngữ, vì vậy :lang("*-F*") không hợp lệ nhưng :lang("*-Fr") thì hợp lệ.

Ví dụ

Khớp các phần tử con của một ngôn ngữ nhất định

Trong ví dụ này, lớp giả :lang() được dùng để khớp với phần tử cha của các phần tử trích dẫn (<q>) dùng bộ kết hợp con. Lưu ý rằng đây không phải cách duy nhất để làm điều này, và phương pháp tốt nhất phụ thuộc vào loại tài liệu. Cũng lưu ý rằng các giá trị Unicode được dùng để chỉ định một số ký tự trích dẫn đặc biệt.

HTML

html
<div lang="vi">
  <q>This English quote has a <q>nested</q> quote inside.</q>
</div>
<div lang="fr">
  <q>This French quote has a <q>nested</q> quote inside.</q>
</div>
<div lang="de">
  <q>This German quote has a <q>nested</q> quote inside.</q>
</div>

CSS

css
:lang(en) > q {
  quotes: "\201C" "\201D" "\2018" "\2019";
}
:lang(fr) > q {
  quotes: "« " " »";
}
:lang(de) > q {
  quotes: "»" "«" "\2039" "\203A";
}

Kết quả

Khớp nhiều ngôn ngữ

Ví dụ sau đây minh họa cách khớp nhiều ngôn ngữ bằng cách cung cấp danh sách mã ngôn ngữ phân cách bằng dấu phẩy. Cũng có thể dùng wildcard để khớp các ngôn ngữ trong một phạm vi ngôn ngữ nhất định.

CSS

css
/* Matches nl and de */
:lang("nl", "de") {
  color: green;
}

/* Omitting quotes & case-insensitive matching */
:lang(EN, FR) {
  color: blue;
}

/* Wildcard matching a language range */
:lang("*-Latn") {
  color: red;
}

HTML

html
<p lang="nl">Dit is een Nederlandse paragraaf.</p>
<p lang="de">Dies ist ein deutscher Satz.</p>
<p lang="vi">This is an English sentence.</p>
<p lang="en-GB">Matching the language range of English.</p>
<p lang="fr">Ceci est un paragraphe français.</p>
<p lang="fr-Latn-FR">Ceci est un paragraphe français en latin.</p>

Kết quả

Đặc tả

Specification
Selectors Level 4
# lang-pseudo

Tương thích trình duyệt

Xem thêm