ความจำเพาะของ CSS selector คืออะไร และทำงานอย่างไร?
เบราว์เซอร์จะพิจารณาว่าสไตล์ใดที่จะแสดงบนองค์ประกอบขึ้นอยู่กับความจำเพาะของกฎ CSS เราถือว่าเบราว์เซอร์ได้พิจารณากฎที่ตรงกับองค์ประกอบเฉพาะแล้ว ในบรรดากฎที่ตรงกัน ความจำเพาะ ซึ่งประกอบด้วยค่าสี่ค่าที่คั่นด้วยเครื่องหมายจุลภาค a, b, c, d จะถูกคำนวณสำหรับแต่ละกฎโดยอิงตามสิ่งต่อไปนี้:
aคือการใช้อินไลน์สไตล์หรือไม่ ถ้าการประกาศคุณสมบัติเป็นอินไลน์สไตล์บนองค์ประกอบaคือ 1 มิฉะนั้นจะเป็น 0bคือจำนวน ID selectorcคือจำนวนคลาส แอตทริบิวต์ และ pseudo-classes selectordคือจำนวนแท็กและ pseudo-elements selector
ความจำเพาะที่ได้ไม่ใช่คะแนน แต่เป็นเมทริกซ์ของค่าที่สามารถเปรียบเทียบทีละคอลัมน์ได้ เมื่อเปรียบเทียบ selector เพื่อพิจารณาว่าอันไหนมีความจำเพาะสูงสุด ให้ดูจากซ้ายไปขวา และเปรียบเทียบค่าสูงสุดในแต่ละคอลัมน์ ดังนั้นค่าในคอลัมน์ b จะแทนที่ค่าในคอลัมน์ c และ d ไม่ว่าจะเป็นค่าใดก็ตาม ด้วยเหตุนี้ ความจำเพาะของ 0,1,0,0 จะมากกว่า 0,0,10,10
ในกรณีที่ความจำเพาะเท่ากัน: กฎล่าสุดคือกฎที่นับ ถ้าคุณเขียนกฎเดียวกันลงในสไตล์ชีทของคุณ (ไม่ว่าจะภายในหรือภายนอก) สองครั้ง กฎที่อยู่ต่ำกว่าในสไตล์ชีทของคุณจะอยู่ใกล้กับองค์ประกอบที่จะจัดรูปแบบมากขึ้น ถือว่ามีความจำเพาะมากกว่าและจะถูกนำไปใช้
ฉันจะเขียนกฎ CSS ที่มีความจำเพาะต่ำ เพื่อให้สามารถแทนที่ได้ง่ายหากจำเป็น เมื่อเขียนโค้ดไลบรารีคอมโพเนนต์ CSS UI สิ่งสำคัญคือต้องมีความจำเพาะต่ำ เพื่อให้ผู้ใช้ไลบรารีสามารถแทนที่ได้โดยไม่ต้องใช้กฎ CSS ที่ซับซ้อนเกินไปเพียงเพื่อเพิ่มความจำเพาะหรือใช้ !important