CSS에서 데이터 속성별로 요소 선택


답변:


776

속성 선택기를 사용하는 것을 의미한다면 , 왜 그렇지 않습니까?

[data-role="page"] {
    /* Styles */
}

내가 링크 한 문서에서 모두 다루는 다양한 시나리오에 사용할 수있는 다양한 속성 선택기가 있습니다. 맞춤 데이터 속성은 '새로운 HTML5 기능'이지만

  • 브라우저는 일반적으로 비표준 속성을 지원하는 데 아무런 문제가 없으므로 속성 선택기로 필터링 할 수 있어야합니다. 과

  • CSS는 선택자 구문을 위반하지 않는 한 네임 스페이스가없는 속성 이름에 신경 쓰지 않기 때문에 CSS 유효성 검사에 대해 걱정할 필요가 없습니다.


4
모든 네비게이터와 호환됩니까?
Christophe Debove

21
@Christophe Debove : IE7 + 및 기타 모든 것.
BoltClock

7
data 속성이 설정되었거나 JS를 통해 변경되면 CSS가이를 감지하지 못하는 것 같습니다.
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ

30
추가 조사 후에 $("#element").data("field","value");는 jQuery의 캐시 된 DOM 버전 만 수정하는 데이터 속성 값이 변경되지 않습니다. 실제 DOM 속성을 변경하려면을 사용해야 $("#element").attr("data-field","value");합니다. 내 원래 의견을 무효화합니다.
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ

2
- 네, 데이터 세트를 변경하는 등의 모습이 잘 @Matthew 등의 작업을 수행 jsfiddle.net/BoltClock/k378xgj3의 아무것도 jQuery를 주셔서 감사합니다.
BoltClock

107

최신 브라우저에서 컨텐츠에 관계없이 속성을 선택할 수도 있습니다

와:

[data-my-attribute] {
   /* Styles */
}

[anything] {
   /* Styles */
}

예를 들면 다음과 같습니다. http://codepen.io/jasonm23/pen/fADnu

매우 많은 비율의 브라우저에서 작동합니다.

이것은 JQuery 선택기에서 사용하거나 document.querySelector


와우, 그런 식으로 쓰일 수는 없었어요 !! +1! 그리고 FWIW, 이제 browsershots가 만료되었으므로 IE7 +에서 작동하므로 지원이 거의 전무합니다. Chris Coyier조차도 여기에
Camilo Martin

감사합니다 @CamiloMartin 혼란 / 불쾌감을 피하기 위해 browsershots 링크를 제거했습니다.
ocodo

Chris Coyier의 스레드 css-tricks.com/attribute-selectors/#comment-965838에 대한 링크를 추가했습니다 @CamiloMartin
ocodo

1
어쨌든이 구문 중 어느 것도 새로운 것은 아닙니다. IE6가 IE7 +보다 지원하지 않는 것에 더 많은 사람들이 놀랐습니다. IE8 이상에서 모든 CSS2.1 선택기 가 지원 된다고 가정 할 수 있습니다 . 모든 최신 브라우저는 한동안 레벨 3 선택기 를 지원 했으며 대신 Chrome이 버그가 있습니다.
BoltClock

1
속성 선택기 주제에 대해 다루고 있으므로, 레벨 3 ( ^=, *=$=)에 도입 된 하위 문자열 속성 선택기는 IE7 및 IE8에서도 지원됩니다. 아마도 그들은 표준화되기 전에 IE에서 소개되었을 것입니다.
BoltClock

47

CSS3 부분 문자열 속성 선택자를 주목할 가치가 있습니다.

[attribute^=value] { /* starts with selector */
/* Styles */
}

[attribute$=value] { /* ends with selector */
/* Styles */
}

[attribute*=value] { /* contains selector */
/* Styles */
}

13

여러 선택기를 결합 할 수 href있으며 CSS 만있는 값을 기준으로하는 값과 같은 값을 기준으로 모든 속성과 속성을 선택할 수 있다는 점에서 매우 좋습니다 .

속성 선택기를 사용하면 추가 속성 idclass속성을 사용할 수 있습니다

다음은 속성 선택기 에 대한 멋진 기사입니다.

깡깡이

a[href="http://aamirshahzad.net"][title="Aamir"] {
  color: green;
  text-decoration: none;
}

a[id*="google"] {
  color: red;
}

a[class*="stack"] {
  color: yellow;
}
<a href="http://aamirshahzad.net" title="Aamir">Aamir</a>
<br>
<a href="http://google.com" id="google-link" title="Google">Google</a>
<br>
<a href="http://stackoverflow.com" class="stack-link" title="stack">stack</a>

브라우저 지원 :
IE6 +, Chrome, Firefox 및 Safari

자세한 내용은 여기를 참조하십시오 .


4
    [data-value] {
  /* Attribute exists */
}

[data-value="foo"] {
  /* Attribute has this exact value */
}

[data-value*="foo"] {
  /* Attribute value contains this value somewhere in it */
}

[data-value~="foo"] {
  /* Attribute has this value in a space-separated list somewhere */
}

[data-value^="foo"] {
  /* Attribute value starts with this */
}

[data-value|="foo"] {
  /* Attribute value starts with this in a dash-separated list */
}

[data-value$="foo"] {
  /* Attribute value ends with this */
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.