Danh sách—tất cả chúng ta đã làm việc với chúng ở dạng này hay dạng khác. Tôi đang nói về HTML
và
. Phần lớn thời gian, vì chúng tôi muốn kiểm soát kiểu dáng, chúng tôi tắt hoàn toàn các điểm đánh dấu của danh sách bằng list-style-type: none
và bắt đầu tạo kiểu từ đó. Những lần khác, chúng tôi chọn từ một tập hợp rất hạn chế các điểm đánh dấu danh sách không có thứ tự, chẳng hạn như disc
, circle
hoặc square
; . Đôi khi, chúng tôi thậm chí có thể cung cấp URL của một hình ảnh sẽ được sử dụng
Nhưng nếu chúng ta muốn tạo kiểu cho các điểm đánh dấu khác với nội dung của các mục trong danh sách thì sao? . Bây giờ, nhờ phần tử giả ::marker
, mọi việc trở nên dễ dàng hơn rất nhiều. Bạn không có đầy đủ các CSS để áp dụng cho các điểm đánh dấu, nhưng vẫn có rất nhiều điều có thể làm được
::marker
có sẵn trong Firefox và nhờ công việc của Igalia, Chrome cũng vậy
Xem xét danh sách này
Dự phòng nhúng CodePen
Theo mặc định, điều đó sẽ tạo ra một danh sách theo thứ tự được đánh số từ 1 đến 5, sử dụng các chữ số Ả Rập [1, 2, 3, v.v. ], mỗi dấu theo sau là một dấu chấm [dấu chấm], tất cả các dấu chấm này sẽ khớp với nội dung văn bản về phông chữ, kích thước, kiểu dáng, màu sắc, v.v.
Nếu bạn có hướng thiết kế yêu cầu làm cho các số nhỏ hơn hoặc có màu khác, thì bạn phải tạo hiệu ứng đó theo cách thủ công bằng cách loại bỏ các điểm đánh dấu và sử dụng bộ đếm CSS và phần tử giả ::before
cũng như thụt lề văn bản phủ định và… tốt, nó sẽ
Nhập ::marker
. Thêm các kiểu này vào danh sách trên và bạn sẽ nhận được kết quả hiển thị sau
Dự phòng nhúng CodePen
Đó là tất cả những gì bạn cần
Tuy nhiên, trước khi bạn bắt đầu viết lại tất cả CSS của mình, hãy cẩn thận. các tài sản bạn có thể đăng ký qua ::marker
hiện tại khá hạn chế. Kể từ tháng 2 năm 2021, các thuộc tính mà điểm đánh dấu sẽ nhận ra là
- Tất cả các thuộc tính phông chữ [
2,
3, v.v. ] - Tài sản
4 - Tài sản
5 - Tính chất quốc tế hóa
6,
7, và
8 - Tài sản
9 - Tất cả các thuộc tính hoạt ảnh và chuyển tiếp
Có một số bổ sung trong một số trình duyệt, nhưng hầu như tất cả các bổ sung đều liên quan đến kiểu dáng văn bản, không phải mô hình hộp. Vì vậy, nếu bạn đang nghĩ rằng bạn có thể đặt tất cả các số trong danh sách của mình vào các vòng kết nối có nền bóng mờ, thì ::marker
sẽ không đưa bạn đến đó—bạn sẽ phải quay lại cuộc tấn công của nội dung được tạo bởi ::before
. Hiện tại, dù sao đi nữa. đặc điểm kỹ thuật nhiều thuộc tính hơn có thể được phép cho ::marker
trong tương lai
Ngoài ra còn có một hạn chế xung quanh
4, có lỗi kết xuất trong các trình duyệt khác nhau. Ví dụ: Chrome coi tất cả khoảng trắng trong điểm đánh dấu là
4 như thông số kỹ thuật cho biết, nhưng sẽ không cho phép bạn thay đổi nó. Điều này sẽ được khắc phục khi LayoutNG [Thế hệ tiếp theo] của Chrome xuất xưởng, nhưng phải đến lúc đó. Mặt khác, Firefox bỏ qua mọi giá trị
4 và xử lý khoảng trắng như văn bản dòng chảy bình thường theo mặc định
Với những giới hạn đó, bạn vẫn có thể cải thiện điểm đánh dấu của mình bằng thuộc tính
9. Thay vì các số theo sau bởi dấu chấm, bạn có thể đặt từng số trong ngoặc với sự kết hợp của bộ đếm và chuỗi
Dự phòng nhúng CodePen
Lưu ý khoảng trắng sau dấu ngoặc đóng trong giá trị
9. Điều đó được bao gồm để cung cấp một chút không gian giữa điểm đánh dấu và nội dung danh sách. Thông thường, bạn có thể nghĩ đến việc sử dụng dấu hoặc phần đệm, nhưng như chúng ta đã thấy trước đó, những thuộc tính đó không thể được áp dụng với ::marker
. Đó là bực bội. Cũng lưu ý bộ đếm CSS
9. Điều đó không được định nghĩa ở bất kỳ nơi nào khác trong CSS—đó là một bộ đếm tích hợp sẵn mà tất cả các trình duyệt [hiểu bộ đếm CSS] sử dụng để đếm các mục danh sách, chẳng hạn như các mục trong danh sách có thứ tự. Bạn cũng có thể sử dụng nó trong CSS của mình
Nếu tất cả những gì bạn muốn làm là thay đổi nội dung văn bản của một điểm đánh dấu danh sách và không quan tâm đến việc thay đổi bất kỳ kiểu nào của nó, bạn có thể làm điều đó với ::marker
hoặc bạn có thể làm điều đó với hỗ trợ nhiều trình duyệt mới cho các giá trị chuỗi trên
li.warning {
list-style-type:"⚠";
}
Dự phòng nhúng CodePen
Vì vậy, đó là những gì mới trong thế giới đánh dấu danh sách. Đó có thể không phải là điều bạn cần làm thường xuyên, nhưng nếu bạn đã từng làm, thì thật tốt khi biết rằng các khả năng trong lĩnh vực này đã tăng lên và sẽ còn tốt hơn nữa trong tương lai. Hãy cho chúng tôi biết nếu bạn nghĩ ra một số điểm đánh dấu thông minh
Bạn đã đề cập rằng bạn muốn đưa chúng vào li
[tôi cho rằng bạn muốn một li
trên mỗi string
ở đây] vì vậy [có các li
bên trong một
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
0], nhìn chung bạn sẽ thấy đại loại như
itemToLi : MyItemType -> HTML msg
itemToli item =
H.li [] [ ... ]
...
H.ul [] [items |> List.map itemToLi]
trong trường hợp của bạn, điều này sẽ hiệu quả khi các mặt hàng của bạn là
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
1
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
xin lưu ý rằng điều này sẽ cho biết
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
2 là một chức năng từ loại vật phẩm của bạn thành bất kỳ
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
3 nào - điều này có thể ổn và cho biết rằng chức năng này hoạt động theo nghĩa rất rộngNhưng thông thường, bạn sẽ muốn loại
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
4 cụ thể của mình và có thể khó hiểu khi thấy các lỗi
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
4 so với
itemToLi : String -> HTML msg
itemToli item =
H.li [] [ H.text item ]
...
H.ul [] [items |> List.map itemToLi]
3