Как правильно обеспечить совместимость CSS-браузера?

StackOverflow https://stackoverflow.com/questions/808902

  •  03-07-2019
  •  | 
  •  

Вопрос

Лучше ли иметь отдельный CSS-файл для каждого пользовательского агента или лучше использовать CSS-хаки, которые могут видеть только определенные браузеры?

Это было полезно?

Решение

Ни один.

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

Главное — избегать вещей, с которыми возникают проблемы в некоторых браузерах (чаще всего в Internet Explorer).Одна из таких вещей — использовать отступы, а не поля, потому что IE неправильно обрабатывает свертывание полей.

Некоторые методы, граничащие с хаками, используют код, который не влияет на корректно работающие браузеры, но устраняет проблемы для конкретного браузера.Это могут быть такие вещи, как указание высоты элемента, которому она обычно не нужна, или указание display:inline на плавающем элементе.

Страница Позиция решает все содержит примеры некоторых ошибок и предлагаемые исправления.(Часто исправление представляет собой какой-то хак, поэтому вам, конечно, также следует подумать, можно ли вообще избежать проблемы.)

Другие советы

Лучше не делать ни того, ни другого.

Хороший сброс CSS и CSS, который работает в одном и том же кросс-браузере, является гораздо лучшим решением.

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

Я еще не видел необходимости в нескольких файлах CSS (за исключением нескольких исправлений IE6, адресованных через условный комментарий).

Ни то, ни другое, если это возможно.Теперь, когда старый Netscape, IE <= 6 и т. д.уже не так часто используются, я стараюсь использовать функции, которые работают во всех этих браузерах (например,FF >= 2, IE >= 7, Chrome, Opera).

Условные комментарии проблемы с Internet Explorer кажутся нормой.В сочетании с небольшим количеством JavaScript, например ie7.js Дина Эдварда вы можете решить большинство проблем с кроссбраузерностью, не прибегая к взломам CSS-файлов.

лучше использовать другие файлы CSS для Internet Explorer 6-7 (подключить их через условные комментарии) и хаки для других браузеров.

Своего рода продолжение — как разработать единый файл, который будет работать.

Лучший подход, который я видел, — это начать с нуля, постепенно наращивая его и проверяя каждое изменение, чтобы оно по-прежнему совместимо с вашими основными браузерами (особенно с проблемными).

Когда вы заставляете его полностью работать в одном браузере, а затем говорите: «пора его конвертировать», — это тот момент, когда действительно начинается боль и вам нужно начинать хакерство.

Мой подход использование класса PHP для определения операционной системы, браузера и версии браузера.Вы можете настроить таргетинг на любую версию практически любого браузера в любой операционной системе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top