Введение
Кодирование техники CSS-хак - это метод кодирования, используемый для скрытия или отображения CSS-маркировки в зависимости от браузера, номера версии или возможностей. У браузеров есть разные интерпретации поведения CSS и разные уровни поддержки стандартов W3C. CSS-хакеры иногда используются для достижения последовательного внешнего вида макета в нескольких браузерах, которые не имеют совместимого рендеринга. Большинство из этих взломов не работают в современных версиях браузеров, и другие методы, такие как обнаружение поддержки функций, стали более распространенными.
A CSS hack is a coding technique used to hide or show CSS markup depending on the browser, version number, or capabilities. Browsers have different interpretations of CSS behavior and different levels of support for the W3C standards. CSS hacks are sometimes used to achieve consistent layout appearance in multiple browsers that do not have compatible rendering. Most of these hacks do not work in modern versions of the browsers, and other techniques, such as feature support detection, have become more prevalent.
Недействительный или не соответствующий требованиям CSS
Из-за причуд в интерпретации CSS различными браузерами, большинство CSS-хаков включают в себя написание недействительных CSS-правил, которые интерпретируются только определенными браузерами, или полагаются на ошибки в конкретных браузерах. Примером этого является префикс правил с подчеркновением (как в ширине) для таргетинга Internet Explorer 6 другие браузеры будут игнорировать строку, позволяя использовать его для написания кода, специфичного для одного браузера. Аналогичные CSS-хаки включают в себя введение синтаксических ошибок, таких как звездочки, отсутствующие пробелы и CSS-комментарии вокруг имен свойств. Кроме того, в Internet Explorer 6 и 7 декларация !important признается как таковая с любой строкой после восклицательного знака, например !ie.
Не поддерживается CSS
Хотя новые правила CSS являются правильными по текущим стандартам, они игнорируются старыми браузерами как "недействительные". Написывая старые правила, за которыми следуют новые правила, которые отменяют или изменяют старые, можно активировать только определенные правила в старых браузерах.
Критики
Скрытие кода с помощью взломов часто приводит к неправильному отображению страниц при обновлении браузеров. Эти взломы могут привести к неожиданному поведению в новых браузерах, которые могут интерпретировать их по-другому, чем их предшественники. С тех пор, как Internet Explorer 6 и 7 вышли из употребления, CSS-хакеры также сократились. Современные методы таргетирования особенностей менее хрупки и подвержены ошибкам.
Префиксы браузера
Каждый из самых популярных браузерных движков рендеринга имеет свой собственный префикс поставщика для экспериментальных свойств. Однако из-за распространения этих свойств в живом коде, производители браузеров начали отходить от этой практики в пользу флагов функций.
Ограничение
Префиксы поставщиков были разработаны для функций, которые находились в разработке, а это означает, что синтаксис может даже не быть окончательным. Кроме того, добавление правила для реализации каждым браузером функции не масштабируется хорошо, когда вы хотите поддерживать много браузеров. Следовательно, основные производители браузеров уходят от префиксов поставщиков в пользу других методов, таких как запросы функций @supports.
Определение функций JavaScript
Существует несколько библиотек JavaScript, которые обнаруживают, какие функции доступны в конкретном браузере, чтобы правила CSS могли быть написаны для их нацеливания. Библиотеки, такие как Modernizr, добавляют классы к html-элементу, позволяя использовать CSS-правила, такие как cssgradients header.