CSS 속성 선택기에서 "i"는 무엇을 의미합니까?


112

Google Chrome 사용자 에이전트 스타일 시트에서 다음 CSS 선택기를 찾았습니다.

[type="checkbox" i]

무슨 i뜻입니까?


1
@Alexander O'Mara : 선택기 레벨 4는 CSS3의 일부입니다. 레벨 3에서 시작된 모듈의 다음 레벨 일뿐입니다. "CSS4"는 잘못된 이름입니다.
BoltClock

2
@Alexander O'Mara : 나는 그것이 메타에 등장하는 것을보고 싶다. 특히 [css4] 태그의 사용을 처리 할 수있는 방법을 알고 싶습니다. 제가 취할 수있는 가장 과감한 조치는 [css3]의 동의어로 만드는 것입니다. 실제로 그렇게하는 것이 옳은 일입니다.
BoltClock

1
@BoltClock 메타 질문이 올라 왔습니다 ! BTW, 귀하의 답변을이 질문과 병합하는 것에 대해 질문 할 때 여기에서 질문 / 답변을 수정하여 정보를 추가하려고 하셨나요? 아니면 다른 질문으로의 마술 이동 버튼을 언급 하셨나요?
Alexander O'Mara

1
@Alexander O'Mara : 개별 답변을 이동하지 않고 두 개의 전체 질문을 결합합니다. 모드 전용 기능입니다.
BoltClock

1
@TylerH 이 주제에 대해 Meta에 대해 논의했습니다 . 거기에서 토론에 자유롭게 추가하십시오.
Alexander O'Mara

답변:


132

주석에서 언급했듯이 대소 문자를 구분하지 않는 속성 일치를위한 것입니다. 이것은 CSS 선택기 레벨 4의 새로운 기능입니다.

현재 Chrome 49+, Firefox 47+, Safari 9+ 및 Opera 37 + *에서 사용할 수 있습니다. 이전에는 Chrome 39부터 시작되는 Chrome 사용자 에이전트 스타일에서만 사용할 수 있었지만 실험적 기능 플래그를 설정하여 웹 콘텐츠에 사용할 수있었습니다.

* 이전 버전의 Opera도 지원할 수 있습니다.

작업 예 / 브라우저 테스트 :

[data-test] {
    width: 100px;
    height: 100px;
    margin: 4px;
}

[data-test="A"] {
    background: red;
}

[data-test="a" i] {
    background: green;
}
Green if supported, red if not:

<div data-test="A"></div>

브라우저가이 기능을 지원하는 경우 위의 사각형은 녹색, 지원하지 않는 경우 빨간색입니다.


6
가르쳐 주셔서 감사합니다! 새 모자를 즐기십시오. 이런 종류의 것이 선택기 라이브러리에서 작동합니까? 어떤 종류의 브라우저 지원이 있습니까?
Benjamin Gruenbaum 2014

1
@BenjaminGruenbaum Chrome 사용자 에이전트 스타일에서만 사용할 수있는 것 같습니다 (적어도 아직 웹 사이트의 CSS가 아님). 공식 호환성 문서를 찾을 수 없습니다.
Alexander O'Mara

(질문이 병합되었으므로 이전 의견을 다시 게시합니다.) 이와 같은 새롭고 실험적인 표준이 제대로 문서화되지 않은 것은 전혀 놀라운 일이 아닙니다. 즉, 내 대답에는 이것에 대한 더 많은 정보, 즉 작동 방식, 사용 이유 및 Chrome에서 구현되는 방법 (질문에서 제공)이 포함되어 있습니다.
BoltClock

Chrome은 버전 49.0 (현재 베타), Firefox 버전 47.0 (2016 년 6 월 출시 예정)에서 이에 대한 지원을 추가합니다. 출처 : developer.mozilla.org/en-US/docs/Web/CSS/…
Miscreant

1
@LWChris : 그런 브라우저가 실제로 존재하는지 잘 모르겠습니다. IE6는 속성 선택기를 전혀 이해하지 못하며 IE7은 사용자 지정 데이터 속성에서도이를 지원합니다.
BoltClock

36

이것은 선택자 4에 도입 된 속성 선택자에 대한 대소 문자를 구분하지 않는 플래그입니다. . 분명히 그들은이 기능을 빠르면 2014 년 8 월에 Chrome에 구현했습니다.

요컨대 :이 플래그는 브라우저가 type속성에 대한 각각의 값을 대소 문자를 구분하지 않고 일치하도록 지시합니다 . HTML의 속성 값에 대한 기본 선택기 일치 동작은 대소 문자를 구분합니다 . 이는 많은 속성이 대소 문자를 구분하지 않는 값을 갖도록 정의되어 있고 선택기가 대소 문자에 관계없이 모든 올바른 요소를 선택하도록하려는 경우 바람직하지 않습니다. 열거 된 속성 이고 열거 된 속성은 대소 문자를 구분하지 않는 값을 가지고type 있기 때문에 이러한 속성의 한 예입니다 .

관련 커밋은 다음과 같습니다.

  • 179370 — 구현
  • 179401 — 질문의 스크린 샷에 표시된대로 UA 스타일 시트 변경

현재 '실험적 웹 플랫폼 기능 사용'플래그 내에 숨겨져 있으며 chrome : // flags / # enable-experimental-web-platform-features에서 액세스 할 수 있습니다. 이것은 기능이 거의 눈에 띄지 않게 된 이유를 설명 할 수 있습니다. 해당 플래그 뒤에 숨겨진 기능은 내부적으로 만 사용할 수 있으며 활성화되지 않는 한 공개용 코드 (예 : 작성자 스타일 시트)에서는 사용할 수 없습니다. 실험적이므로 프로덕션 용으로 사용할 준비가되지 않았기 때문입니다.

사용할 수있는 테스트 사례는 다음과 같습니다. 플래그가 활성화 및 비활성화되었을 때 결과를 비교합니다.

span[data-foo="bar"] {
    color: red;
}

span[data-foo="bar" i] {
    color: green;
}
<span data-foo="bar">If all of this text is green,</span>
<span data-foo="Bar">your browser supports case-insensitive attribute selectors.</span>

대신 사용자 지정 데이터 속성을 사용합니다. type거의 모든 속성과 함께 사용할 수 있음을 표시하는 사용합니다.

이 글을 쓰는 현재 다른 구현에 대해서는 알지 못하지만 다른 브라우저가 곧 따라 잡을 수 있기를 바랍니다. 이것은 상대적으로 간단하지만 표준에 매우 유용한 추가 기능이며 앞으로 사용할 수 있기를 기대합니다.


나는 "그날 오후"피로를 느끼고있다 ... W3 사양을 읽은 후에도 여전히 완전히 이해하지 못하고있다. 이것에 대한 CSS의 실제 사용은 무엇일까?
Matt

2
@Matt : 속성 선택기 일치는 HTML5에 명시된대로 대소 문자를 구분합니다. HTML5는 특정 속성에 대해 대소 문자를 구분하지 않는 값을 허용하므로 많은 경우 바람직하지 않습니다. 이 플래그를 사용하여 대소 문자에 관계없이 올바른 요소를 선택할 수 있습니다. 스크린 샷에서 예를 들어, 당신은 그것을 찾는 것을 볼 수 있습니다 input[type="search" i]와 같은 요소를 일치하는 <input type="SEARCH">.
BoltClock

1
Chromium 버전 43.0.2357.130 및 '실험적 웹 플랫폼 기능 사용'이 활성화 된 상태에서 작동하는지 확인할 수 있습니다.
Robert Siemer 2015-08-15
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.