Для многих не секрет что всеми любимый браузер Internet Explorer 6 не поддерживает CSS свойство min-width, max-width, min-height(подробней о min-height можно прочитать в заметке Особенности свойства height) которые позволяет сделать ограничения на размер блока.

Мне понравился вот такой простой способ фикса этого недостатка. Решение сводится к тому, что для ИЕ создается отдельный файл стилей, который экранируется условным комментарием и в него добавляется expression, который эмулирует свойство min-width.


width:expression(document.body.clientWidth < 770? "770px": "auto");

Для того, чтоб сэмулировать max-width нужно изменить знак неравенства на противоположный.


width:expression(document.body.clientWidth > 770? "770px": "auto");

Для эмуляции также есть другие варианты типа подключения JS файла, который рассчитывает ширину окна и подставляет необходимые величины в width, или эмуляция этого свойства путем создания дополнительных блок и стилей которые создают эффект min-width.

Лично мне вариант с expression кажется самым лучшим. Он избавляет от подключения JS скриптов. Учитывая, что под IE6 пишутся хаки почти при каждой верстке, это еще и позволяет добиться валидаци css и вытянуть все лишние элементы в отдельный файл, который будет видимый только для IE6

Источник материала

16 Отзывов to “Эмуляция min-width, max-width под IE6”

  1. Jman:

    B при некоторых обстоятельствах получаем вылет IE6 в трубу :) (когда ставим минимальную ширину)

  2. Yuriy Drozdov:

    на каждое движение мышки по странице или выполнение JavaScript–кода происходит пересчет expression.

  3. Zodios:

    Это при каких? Я знаю что в IE под WinXP SP1 при ресайзе может быть подвисание, но у меня не всегда это происходило. Учитывая что на SP1 количество пользователей уменьшается на это можно пойти.

  4. burnis:

    а у меня карма к ИЕ не рсполагает
    почти на всех машинках…постоянно вылетает на половине сайтов.
    причем часто даже на свежеустановленной системке

    использую в основном СП2

  5. e1f:

    > Он избавляет от подключения JS скриптов
    бред, это тот же js, и при отключенных скриптах все развалится

  6. Zodios:

    Это JS который идет в цсс, таким образом не подключаются лишние скрипты…

  7. Александр:

    Пользуюсь {min-width: 1003px;max-width: 1400px;width:expression((document.compatMode && document.compatMode == ‘CSS1Compat’) ? (document.documentElement.clientWidth 1400 ? «1400px» : «auto»)) : (document.body.clientWidth 1400 ? «1400px» : «auto»)))}
    Проблем не имел.

  8. Taras:

    Немного исправлю Александра (ошибки со скобками)

    {min-width: 1003px;max-width: 1400px;width:expression((document.compatMode && document.compatMode == ‘CSS1Compat’) ? (document.documentElement.clientWidth &lt 1400 ? “1400px” : “auto”) : (document.body.clientWidth &lt 1400 ? “1400px” : “auto”))}

  9. Юзер:

    А вот еще для рассуждения)))
    В каждый div которому нужно задать min-width добавлять например:

    &nbsp

  10. Юзер:

    эм)
    В каждый div которому нужно задать min-width добавлять например:
    {
    &nbsp

    }

  11. Типы макетов сайтов:

    [...] Основная часть сайта жестко зафиксирована по ширине, что избавляет от необходимости задавать минимальную или максимальную ширину окна браузера(подробней о min-width и max-width можно прочитать в заметке Эмуляция min-width, max-width под IE6). [...]

  12. Паха:

    > при некоторых обстоятельствах получаем вылет IE6 в трубу

    Полностью согласен. Так что этот вариант отпадает. хотя пора бы уже верстать под ие6 т.к. он умер и слава богу :)

  13. Паха:

    Поправка:
    * пора бы уже перестать верстать.

  14. Amir Enko:

    20% всех юзеров бывшего ссср до сих пор сидят на ИЕ 6 со своими пиратками , долго еще умирать будет .

  15. CIVIC:

    Большое благодарю! Именно этот вариант для max-width в ie8 помог!
    (width:expression(document.body.clientWidth > 770? «770px»: «auto»);)

  16. britva:

    Как вам этот вариант http://savvateev.org/blog/20/

Оставить отзыв


Последние записи