Как заставить CSS "position: fixed" работать в IE 7+ с переходным типом документа? - PullRequest
17 голосов
/ 27 октября 2009

Я знаю, что position:fixed; не поддерживался IE до IE 7, и он работает только в IE 7, если у вас есть STRICT DOCTYPE.

Мой вопрос: «Как мне заставить его работать с IE 7 с TRANSITIONAL DOCTYPE

Пожалуйста, не предлагайте изменить DOCTYPE, так как это не отвечает на мой вопрос, спасибо.

Ответы [ 2 ]

23 голосов
/ 27 октября 2009

Вам не нужен строгий DOCTYPE для поддержки fixed. Вам нужен только DOCTYPE, который запускает Стандартный режим (или «почти стандарт»). Это может быть переходный тип документа, такой как:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

или XHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

, пока включен системный идентификатор (URI в конце).

Если ваши страницы действительно полагаются на Quirks Mode (тьфу!), Извините, но вы не можете использовать fixed и вам придется прибегать к хаки JavaScript (но тогда вам могут понадобиться такие для IE6 в любом случае).

10 голосов
/ 02 марта 2012

Фиксированная позиция не работает для меня даже с типами Transitional / Strict Doc. Однако я использую IE9 в режиме совместимости, и предполагается, что для рендеринга используются библиотеки времени выполнения IE8. Чтобы исправить эту проблему, мне пришлось добавить следующий элемент CSS в элемент.

.elementToBeFixed {
    position: fixed;
    top: 0;
    left: 0;
}

Он не работает при отсутствии Top или Left, вам необходимо явно установить их на ноль (или желаемое значение), чтобы он работал во всех версиях IE .... Само собой разумеется, что IE отстой.

...