html5shiv - почему это только для IE?

Я хочу начать использовать некоторые теги HTML5, но беспокоюсь о том, как они будут отображаться в браузерах, которые не поддерживают HTML5. Кажется, что html5shiv - это решение, которое я могу использовать для браузеров IE & lt; 9.

Однако что делать, если браузер не поддерживает HTML5 и не является IE? Что тогда? Почему html5shiv является IE?

Ответы на вопрос(4)

Решение Вопроса

чтобы быть ясным, html5shiv просто делает это так, что вы можете стилизовать определенные теги HTML5 section, article и т. д.) правильно. Он не дает браузеру «поддержку HTML5» в более общем смысле этого слов

Имея это в виду, обратите внимание, что IE <9 - единственные браузеры, которые не позволяют правильно стилизовать эти теги HTML5, поэтому html5shiv применяется только к ним.

Другие браузеры (даже очень старые, такие как Netscape Communicator 4) по-прежнему будут правильно анализировать нераспознанные теги и позволят применять к ним CSS, как и следовало ожидать.

Как отмечает zzzzBov в своем ответе, они могут не иметь правильных стилей по умолчанию (которые в большинстве (всех?) Случаев либоdisplay: block или ничего), поэтому вам нужно будет добавить их даже для не старых браузеров. Но это прекрасно работает в браузерах, отличных от oldIE, тогда как в oldIE добавление этих стилей по умолчанию - или любых других стилей - работает, только если вы используете html5shiv.

 Domenic02 мая 2012 г., 06:52
Да, добавь последний абзац, чтобы обсудить это.
 BoltClock♦02 мая 2012 г., 06:52
@ Salman A: Верно. Это также известно как Начальная value - значение, установленное при отсутствии значений по умолчанию браузера или объявленных автором значений.
 Salman A02 мая 2012 г., 06:51
Я думаю, что по умолчаниюdisplay значение для неизвестных тегов равноinline.

просто устанавливая их cssdisplay свойство

header,
footer,
article,
section,
...etc... {
    display: block;
}

Для старых версий Firefox и браузеров на основе webkit (до HTML5) это было все, что было необходимо.

 BoltClock♦02 мая 2012 г., 06:51
Они интерпретируются как элементы DOM автоматически, без необходимости устанавливатьdisplay свойство - реальная причина, почему вам нужно установить их наblock явно потому, что начальное значениеinline для любых элементов без параметров браузера по умолчанию (например, нестандартные элементы, как вы говорите).

display свойство элемента равноinline ( Исх). Встроенная таблица стилей агента пользователя изменяет свойства на разумные значения для известных элементов; например, заголовки и абзацы изменяются на блокировку.

HTML5 вводит новые элементы, такие как заголовок, нижний колонтитул, статья и раздел (элементы секционирования HTML5). Поскольку старые браузеры не знают о них, они обрабатывают эти элементы как встроенные. Поэтому вы должны добавить правила CSS для этих элементов вручную:

header, footer, article, section { display: block; }

Но как уже упоминалось в История HTML5 Шива:

... Internet Explorer 6-8 создает проблему, поскольку они не распознают неизвестные элементы; новые элементы не могут содержать дочерние элементы и не затрагиваются CSS

В этой статье также упоминается обходной путь для IE 6-8:

Кстати, если вы хотите, чтобы правила CSS применялись к неизвестным элементам в IE, вам просто нужно сделать document.createElement (elementName). Это как-то позволяет движку CSS знать, что элементы с таким именем существую

Теперь относительно вашего вопроса: html5shiv использует некоторые приемы JavaScript для создания неизвестных элементов Styleable в IE 6-8. Что касаетсяДруги браузеры, которые не поддерживают HTML5, html5shiv, если необходимо, добавляет стили по умолчанию, необходимые для правильной визуализации элементов HTML5, чтобы вам не приходилось определять правила CSS самостоятельно (как упомянуто выше).

Отметьте, что html5shiv не поддерживает браузер HTML5. Например, он не может заставить IE7 воспроизводить видео, встроенные через HTML5<video> тег

 BoltClock♦02 мая 2012 г., 17:11
"В браузере есть набор стилей по умолчанию для неизвестных элементов." В частности, эти значения по умолчанию определяются спецификацией, и браузеры должны придерживаться их, если не указано иное. Значения по умолчанию одинаковы для всех элементов - если что-то отображается как блок по умолчанию, то это потому, что в таблице стилей пользовательского агента так сказано.
 Salman A02 мая 2012 г., 18:38
@ BoltClock: понял. Для пояснения, под неизвестным элементом я подразумеваю те элементы, которые не были упомянуты в спецификации при выпуске браузера (или его конкретной версии).

потому что в некоторых версиях IE все еще не хватает многих функций HTML5. То, что работает в chrome или других браузерах webkit, может не работать в IE, поэтому htmlshiv ПОПЫТАЕТСЯ адаптировать javascript к отсутствующим функциям. Точнее, полифилл.

Ваш ответ на вопрос