альтернативные листы CSS для IE? - PullRequest
2 голосов
/ 05 ноября 2010

У меня есть вопрос о методах CSS-кодирования. IE часто требует хаков или обходных путей, чтобы все выглядело правильно, и есть два разных способа сделать это:

  1. Поместите все в один большой файл CSS
  2. Создайте два файла CSS и загрузите их в зависимости от браузера, который использует пользователь

Я думаю, что второй имеет больше смысла, но есть ли причина этого не делать? Что чаще встречается?

Ответы [ 7 ]

2 голосов
/ 05 ноября 2010

В качестве стандарта для всех проектов я предпочитаю использовать один файл CSS, чтобы его было проще управлять и изменять позже (также только один HTTP-запрос).Затем используйте условные выражения для изменения класса тела.

<!--[if lt IE 7 ]> <body class="ie6"> <![endif]--> 
<!--[if IE 7 ]>    <body class="ie7"> <![endif]--> 
<!--[if IE 8 ]>    <body class="ie8"> <![endif]--> 
<!--[if IE 9 ]>    <body class="ie9"> <![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> <body> <!--<![endif]-->

Не уверен, насколько это распространено, но он также используется в HTML5Boilerplate

2 голосов
/ 05 ноября 2010

Единственный аргумент против двух файлов CSS заключается в том, что при первом открытии вашей страницы будет сгенерирован один дополнительный HTTP-запрос.

Однако после заполнения кэша браузера локальной копией этих файлов эта проблема устраняется.

С другой стороны, наличие отдельно стилей IE означает, что пользователи в других браузерах не будут их загружать. Кроме того, существует четкое разделение между основными стилями и взломами, что означает, что с принятием IE9 вы сможете легко отказаться от CSS хаков в будущем, просто удалив этот файл вместо изменения основного файла CSS. .

1 голос
/ 05 ноября 2010

Я использую либо, это зависит только от того, сколько изменений требуется, чтобы страница выглядела правильно в IE.

Если это небольшое изменение, например, элемент должен быть 500px в IE, а не 480px, тогда я буду использовать обходной путь в моей таблице стилей.

Но если есть многочисленные изменения, я иду с условными комментариями, чтобы загрузить отдельную таблицу стилей, если это IE - но с этим у меня нет двух копий одной и той же таблицы стилей, одна для других браузеров, другая для IE Он у меня ВСЕГДА загружается моя основная таблица стилей, затем, при необходимости, загружается таблица стилей IE и изменяются только те элементы, которые ему нужны (поэтому в таблице стилей нет необходимости дублировать, чтобы сократить размер файла)

В основном, как я это делаю:

Нужно изменить пару элементов: придерживаться обходных путей

Множество элементов нуждается в изменении: используйте условные комментарии

1 голос
/ 05 ноября 2010

Единственный аргумент, который можно сделать для одной таблицы стилей, - это сокращение одного HTTP-запроса. Учитывая, что в среднем 60% веб-трафика будет приходиться на пользователей IE, это немаловажное влияние.

Однако, такие хаки, как Холли Хак, просто уродливы и не гарантируют их работоспособность, и поскольку таблицы стилей кэшируются, воздействие не должно быть таким значительным, как было бы. Условные комментарии являются приемлемой практикой и должны использоваться для решения проблем IE. Нет смысла загружать две полностью отдельные таблицы стилей только для стандартных совместимых и нестандартных браузеров жалоб - переопределения нескольких проблемных свойств должно быть достаточно.

В качестве альтернативы, решение Javascript, такое как IE7.js, также может быть использовано для того же эффекта.

1 голос
/ 05 ноября 2010

Я думаю, что нет причин не делать второй.Выражение наподобие <!--[if IE]> стоит того, чтобы убедиться, что загружен правильный css, и сохранить пропускную способность, когда используется не-браузер.

0 голосов
/ 05 ноября 2010

Поместите в файл IE CSS IE, то, что вам нужно, чтобы исправить макеты в IE, а не в совершенно новую (и, возможно, дублирующуюся) таблицу стилей.

Я также рекомендую это для импорта javascript, например, быстрый скрипт длязаставить элементы HTML5 работать (этот я видел на примере Реми Шарпа на Whatwg, если я не ошибаюсь).

0 голосов
/ 05 ноября 2010

Вы можете добиться правильной работы без "взломов" браузера.

По возможности избегайте использования CSS для браузера.Для более старых версий IE я предпочитаю использовать условные комментарии <--[if IE...]> ... <[endif]-->.

Я знаю, что они создают еще один запрос к серверу, но я считаю, что любой, кто достаточно глуп, чтобы использовать устаревшую версию, т.е.(6 или меньше) не заслуживает пары миллисекунд, которые потребовались бы для загрузки другой таблицы стилей.Это также позволяет мне централизовать исправления.

Сначала используйте совместимый со стандартами код, а затем исправляйте любые проблемы для несовместимых браузеров, но только в случае крайней необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...