최소 2 년 동안 CSS를 작성한 경우 CSS 해킹을 가장 많이 사용했습니다. 그러나 CSS를 비교적 처음 접한다면 용어를 들었을 가능성이 있지만 그 의미가 무엇인지 정확히 확실하지 않습니다.
이 게시물에서는 CSS 해킹이라는 용어가 정확히 무엇을 의미하는지, CSS 해킹이 어떻게 사용되는지 설명하겠습니다. 그러나 먼저, 왜이 게시물이 필요한지 느꼈는지 설명하는 배경.
키 테이크 아웃
CSS 해킹은 다른 브라우저 버전에 스타일을 적용하면서 다른 브라우저 버전에 적용되는 기술입니다. 종종 최신 CSS 표준을 완전히 지원하지 않는 이전 버전의 브라우저에서 브라우저 불일치 또는 한계를 극복하는 데 사용됩니다.
CSS 해킹이 반드시 유효하지 않은 것은 아닙니다. 일부 해킹은 CSS 유효성 검사기를 통과 할 때 경고 나 오류를 일으킬 수 있지만 다른 해킹은 문제없이 통과 할 수 있습니다. 시간과 예산이 허용 될 때 더 쉬운 리팩토링을 위해 해킹을 분리하고 문서화하는 것이 중요합니다.
CSS 해킹은 어떤 상황에서는 유용 할 수 있지만, 일반적으로 코드를 더욱 복잡하고 유지 관리하기가 더 어려워 질 수 있으므로 나쁜 관행으로 간주됩니다. 기존 브라우저에서 표준 CSS 기술과 디자인 웹 사이트를 사용하여 우아하게 저하되는 것이 좋습니다.
많은 개발자들이 라는 용어를 오해하는 것 같습니다
많은 분들이 알고 있듯이 Sitepoint는 최근에 제가 한 대규모 CSS 설문 조사 결과를 발표했습니다. 설문 조사가 요청한 질문 중 하나는 다음과 같습니다.
다음 중 다음 중 어떤 Microsoft 브라우저가 CSS 해킹을 작성하거나 포함합니까?
결과를 처음 연구했을 때, 나는이 질문의 결과에서 이상한 점을 놓친 것 같았다. 다행히도 Microsoft의 최신 브라우저에서 일하는 엔지니어 인 David Storey가이를 지적했습니다. 이 질문에 대답 한 1,418 명 중 결과는 다음과 같습니다.
ie9 - 62%
ie10 - 61%
ie11 - 57%
가장자리 - 45%-
ie8 - 35%
ie7 - 9%-
ie6 - 3%
ie5.5 - 1%
개발자의 60% 이상이 IE9 및 IE10에 대한 CSS 해킹을 작성한다고 주장하는 것은 충분히 나쁘지 만 Edge는 45%입니까? Edge 용 해킹이 게시되었지만 아직 Browserhacks 웹 사이트에 있지 않으므로 많은 사람들이 해당 브라우저에 해킹을 사용하지 않을 것 같습니다. 그러나 더 중요한 질문은 다음과 같습니다. 개발자가 해킹을 요구하는 CSS를 렌더링하는 데 어떤 문제가 발생 하는가?
처음에는 많은 참가자들이 사용자 에이전트 스니핑을 통해 브라우저 감지와 해킹을 혼란스럽게 할 것이라고 생각했습니다. 그러나 그조차도 왜 그 숫자가 가장자리가 그렇게 높은지 설명하지 않을 것입니다.
그런 다음 나는 그들이 질문을 완전히 오해해야한다는 것을 깨달았습니다. 그들은‘브라우저 X의 CSS 해킹 쓰기’는‘지원 브라우저 X’와 동일하다고 생각합니다. 다른 논리적 설명은 실제로 없습니다. 특히 해킹이 필요하지 않은 다른 브라우저의 높은 비율을 고려할 때.
따라서 해킹이 무엇인지 정확히 정의 해 봅시다. 용어에 의해 혼란 스러울 수있는 사람들.
CSS 해킹이란 무엇입니까?
CSS 파일의 무언가가 "해킹"으로 간주 되려면 다른 모든 브라우저를 무시하는 동안 타겟팅되는 브라우저에만 스타일을 적용해야합니다.
예를 들어 봅시다. 이것은 CSS 해킹입니다 :
위의 예제에서 CSS (종종 "Star-Html Hack"이라고도 함)는 이하의 Internet Explorer 버전 만 목표로합니다. IE6을 지원하는 대부분의 개발자는 IE6 이전에 아무것도 신경 쓰지 않으므로 일반적으로 IE6 전용 해킹으로 작동합니다.
.
"핵"인 부분은 별표와 "html"이 뒤 따릅니다. 이것은 범용 선택기와 요소 유형 선택기의 조합입니다. 어느 시점에서 누군가 다른 선택기 앞에 다른 선택기가 다른 브라우저에는 영향을 미치지 않으면 서 특정 버전의 IE에서만 작동한다는 것을 발견했습니다. 이는 위 코드 예제에 정의 된 .sidebar 요소의 왼쪽 마진이 IE6 또는 이전에만 적용됨을 의미합니다. 이 경우 CSS는 실제로 유효하므로 오류 나 경고를받지 못할 것입니다 (나중에 자세한 내용).
다음은 BrowserHacks 웹 사이트에서 가져온 또 다른 예입니다. 이번에는 IE11을 대상으로합니다.
나는 이것이 해킹 인 이유에 대한 세부 사항에 들어 가지 않을 것이지만 (부분적으로 이해하지 못하기 때문에) 위의 CSS는 Internet Explorer 버전 11에만 적용됩니다. 'IE11 이상'이므로 이것이 Microsoft 's Edge Browser에서도 작동한다는 것을 의미한다고 가정하지만 는 확인하지 않았습니다.
여기서 중요한 요점은 브라우저가 대상이되는 것이 아니라 CSS 해킹이 무엇인지 이해하는 데 같은 페이지에 있다는 것입니다.
CSS Hacks가 유효하지 않은 CSS? 입니다
스타일 시트에 해킹이있는 경우 CSS가 W3C의 CSS 유효성 검사기를 통해 실행하면 CSS가 경고 및/또는 오류를 일으킬 수 있습니다. 그러나 그것은 보장이 아니며 무언가가 해킹인지 인식하는 방법도 아닙니다.
CSS에 해킹이 포함되어 있고 경고 나 오류가 발생하지 않을 수 있습니다. 예를 들어, 사용하는 유일한 CSS 해킹이 Star-HTML 해킹을 사용하여 IE6을 대상으로하는 경우 스타일 시트는 해킹과 관련된 오류 나 경고없이 잘 확인됩니다.
또한 (위에서 논의한 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의 특정 버전을 대상으로합니다.
위 내용은 'CSS 해킹'의 정의는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!