วันนี้ปัญหาของInternet Explorer Box Modelส่วนใหญ่ไม่ใช่ปัญหา นักพัฒนาเว็บส่วนใหญ่วาง<!DOCTYPE>
แท็กเพื่อบังคับใช้การปฏิบัติตามมาตรฐานและไม่มีใครสนใจเรื่องการสนับสนุน Internet Explorer 5.5 อีกต่อไป
อย่างไรก็ตามนักพัฒนาซอฟต์แวร์บางรายเกิดข้อโต้แย้งเชิงแนวคิดในการป้องกันโมเดลกล่อง IE พวกเขาอ้างว่าโมเดลกล่อง IE นั้น "ใช้งานง่าย" มากกว่ารุ่น W3C เนื่องจากรุ่น W3C วัดเนื้อหาของกล่องในขณะที่รุ่น IE วัดขนาดกล่องเอง:
ฉันสามารถเห็นมุมมองของพวกเขา แต่โดยพื้นฐานแล้วมันเป็นข้อโต้แย้งส่วนตัวและสิ่งที่สำคัญที่สุดคือการปฏิบัติตามมาตรฐาน
อย่างไรก็ตามเมื่อเร็ว ๆ นี้ผมได้มาชอบรูปแบบกล่อง IE ที่จริงจังในทางปฏิบัติด้วยเหตุผล รูปแบบกล่อง W3C ทำให้ยากต่อการปรับขนาดองค์ประกอบให้มีความกว้างพิกเซลบนหน้าจอที่แน่นอนขององค์ประกอบอื่น เหตุผลก็คือstyle.width
คุณสมบัติขององค์ประกอบไม่ได้คำนึงถึงขนาดบนหน้าจอทั้งหมดขององค์ประกอบ: คุณต้องคำนึงถึงเส้นขอบและช่องว่างภายในเพิ่มเติมด้วย นี่ไม่ใช่ปัญหาหากองค์ประกอบทั้งสองใช้คลาส CSS เดียวกัน แต่ถ้ามีคลาส CSS ที่แตกต่างกันสิ่งนี้อาจท้าทายอย่างไม่น่าเชื่อ
สมมติว่าเรามีสอง divs: A และ B A นั้นเป็นรหัสที่ยากใน html เป็น 400px div ในขณะที่ B ถูกสร้างขึ้นแบบไดนามิกโดยใช้ Javascript เห็นได้ชัดว่าเราต้องการให้ B เป็นความกว้างที่แน่นอนของ A. ภายใต้โมเดล IE Box รุ่นเก่านี่เป็นเรื่องเล็กน้อย เราก็บอกว่า: หรือแม้กระทั่ง B.style.width = A.style.width
B.style.width = A.offsetWidth + "px"
แต่ด้วยรูปแบบกล่อง W3C มันไม่ง่ายเลย ตอนนี้เรายังต้องกังวลเกี่ยวกับสไตล์ชีท ถ้า B มีคลาส CSS เดียวกับ A เราสามารถพูดB.style.width = A.style.width
ได้ แต่ถ้ามันไม่ได้ - และเราอาจไม่ต้องการเหตุผลด้านสุนทรียภาพ - เรากำลังมีปัญหา ตอนนี้เราต้องคำนึงถึงจำนวนพิกเซลทั้งหมดในเส้นขอบและการขยายของทั้ง A และ B ซึ่งอาจเป็นเรื่องยากโดยเฉพาะอย่างยิ่งหากมีการระบุเส้นขอบและช่องว่างภายในหน่วยที่ไม่สอดคล้องกัน (เหตุการณ์ที่เกิดขึ้นทั่วไปเนื่องจากเส้นขอบ อาจระบุเป็น EMS) จากนั้นเราก็พบกับงานที่ไม่สามารถแปลงเป็นหน่วยทั่วไปได้ (em เป็น px หรือ px เป็น em) ทั้งหมดนี้เพื่อรับ divs สองตัวเพื่อจัดเรียงให้ตรงบนหน้าจอ
โดยพื้นฐานแล้วโมเดลของกล่อง W3C บังคับให้เราพิจารณาปัญหาชายแดน CSS และปัญหาการขยายเมื่อเรากำหนดขนาดขององค์ประกอบในขณะที่รุ่นกล่อง IE ไม่เนื่องจากความกว้างวัดขนาดทั้งหมดของกล่อง - end) แทนที่จะเป็นเนื้อหาของกล่อง สิ่งนี้ทำให้ง่ายขึ้นมากในการปรับขนาดองค์ประกอบที่สัมพันธ์กัน
ทั้งหมดนี้ดูเหมือนจะเป็นเหตุผลที่ทรงพลังพอสมควรที่จะสนับสนุนรูปแบบกล่อง IE มากกว่ารุ่น W3C (อย่างน้อยก็ในเชิงแนวคิด - แน่นอนว่าในทางปฏิบัติแล้วรูปแบบกล่อง IE นั้นตายแล้ว)
คำถาม : ทำไม W3C ถึงเลือกกล่องรุ่นนี้ มีข้อดีบางอย่างของกล่องรุ่น W3C ที่ฉันไม่เห็นหรือเปล่า? หรือฉันแค่พูดเกินจริงปัญหาที่นี่?