Подтвердить что ты не робот

Как получить "положение: исправлено" css для работы в IE 7+ с TRANSITIONAL doctype?

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

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

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

4b9b3361

Ответ 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 отстой.