Сьогодні проблема Internet Explorer Box Model - це здебільшого не проблема. Більшість веб-розробників розміщують <!DOCTYPE>
тег для забезпечення дотримання стандартів, і ніхто вже не переймається підтримкою Internet Explorer 5.5.
Однак деякі розробники придумали суб'єктивні, концептуальні аргументи на захист моделі IE box. Вони заявляли, що модель коробки IE є більш "інтуїтивно зрозумілою", ніж модель W3C, оскільки модель W3C вимірює вміст коробки, тоді як модель IE вимірює саму коробку:
Я бачу їхню точку зору, але це в основному суб'єктивний аргумент, і найголовніше - це відповідність стандартам .
Однак останнім часом я віддаю перевагу моделі IE box з серйозних практичних причин. Модель коробки W3C утрудняє динамічний розмір елемента до точної ширини пікселя на екрані іншого елемента. Причина полягає в тому, що style.width
властивість елемента не враховує загальний екранний розмір елемента: вам також потрібно враховувати будь-які додаткові рамки та прокладки. Це не проблема, якщо обидва елементи використовують один і той же клас CSS, але якщо вони мають різні класи CSS, це може стати надзвичайно складним.
Припустимо, у нас є дві діви: 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. Це може бути особливо складно, якщо межі та прокладки вказані в непослідовних одиницях (поширене явище, оскільки межа часто є 1px лінією, тоді як прокладка може бути вказано в ems). Тоді перед нами стоїть квазінеможливе завдання перетворення на загальну одиницю (em в px або px в em). Все це лише для того, щоб отримати дві діви, щоб вирівнятись точно на екрані.
Таким чином, модель коробки W3C змушує нас враховувати проблеми CSS з облямівкою та накладкою при встановленні розміру елемента, тоді як модель коробки IE - ні, оскільки ширина вимірює весь розмір коробки (від кінця до -закінчення), а не вміст поля. Це значно спрощує динамічно розмір елементів по відношенню один до одного.
Все це здається досить вагомою причиною віддати перевагу IE box-моделі перед моделлю W3C (принаймні, концептуально - звичайно, на практиці модель IE box мертва).
Питання : Чому W3C обрав цю модель коробки? Чи є деякі переваги моделі коробки W3C, яку я просто не бачу? Або я просто перебільшую проблему тут?