เนื้อหาหลายประเภทเหมาะที่จะแสดงเป็นรายการ HTML สำหรับเนื้อหาในรายการที่เรียงลำดับ เช่น ขั้นตอนการทำอาหารหรือเชิงอรรถของบทความ เครื่องหมายมักจะมีข้อมูลด้วย CSS มีหลายวิธีในการควบคุมตัวนับในรายการ
รูปแบบรายการ
มีรูปแบบรายการที่กำหนดไว้ล่วงหน้าหลากหลายประเภทที่รองรับตัวเลข ตัวอักษร ตัวเลขโรมัน และระบบการนับหลายระบบทั่วโลก
นอกจากสไตล์ที่เบราว์เซอร์รองรับแล้ว W3C ยังได้เผยแพร่รูปแบบตัวนับสำเร็จรูปที่รองรับรูปแบบเพิ่มเติมอีก 181 รูปแบบในระบบการเขียน 45 ระบบ
หากตัวเลือกเหล่านี้ไม่ตรงกับความต้องการ คุณยังกําหนด@counter-style
ที่กําหนดเองได้ด้วย ซึ่งช่วยให้คุณระบุสัญลักษณ์ที่กำหนดเอง คำนำหน้าและคำต่อท้าย และอื่นๆ ได้
โดยค่าเริ่มต้น เครื่องหมายรายการจะอยู่outside
ในรายการ วางไว้หน้าลิสต์ และจัดชิดขวา นอกจากนี้ คุณยังวางเครื่องหมายรายการไว้ในรายการได้ด้วย list-style-position: inside
ตัวนับ
แม้ว่ารูปแบบรายการจะควบคุมวิธีแสดงเครื่องหมายรายการ แต่ตัวนับจะช่วยให้คุณควบคุมค่าที่จะแสดงได้ สำหรับองค์ประกอบรายการ <li>
เบราว์เซอร์จะสร้างตัวนับชื่อ list-item
ซึ่งจะเพิ่มขึ้นทีละ 1 สำหรับแต่ละรายการที่พบ
ตัวนับ CSS จะนับจำนวนครั้งที่แสดงผลองค์ประกอบที่มีการตั้งค่า counter-increment
ที่สอดคล้องกัน
หากต้องการสร้างตัวนับใหม่ ให้ใช้ counter-reset
พร้อมชื่อตัวนับและค่าเริ่มต้น (ไม่บังคับ) โดยมักจะตั้งค่านี้ในองค์ประกอบระดับบนสุดซึ่งมีองค์ประกอบทั้งหมดที่จะนับ
จากนั้นเพิ่มพร็อพเพอร์ตี้ counter-increment
ในแต่ละองค์ประกอบที่คุณต้องการนับ
สุดท้าย ให้แสดงค่าตัวนับโดยใช้ฟังก์ชัน counter()
ในตัวอย่างนี้ เราต้องการแสดงจำนวนเชิงสะสมของเชิงอรรถเป็นข้อความลิงก์สำหรับเชิงอรรถแต่ละรายการ เนื่องจากเราต้องการตัวนับเดียวสำหรับทั้งเอกสาร เราจึงตั้งค่า counter-reset: note
ในส่วนเนื้อหา และเพิ่มค่าในลิงก์เชิงอรรถแต่ละลิงก์
นอกจากนี้ คุณยังมีเคาน์เตอร์หลายตัวที่นับรายการต่างๆ ได้ด้วย ในตัวอย่างเชิงอรรถ จะเกิดอะไรขึ้นหากคุณต้องการแสดงดัชนีของส่วนและย่อหน้าที่เชิงอรรถอยู่
คุณสร้างจำนวนส่วนในเนื้อหาได้โดยใช้ counter-reset
จากนั้นเพิ่มจำนวนในองค์ประกอบ <h2>
แต่ละรายการ เราต้องการให้ระบบรีเซ็ตจำนวนย่อหน้าสำหรับแต่ละส่วน ดังนั้นเราจะใช้ counter-reset
ในองค์ประกอบ <h2>
และเพิ่มในองค์ประกอบ <p>
สุดท้าย เราจะรวมค่าตัวนับในพร็อพเพอร์ตี้ content
a:after {
content: "(S" counter(section) "P" counter(paragraph) "N" counter(note) ")";
font-size: small;
vertical-align: super;
}
ตัวนับที่ซ้อนกัน
จะเกิดอะไรขึ้นเมื่อคุณซ้อนรายการไว้ในรายการ ระบบจะเริ่มต้นตัวนับ list-item
สำหรับองค์ประกอบ <ul>
หรือ <ol>
แต่ละรายการ และการใช้ counter()
จะแสดงเฉพาะจำนวนการนับที่อยู่ด้านในสุด หากต้องการแสดงจำนวนจากตัวนับที่ซ้อนกันแต่ละตัว ให้ใช้ฟังก์ชัน counters()
ซึ่งรับชื่อตัวนับและตัวคั่น
li::marker {
content: counters(list-item, ".")
}
การย้อนกลับเคาน์เตอร์
โดยค่าเริ่มต้น ตัวนับ (รวมถึงตัวนับ list-item
โดยนัยสำหรับองค์ประกอบ <ol>
) จะเริ่มต้นที่ 0 และเพิ่มขึ้นทีละ 1 สำหรับแต่ละองค์ประกอบ ซึ่งหมายความว่าองค์ประกอบแรกจะนับเป็น 1 จะเกิดอะไรขึ้นหากคุณต้องการนับถอยหลังไปจนถึง 1
โดยให้เพิ่มแอตทริบิวต์ reversed
ลงใน <ol>
หากคุณใช้รูปแบบรายการมาตรฐาน เครื่องหมายจะทำงานตามที่คาดไว้ อย่างไรก็ตาม หากใช้ตัวนับที่กําหนดเอง คุณจะต้องตั้งค่า counter-increment
เป็นค่าลบ และคํานวณค่าเริ่มต้นสําหรับตัวนับด้วยตนเอง