:before
และ:after
ไม่จำเป็นต้องทำงานกับองค์ประกอบที่ถูกแทนที่และข้อกำหนดของ CSS ไม่ได้ระบุว่าจะทำงานอย่างไรสำหรับองค์ประกอบเหล่านี้และแนวคิดขององค์ประกอบที่ถูกแทนที่นั้นค่อนข้างคลุมเครือ
ข้อกำหนด CSS 2.1 แสดงให้เห็นอย่างชัดเจนว่าสามารถทำงานกับองค์ประกอบที่ถูกแทนที่ได้เพียง แต่บอกว่ามันไม่ได้ "กำหนด" ทั้งหมดอย่างไร สิ่งนี้เกี่ยวข้องกับปัญหาที่คาดว่าองค์ประกอบที่ถูกแทนที่จะมีการแสดงผลภาพของตัวเองซึ่งไม่ได้ควบคุมโดย CSS ในขณะที่องค์ประกอบหลอกควรเพิ่มบางสิ่งบางอย่างในเนื้อหาขององค์ประกอบ ข้อมูลจำเพาะเพิ่มเติมว่าสิ่งนี้จะถูกกำหนด“ โดยละเอียดมากขึ้น” ในข้อกำหนดในอนาคต แต่ยังไม่เกิดขึ้น
ผู้จำหน่ายเบราว์เซอร์เพิ่งตัดสินใจที่จะหลีกเลี่ยงปัญหาโดยการไม่ใช้องค์ประกอบหลอกเหล่านี้สำหรับองค์ประกอบบางอย่างเลย
ยังไม่ชัดเจนว่า“ องค์ประกอบที่ถูกแทนที่” หมายถึงอะไรและความหมายดูเหมือนจะเปลี่ยนไปบ้าง มักถูกตีความว่ามีความหมายเช่นเดียวกับองค์ประกอบว่าง (องค์ประกอบที่มีEMPTY
เนื้อหาที่ประกาศกล่าวคือองค์ประกอบที่ไม่สามารถมีเนื้อหาใด ๆ ได้) แต่ CSS 2.1 จะแสดงสไตล์ชีตตัวอย่างพร้อมกับตัวเลือกbr:before
(แม้ว่าเบราว์เซอร์จะเพิกเฉยต่อสิ่งนี้ แต่การใช้งานbr
ของตัวเอง ทาง). อาจเป็นที่ถกเถียงกันอยู่ว่ามีการย้ายองค์ประกอบเข้ามาในขอบเขตของการเรนเดอร์ CSS มากขึ้นเรื่อย ๆ อย่างน้อยก็บางส่วน ตัวอย่างเช่นinput
องค์ประกอบ (รวมแบบอักษรสี ฯลฯ ) ส่วนใหญ่สามารถควบคุมได้ด้วย CSS ในเบราว์เซอร์สมัยใหม่
เบราว์เซอร์ปัจจุบัน (Firefox, IE, Chrome) ดูเหมือนจะไม่รองรับ:after
และ:before
องค์ประกอบหลอกสำหรับองค์ประกอบว่างอื่น ๆ นอกเหนือhr
จาก สำหรับhr
, IE และ Chrome วางเนื้อหาที่สร้างภายในกล่องเป้ซึ่งเป็นการดำเนินงานของhr
; เนื้อหาทำให้กล่องสูงขึ้น Firefox วางเนื้อหาของทั้งสอง (!) hr
หลอกองค์ประกอบหลังจากที่กฎแนวนอนที่มีการดำเนินงานของ รูปแบบนี้แสดงให้เห็นถึงประเภทของปัญหา "การโต้ตอบ" ที่อ้างถึงใน CSS 2.1
มักอ้างว่าไม่สามารถใช้องค์ประกอบหลอกเหล่านี้สำหรับองค์ประกอบที่ว่างเปล่าเนื่องจากคำจำกัดความ HTML ไม่อนุญาตให้มีเนื้อหาใด ๆ นี่เป็นข้อผิดพลาดหมวดหมู่ กฎไวยากรณ์ของภาษามาร์กอัปไม่ได้ จำกัด สิ่งที่คุณทำได้ใน CSS
เพื่อสรุป:after
และ:before
ในขณะนี้ไม่สามารถใช้สำหรับองค์ประกอบว่าง (ยกเว้นเพียงเล็กน้อยสำหรับhr
) แต่ส่วนใหญ่เกิดจากการใช้งานและอาจมีการเปลี่ยนแปลงในอนาคต
<before></before>
" ในแหล่งที่มา