CSS-хак


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

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

Хотя новые правила CSS правильны по текущим стандартам, старые браузеры игнорируют их как «недействительные». Написав старые правила, за которыми следуют новые правила, которые отменяют или изменяют старые, можно активировать только определенные правила в старых браузерах.

До версии 10 Internet Explorer поддерживал специальный синтаксис комментариев, который позволял читать блоки HTML только определенными версиями браузера. Эти комментарии в основном используются для предоставления определенных обходных путей CSS и JavaScript для более старых версий браузера. Никакие другие браузеры не интерпретировали эти комментарии и не предлагали аналогичную функциональность.

Сокрытие кода с помощью хаков часто приводит к некорректному отображению страниц при обновлении браузеров. Эти взломы могут привести к неожиданному поведению в новых браузерах, которые могут интерпретировать их иначе, чем их предшественники. Поскольку Internet Explorer 6 и 7 вышли из употребления, хакерские атаки на CSS также сократились. Современные методы нацеливания на функции менее уязвимы и подвержены ошибкам.

Каждый из самых популярных браузерных движков рендеринга имеет собственный префикс поставщика для экспериментальных свойств. Однако из-за распространения этих свойств в живом коде поставщики браузеров начали отходить от этого в пользу флага функции. [1]