(위에서 논의한 IE11 핵과 같은 일부 해킹)는 공급 업체 별 코드 (예 : -ms-fullscreen)를 사용합니다. 이 경우 유효성 검사기의 기본 설정은 "Pass"녹색 화면 메시지와 함께 CSS를 표시 할 수 있습니다.
그러나 유효성 검사 화면에서 아래로 스크롤하면 다음과 같은 경고가 표시됩니다.
이 경우 : -ms-fullscreen은 "알 수없는 공급 업체 확장 의사 클래스"로 간주되기 때문에 경고합니다. 이런 종류의 CSS를 경고 대신 오류로 보는 것이 더 편안하다고 느끼면 유효성 검사기 입력 영역 아래의 "더 많은 옵션"섹션을 사용하여 유효성 검사기 설정을 조정할 수 있습니다.
"공급 업체 확장자"옵션을 "오류"로 변경하면 공급 업체 접두사 또는 기타 브라우저 특정 CSS (반드시 해킹이 아님)가 포함 된 경우 스타일 시트가 유효성 검사를 전달하지 못하게됩니다.
반면에 , 당신은 다음과 같은 것을 사용할 수 있습니다 :
.
위의 CSS는 IE8 이하를 목표로합니다. "해킹"은 백 슬래시와 9 개 (9)의 조합입니다. 9 부분이 라인을 유효하지 않은 CSS를 만들기 때문에 대부분의 브라우저는 전체 라인을 무시합니다. 그러나 어떤 이유로 든 Internet Explorer 버전 8 이하는 여전히 유효한 것으로 간주되며 여백 설정을 적용합니다. .
이 경우 유효성 검사기에서 어떤 설정을 선택하든 오류 메시지가 표시되며 스타일 시트는 유효성 검사를 전달하지 않습니다.
어떤 기술이 해킹이 아닌가?
다음 방법과 기술이 반드시 CSS 해킹으로 분류되어서는 안됩니다.! 중요한 선언은 해킹이 아닙니다
중요한 키워드가 추가 된 CSS 라인은 완전히 다른 문제입니다. 이것은 유효한 CSS이며 특정 브라우저를 타겟팅하는 데 사용되지 않습니다. 이것은 해킹이 아니지만 나쁜 CSS로 볼 수 있습니다.
공급 업체 접두사가 반드시 해킹은 아닙니다
공급 업체 접두사는 특정 브라우저를 대상으로하지만 이는 우리가 관습 적으로 해킹이라고하는 것이 아닙니다. 대부분의 경우 공급 업체 접두사를 사용하는 경우 유효한 표준 코드도 제공합니다. 그것은 해킹이 아닙니다. 즉, 브라우저를 타겟팅하기 위해 공급 업체 별 코드를 작성하는 경우가 있으므로 해킹 자격이 있습니다. _ :-ms-fullscreen을 사용하는 위의 코드가 예입니다. 또 다른 좋은 예는 하드웨어 가속을 트리거하는 것입니다
WebKit 브라우저에서. 그러나 벤더 접두사는 대부분 별도의 주제입니다. 실제로 W3C는 공급 업체 별 코드에 대한 문서를 가지고 있으며, 이는 그 자체로 해킹으로 여겨지지 않아야한다는 개념을 뒷받침합니다.
고속 선택기는 해킹이 아닙니다
스타일 시트의 다른 부분 (예 : Body .Content #SideBar P)에서 무언가를 무시하려는 선택자와의 특정한 것은 CSS 해킹이 아닙니다. CSS는 나쁜 일이지만 해킹은 아닙니다.
Old Syntax는 해킹이 아닙니다
이에 대한 좋은 예는 Flexbox의 딥 브라우저 지원에 필요한 복잡한 코드입니다. 이것이 오늘날 불필요하다는 사실 외에도, 나는 그런 종류의 것을 해킹으로 분류하지 않을 것입니다. 해당 브라우저가 지원했을 때 유효한 코드이므로 해킹과 동일한 영향을 미칠 수 있지만 같은 것은 아니라고 생각합니다.
조건부 의견은 어떻습니까?
CSS 또는 HTML을 작성하여 특정 버전의 Internet Explorer (또는 특정 버전의 Internet Explorer를 제외 할 수있는)를 작성할 수있는 조건부 의견은 약간의 회색 영역입니다. 특정 방식으로 작성되면 유효한 HTML이지만 "해킹"입니다.
2008 년에 Paul Irish는 우리가“조건부 클래스”라고 부르는 것을 대중화했습니다. 이들은 조건부 의견을 사용하여 스타일 시트에서 사용할 수있는 클래스를 생성하여 유효한 CSS를 사용하여 IE의 특정 버전을 대상으로합니다.