Введение

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

Недействительный или не соответствующий требованиям 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.