counters()
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.
Hàm counters() trong CSS cho phép kết hợp các marker khi lồng bộ đếm. Hàm trả về một chuỗi nối các giá trị hiện tại của các bộ đếm được đặt tên và lồng nhau, nếu có, với chuỗi được cung cấp. Tham số thứ ba tùy chọn cho phép định nghĩa kiểu danh sách.
Hàm counters() thường được sử dụng trong pseudo-element thông qua thuộc tính content, nhưng về lý thuyết, nó có thể được sử dụng ở bất kỳ đâu mà giá trị <string> được hỗ trợ.
Hàm counters() có hai dạng: counters(<name>, <string>) và counters(<name>, <string>, <style>). Văn bản được tạo ra là giá trị của tất cả các bộ đếm có <name> đã cho, được sắp xếp từ ngoài cùng đến trong cùng, được phân tách bằng <string> được chỉ định. Các bộ đếm được hiển thị theo <style> được chỉ định, mặc định là decimal nếu không có <style> nào được chỉ định.
Try it
ol {
counter-reset: index;
list-style-type: none;
}
li::before {
counter-increment: index;
content: counters(index, ".", decimal) " ";
}
<ol>
<li>Mars</li>
<li>
Saturn
<ol>
<li>Mimas</li>
<li>Enceladus</li>
<li>
<ol>
<li>Voyager</li>
<li>Cassini</li>
</ol>
</li>
<li>Tethys</li>
</ol>
</li>
<li>
Uranus
<ol>
<li>Titania</li>
</ol>
</li>
</ol>
Cú pháp
/* Sử dụng cơ bản - kiểu mặc định là decimal */
counters(counter-name, '.');
/* thay đổi hiển thị bộ đếm */
counters(counter-name, '-', upper-roman)
Bản thân bộ đếm không có hiệu ứng hiển thị. Hàm counters() (và hàm counter()) là thứ làm cho nó hữu ích bằng cách trả về nội dung do nhà phát triển định nghĩa.
Giá trị
Hàm counters() chấp nhận hai hoặc ba tham số. Tham số đầu tiên là <counter-name>. Tham số thứ hai là <string> nối. Tham số thứ ba tùy chọn là <counter-style>.
<counter-name>-
Một
<custom-ident>xác định các bộ đếm, là cùng tên phân biệt chữ hoa chữ thường được sử dụng cho các thuộc tínhcounter-resetvàcounter-increment. Tên không thể bắt đầu bằng hai dấu gạch ngang và không thể lànone,unset,initial, hoặcinherit. Ngoài ra, đối với các bộ đếm nội tuyến dùng một lần, hàmsymbols()có thể được sử dụng thay vì bộ đếm được đặt tên trong các trình duyệt hỗ trợsymbols(). <string>-
Bất kỳ số lượng ký tự văn bản nào. Các ký tự không phải Latin phải được mã hóa bằng các chuỗi thoát Unicode của chúng: ví dụ,
\000A9đại diện cho ký hiệu bản quyền. <counter-style>-
Tên kiểu bộ đếm hoặc hàm
symbols(). Tên kiểu bộ đếm có thể là kiểu được định nghĩa trước như numeric, alphabetic, hoặc symbolic, kiểu được định nghĩa trước phức tạp như East Asian hoặc Ethiopic, hoặc kiểu bộ đếm được định nghĩa trước khác. Nếu bỏ qua, kiểu bộ đếm mặc định là decimal.
Giá trị trả về là một chuỗi chứa tất cả các giá trị của tất cả các bộ đếm trong tập hợp bộ đếm CSS của phần tử có tên <counter-name> theo kiểu bộ đếm được định nghĩa bởi <counter-style> (hoặc decimal, nếu bỏ qua). Chuỗi trả về được sắp xếp theo thứ tự từ ngoài cùng đến trong cùng, được nối bằng <string> được chỉ định.
Note:
Để biết thông tin về các bộ đếm không được nối, xem hàm counter(), hàm này bỏ qua <string> làm tham số.
Cú pháp hình thức
<counters()> =
counters( <counter-name> , <string> , <counter-style>? )
<counter-name> =
<custom-ident>
<counter-style> =
<counter-style-name> |
<symbols()>
<counter-style-name> =
<custom-ident>
<symbols()> =
symbols( <symbols-type>? [ <string> | <image> ]+ )
<symbols-type> =
cyclic |
numeric |
alphabetic |
symbolic |
fixed
<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ụ
>So sánh giá trị bộ đếm mặc định với chữ số La Mã viết hoa
Ví dụ này bao gồm hai hàm counters(): một với <counter-style> được đặt và một mặc định là decimal.
HTML
<ol>
<li>
<ol>
<li></li>
<li></li>
<li></li>
</ol>
</li>
<li></li>
<li></li>
<li>
<ol>
<li></li>
<li>
<ol>
<li></li>
<li></li>
<li></li>
</ol>
</li>
</ol>
</li>
</ol>
CSS
ol {
counter-reset: listCounter;
}
li {
counter-increment: listCounter;
}
li::marker {
content:
counters(listCounter, ".", upper-roman) ") ";
}
li::before {
content:
counters(listCounter, ".") " == "
counters(listCounter, ".", lower-roman);
}
Kết quả
So sánh giá trị bộ đếm decimal-leading-zero với chữ thường
Ví dụ này bao gồm ba hàm counters(), mỗi hàm với các giá trị <string> và <counter-style> khác nhau.
HTML
<ol>
<li>
<ol>
<li></li>
<li></li>
<li></li>
</ol>
</li>
<li></li>
<li></li>
<li>
<ol>
<li></li>
<li>
<ol>
<li></li>
<li></li>
<li></li>
</ol>
</li>
</ol>
</li>
</ol>
CSS
ol {
counter-reset: count;
}
li {
counter-increment: count;
}
li::marker {
content:
counters(count, "-", decimal-leading-zero) ") ";
}
li::before {
content:
counters(count, "~", upper-alpha) " == "
counters(count, "*", lower-alpha);
}
Kết quả
Thông số kỹ thuật
| Specification |
|---|
| CSS Lists and Counters Module Level 3> # counter-functions> |
| CSS Counter Styles Level 3> # extending-css2> |
Khả năng tương thích trình duyệt
Xem thêm
- Sử dụng CSS Counters
- Thuộc tính
counter-set - Thuộc tính
counter-reset - Thuộc tính
counter-increment - At-rule
@counter-style - Hàm CSS
counter() - Pseudo-element
::marker - Mô-đun CSS lists and counters
- Mô-đun CSS counter styles
- Mô-đun CSS generated content