Как получить & # 8220; положение: исправлено & # 8221; CSS для работы в IE 7+ с переходным типом документа?
-
06-07-2019 - |
Вопрос
Я знаю, что position: fixed;
не поддерживался IE до IE 7, и он работает в IE 7, только если у вас есть STRICT DOCTYPE
. Р>
У меня такой вопрос: "Как заставить его работать с IE 7 с TRANSITIONAL DOCTYPE
? "
Пожалуйста, не предлагайте менять DOCTYPE
, так как это не отвечает на мой вопрос, спасибо.
Решение
Вам не нужен строгий DOCTYPE для поддержки fixed
. Вам нужен только DOCTYPE, который запускает режим стандартов (или & # 8216; почти стандарты & # 8217 ;). Это может быть переходный тип документа, такой как:
<!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 (тьфу!), извините, но вы не можете использовать fixed
, и вам придется прибегать к хакерским программам JavaScript (но тогда вам могут понадобиться те для IE6 в любом случае).
Другие советы
Фиксированная позиция не работает для меня даже с типами документов Transitional / Strict Doc. Однако я использую IE9 в режиме совместимости, и предполагается, что для рендеринга используются библиотеки времени выполнения IE8. Чтобы исправить эту проблему, мне пришлось добавить следующий элемент CSS в элемент.
.elementToBeFixed {
position: fixed;
top: 0;
left: 0;
}
Он не работает при отсутствии Top или Left, вам необходимо явно установить их на ноль (или желаемое значение), чтобы он работал во всех версиях IE .... Излишне говорить, что IE отстой.