ทำไม: nth-child () วนซ้ำจากหนึ่งแทนที่จะเป็นศูนย์
ดังที่แสดงในตัวอย่างนี้ เหตุใดจึงเลือกองค์ประกอบแรกและไม่ใช่องค์ประกอบที่สองเมื่อ
p :nth-child(1)
ทำไม: nth-child () วนซ้ำจากหนึ่งแทนที่จะเป็นศูนย์
ดังที่แสดงในตัวอย่างนี้ เหตุใดจึงเลือกองค์ประกอบแรกและไม่ใช่องค์ประกอบที่สองเมื่อ
p :nth-child(1)
คำตอบ:
หากคุณนับลูกของคุณเองคุณจะพูดว่า "ลูกคนแรกของฉัน", "ลูกคนที่สองของฉัน" และอื่น ๆ ไม่ใช่ "ลูกคนที่รักฉัน" นี่เป็นเพียงวิธีที่มนุษย์นับ (หมายเหตุ: นี่ไม่ใช่ความเห็นส่วนตัวของฉันนี่เป็นวิธีการทำงานของเลขลำดับ )
เหตุผลที่คุณถามคำถามนี้อาจเป็นเพราะคุณเป็นโปรแกรมเมอร์และหลาย ๆ ภาษาที่เขียนโปรแกรมทำดัชนีอาเรย์และรายการจาก 0 สาเหตุของเรื่องนี้ก็คือในภาษาระดับต่ำเช่น C, อาเรย์เป็นตัวชี้ไปยังที่อยู่หน่วยความจำ ของรายการแรกและดัชนีเป็นออฟเซ็ตที่สัมพันธ์กับตัวชี้นี้ ดังนั้นarray[0]
หมายถึงที่อยู่ของรายการแรกarray[1]
หมายถึงที่อยู่ของรายการแรกบวกขนาด 1 รายการเช่นรายการที่สองเป็นต้น
ภาษาระดับสูงขึ้นจำนวนมากที่ไม่สนับสนุนการคำนวณทางคณิตศาสตร์โดยตรงได้เก็บดัชนีที่เป็น 0 ไว้เพื่อความสอดคล้องและความคุ้นเคย ตัวอย่างเช่นทุกภาษาที่มีไวยากรณ์ที่ได้จาก C - รวมถึง JavaScript แม้ว่าอาร์เรย์ใน JavaScript จะมีการใช้งานในวิธีที่แตกต่างกันโดยสิ้นเชิง แต่นี่ไม่ใช่ภาษาสากล - ภาษาเช่น COBOL, Fortran, Lua และการใช้ดัชนีพื้นฐานแบบพื้นฐาน 1 รายการ (Visual Basic นั้นเลือกที่เลวร้ายที่สุดของทั้งสองโลกโดยทำให้สามารถกำหนดค่าได้) ดังนั้นจึงไม่เหมือนกับภาษาอื่น ๆ ที่ใช้การจัดทำดัชนีแบบ 0 สำหรับสิ่งที่คุ้มค่า XPath และ XQuery ยังใช้การจัดทำดัชนีแบบ 1
ในขณะที่โปรแกรมเมอร์ส่วนใหญ่จะคุ้นเคยกับการจัดทำดัชนีทั้งที่ 1 และ 0 คนทั่วไปจะนับจาก 1 ตามปกติและ CSS เป็นภาษาที่ออกแบบมาไม่เพียง แต่สำหรับโปรแกรมเมอร์ แต่สำหรับนักออกแบบและมืออาชีพด้านกราฟิกดังนั้นจึงเป็นเรื่องธรรมดาที่จะเลือกการจัดทำดัชนี .
จากข้อมูลจำเพาะตัวเลือก CSS ระดับ 3 :
6.6.5.2 : nth-child () pseudo-class
:nth-child(an+b)
สัญกรณ์หลอกชั้นแสดงให้เห็นถึงองค์ประกอบที่มีan+b-1
พี่น้องก่อนที่มันจะอยู่ในต้นไม้เอกสารสำหรับจำนวนเต็มบวกใด ๆ หรือค่าเป็นศูนย์ของn
และมีองค์ประกอบของผู้ปกครอง สำหรับค่าa
และb
มากกว่าศูนย์นี้ได้อย่างมีประสิทธิภาพแบ่งเด็กองค์ประกอบที่เป็นกลุ่มของa
องค์ประกอบ (กลุ่มสุดท้ายที่เหลือการ) และการเลือกb
องค์ประกอบ TH ของแต่ละกลุ่ม ตัวอย่างเช่นตัวเลือกนี้จะอนุญาตให้ที่อยู่ทุก ๆ แถวในตารางและสามารถใช้เพื่อสลับสีของข้อความในย่อหน้าในรอบสี่a
และb
ค่าต้องจำนวนเต็ม (บวกลบหรือศูนย์) ดัชนีของลูกคนแรกขององค์ประกอบคือ 1
มันมีรายละเอียดมากขึ้นพร้อมตัวอย่าง ดูเหมือนว่าการคำนวณสุดท้ายของan+b
ผลรวมต้องเป็นจำนวนบวก
เมื่อ
a
= 0 ชิ้นส่วนไม่จำเป็นต้องรวม (ยกเว้นb
ส่วนนั้นถูกละเว้น) เมื่อan
ไม่รวมและb
ไม่เป็นลบเครื่องหมาย + ก่อนหน้าb
(เมื่อได้รับอนุญาต) อาจถูกละเว้น ในกรณีนี้ไวยากรณ์ง่าย:nth-child(b)
ขึ้นหากทั้งสอง
a
และb
มีค่าเท่ากับศูนย์หลอกระดับหมายถึงไม่มีองค์ประกอบในต้นไม้เอกสาร
การจัดรูปแบบเพิ่มเติมในวรรคสุดท้ายเป็นสิ่งที่เราต้องเน้น
อาจสอดคล้องกับ XPath ภาษาการประมวลผล XML / HTML อื่น คำถามใดที่ XPath ใช้การจัดทำดัชนีตาม 1
ดู/programming/3319341/why-do-indexes-in-xpath-start-with-1-and-not-0
ที่เกี่ยวข้อง (แต่อ้างแย้ง) คือ:
"... ตรรกะแบบอิง 1 ตัวเป็นทางเลือกที่ถูกต้องสำหรับ XPath และ XSLT ... เนื่องจากภาษาได้รับการออกแบบสำหรับผู้ใช้ไม่ใช่สำหรับโปรแกรมเมอร์และผู้ใช้ยังคงมีนิสัยที่ล้าสมัยในการอ้างถึงบทแรกในหนังสือว่า บทที่หนึ่ง..."