Contents

ทำความเข้าใจกับตัวเลือก CSS:nth-child()

เช่นเดียวกับตัวเลือก CSS ทั้งหมด คุณสามารถใช้:nth-child() เพื่อระบุองค์ประกอบในหน้าเว็บและนำสไตล์ไปใช้กับองค์ประกอบเหล่านั้น แต่ตัวเลือกนี้ช่วยให้คุณจำกัดกลุ่มพี่น้องให้แคบลงตามตำแหน่งที่สัมพันธ์กัน

ตัวเลือกนำเสนอทั้งตัวเลือกคำหลักพื้นฐานและไวยากรณ์ตามรูปแบบขั้นสูงเพื่อรองรับข้อกำหนดต่างๆ คุณสามารถเลือกจากตัวเลือกง่ายๆ ที่ยึดตามรูปแบบที่เกิดซ้ำ หรือใช้ข้อกำหนดเฉพาะที่ซับซ้อนเพื่อตอบสนองความต้องการเฉพาะของคุณ

ไวยากรณ์ตัวเลือก:nth-child()

ในฐานะตัวเลือกคลาสหลอก CSS ไวยากรณ์ :nth-child() จะสร้างความแตกต่างจากตัวเลือกอื่นๆ โดยการใช้อาร์กิวเมนต์ที่ทำหน้าที่เป็นรูปแบบในการระบุองค์ประกอบภายในกลุ่มขององค์ประกอบพี่น้อง

 :nth-child(args) {
    /*...*/
} 

การเน้นหลักอยู่ที่เนื้อหาที่อยู่ในวงเล็บ ซึ่งอธิบายชุดย่อยเฉพาะขององค์ประกอบที่จะเลือก

การใช้ค่าคำหลักสำหรับกรณีทั่วไป

ตัวเลือกนี้ออกแบบมาเพื่อทำงานกับค่าคำหลักที่แตกต่างกันสองค่า ได้แก่"คี่"และ"คู่"ค่าเหล่านี้พิสูจน์แล้วว่ามีประสิทธิภาพสูงเมื่อต้องใช้การจัดรูปแบบแถวทางเลือกภายในตาราง

การแจงนับตรงไปตรงมาเป็นตัวอย่างของสถานการณ์ที่อาจใช้การกำหนดคำหลักเหล่านี้:

 <ol>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
    <li>Item 6</li>
    <li>Item 7</li>
</ol> 

เมื่อใช้ตัวเลือก :nth-child(odd) เราสามารถปรับเปลี่ยนสีของรายการถัดไปด้วยดัชนีคี่:

 :nth-child(odd) {
    color: red;
} 

รายการจะมีหมายเลขกำกับไว้ตั้งแต่ 1 โดยรายการเริ่มต้นจะแสดงเป็นสีแดง ตามด้วยรายการที่สาม และรายการที่สามต่อจากนั้นทุกรายการ

/th/images/odd.jpg

สัญกรณ์การทำงานเพื่อความยืดหยุ่นที่มากขึ้น

เราอาจใช้จำนวนเต็มบวกเดี่ยวๆ เพื่อเลือกส่วนประกอบเฉพาะโดยใช้งานดังนี้

 li:nth-child(4) {
    color: red;
} 

ในกรณีนี้ ตัวเลือกจะใช้เฉพาะกับองค์ประกอบที่สี่ภายในรายการที่ให้ไว้:

/th/images/4-1.jpg

ตัวอย่างไวยากรณ์เฉพาะนี้เกี่ยวข้องกับการเลือกองค์ประกอบตามรูปแบบเฉพาะ และอยู่ภายใต้หมวดหมู่ที่กว้างกว่าของไวยากรณ์การทำงานที่ทำหน้าที่นี้

 :nth-child(An\+B) {
    /*...*/
} 

ในสัญลักษณ์เฉพาะนี้ เราแสดงด้วย"A"ซึ่งเป็นขนาดส่วนเพิ่มหรือขั้นตอน ซึ่งระบุความถี่ที่ตัวเลือกเลื่อนไปเพื่อเลือกรายการถัดไป ด้วยวิธีนี้ เราสามารถเลือกเลือกรายการในช่วงเวลาปกติได้ เช่น รายการอื่นๆ ทุกรายการหรือทุกรายการที่สาม เป็นต้น ในทางกลับกัน “B” หมายถึงจุดเริ่มต้นที่การเลือกเริ่มต้นขึ้น

ตัวอย่างเช่น ใช้อาร์กิวเมนต์ 3n\+1:

 li:nth-child(3n\+1) {
    color: red;
} 

การเริ่มต้นกระบวนการคัดเลือกจากองค์ประกอบเริ่มต้น จากนั้นจะดำเนินการโดยการข้ามสององค์ประกอบและไปยังองค์ประกอบถัดไปถัดไป:

/th/images/3nplus1.jpg

เปรียบเทียบสิ่งนี้กับนิพจน์ 3n\+2:

 li:nth-child(3n\+2) {
    color:red;
} 

โค้ดที่อัปเดตจะเริ่มเลือกรายการจากองค์ประกอบที่สองของรายการ แทนที่จะเริ่มต้นด้วยรายการแรก ในขณะที่ยังคงยึดตามรูปแบบการเลือกทุก ๆ รายการที่สาม

/th/images/3nplus2.jpg

อีกตัวอย่างที่น่าสนใจคือ:nth-child(n\+3):

 li:nth-child(n\+3) {
    color: red;
} 

คำสั่งที่กำหนดเกี่ยวข้องกับการเลือกชุดของรายการ โดยเริ่มจากองค์ประกอบที่สามและดำเนินต่อไปจนจบ ลำดับผลลัพธ์ควรใช้แบบฟอร์มที่แสดงด้านล่าง:

/th/images/nplus3.jpg

อาจใช้กระบวนการลบเพื่อให้ได้ผลลัพธ์ที่เฉพาะเจาะจงเช่นกัน

 li:nth-child(3n-1) {
    color: red;
} 

ตัวอย่างที่ให้มาเบี่ยงเบนไปจากแนวทางปฏิบัติทั่วไปโดยเริ่มกระบวนการคัดเลือกจากดัชนีลบ ส่งผลให้มีการเลือกองค์ประกอบที่สองในลำดับตามด้วยเทอมที่ห้าและเทอมถัดไป:

/th/images/3nminus1.jpg

ของไวยากรณ์

คลาสหลอก :nth-child() อนุญาตให้ใช้คีย์เวิร์ด"of"ร่วมกับตัวเลือก ซึ่งทำหน้าที่เป็นอาร์กิวเมนต์ภายในวงเล็บ เมื่อใช้ไวยากรณ์นี้ อาจจำกัดช่วงขององค์ประกอบที่รูปแบบพื้นฐานสามารถเลือกได้ ซึ่งจะเป็นการเพิ่มความจำเพาะและความแม่นยำของกระบวนการเลือก

พิจารณาสถานการณ์ที่มาร์กอัปมีความซับซ้อนเมื่อเทียบกับเวอร์ชันเริ่มต้น:

 <ol>
    <li class="old">Item 1</li>
    <li class="new">Item 2</li>
    <li class="new">Item 3</li>
    <li class="old">Item 4</li>
    <li class="new">Item 5</li>
    <li class="new">Item 6</li>
    <li class="new">Item 7</li>
</ol> 

หากต้องการกำหนดเป้าหมายองค์ประกอบด้วยคลาสเฉพาะและเลือกทุก ๆ วินาทีภายในกลุ่มนั้นโดยใช้ CSS เราสามารถใช้คลาสหลอก “:nth-child” ร่วมกับตัวเลือกคลาสที่ต้องการได้ ช่วยให้สามารถเลือกและแก้ไของค์ประกอบเฉพาะได้อย่างแม่นยำโดยอิงตามตำแหน่งภายในลำดับขององค์ประกอบที่ตรงกัน

 .new {
    font-weight: bold;
}

li:nth-child(even of.new) {
    color: red;
} 

โปรดทราบว่าเฉพาะรายการตัวหนาที่เป็นเลขคี่เท่านั้นที่ปรากฏเป็นสีแดง:

/th/images/of.jpg

นอกจากนี้ ให้คำนึงถึงความแตกต่างระหว่าง li.new:nth-child(even) และ :target ซึ่งตัวเลือกที่กำหนดเป้าหมายองค์ประกอบ .new ตามลำดับ เมื่อเป็นองค์ประกอบคู่หรือมีองค์ประกอบลูกที่มี ID เป็น"moredetails ” ดังที่แสดงไว้ในตัวอย่างก่อนหน้าของเรา แบบแรกใช้กับกรณีที่ 2 และ 6 ในภาพประกอบที่ให้มา

การทำงานกับตัวเลือก:nth-child()

การใช้ตัวเลือก:nth-child() ช่วยให้สามารถสร้างความสวยงามที่โดดเด่นผ่านการใช้เฉดสีที่สดใสในเนื้อหาเว็บไซต์ ครอบคลุมการเน้นของแต่ละแถวและคอลัมน์ภายในโครงสร้างข้อมูลแบบตาราง นอกจากนี้ การรวมตัวเลือกนี้เข้ากับตัวเลือก CSS เพิ่มเติมช่วยอำนวยความสะดวกในการสร้างโครงร่างและการกำหนดค่าภาพที่ซับซ้อนโดยใช้ประโยชน์จากความสามารถที่รวมกัน