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