2012-07-20 3 views
12

을 증가 : http://www.w3.org/TR/CSS21/cascade.html#specificityCSS 클래스의 반복은 CSS의 문서에 따르면 특이성

특이도는 선택의 속성과 의사 클래스의 수 (다른 것들 사이)에 의해 정의된다.

제 질문은, 동일한 클래스 이름을 계속해서 반복하여 특이성을 높일 수 있습니까? 예를 들어

:

.qtxt.qtxt.qtxt.qtxt.qtxt 
{ 
} 

.qtxt.lalgn 
{ 
} 

또는

.lalgn .qtxt//(space added to create child selector) 
{ 
} 

보다 더 높은 특이성을 가지고?

+0

브라우저 별 일 것이라고 추측합니다. –

답변

20

예, 가능하며 의도적으로 가능합니다. 이가 CSS2 사양에서 언급되지 않지만, 그것이 명시 적 Selectors 3 spec 언급된다

참고 반복 occurrances가 [원문] 같은 간단한 선택기 허용되는 특이성을 증가 않는다.

따라서만큼 선택이 유효하고 적용으로 반복 간단한 선택기가 발생할 때 특이성을 증가해야하는 브라우저. 이는 반복 클래스에만 적용될뿐만 아니라 반복되는 ID, 속성 및 의사 클래스에도 적용됩니다. 코드 감안할 때

, .qtxt.qtxt.qtxt.qtxt.qtxt 가장 높은 특이성을해야합니다. 다른 두 선택기도 동일합니다. 콤비는 전혀 특이 계산에 아무런 관계가 없다 :

/* 5 classes -> specificity = 0-5-0 */ 
.qtxt.qtxt.qtxt.qtxt.qtxt 

/* 2 classes -> specificity = 0-2-0 */ 
.qtxt.lalgn 

/* 2 classes -> specificity = 0-2-0 */ 
.lalgn .qtxt 

또한, 마지막 선택의 공간이 후손 콤비가이다; 자식 조합자는 >입니다.

+1

Material Design Lite에서 방금 만났습니다. 그리고 나는 이것이 내가 만난 가장 이상한 CSS 스파게티 가증이라고 말해야합니다. 일부 사람들은 CSS 라이브러리에서 이와 같은 것을 사용하는 것이 좋은 생각이라고 생각할 수는 없습니다. – Senthe

-3

이 같은 특이성을 해킹 할 필요가 없습니다 ... 당신이 값을 강제해야하는 경우, !important를 사용합니다. 당신은 클래스 이름을 번 이상 반복하면

+0

제안을 주셔서 감사합니다. 나는이 질문을 가장 많이 사용합니다. 그러나 ... 아직도 내 질문에 대한 답을 모른다. –

+0

! 가볍게 사용하지 마십시오. 당신은 정말로 특이성 등의 사용을 둘러싼 또 다른 방법이 없다고 생각해야합니다 ...그래야만! important를 사용해야합니다. – brunoais

+0

클래스를 결합하는 것은 해킹이 아니며 특이성을 높이기위한 공식 CSS 사양입니다. '! important'를 사용하면 noob 상태와 css의 무지를 알 수 있습니다. 아주 드물게 CSS 중요성의 요점을 무시하기 때문에 누구나 사용해야합니다! 같은 속성에서'! important'를 선언하는 5 개의 클래스가있을 때, 어떻게 당신의 정신을 찾습니까? 나는 최후의 수단으로'! important'만을 사용하거나 다른 noobs 끔찍한 CSS를 다루는 경우와 전체 라이브러리를 다시 작성하지 않고 작업하게하는 유일한 방법 – TetraDev

1

.qtxt.qtxt.qtxt 가장 높은 특이성을 할 것이다 ... 그러나

http://jsfiddle.net/nXBTp/1/

이는 경우가 그 예를 들어 다른 선택 :

http://jsfiddle.net/nXBTp/2/

+0

감사합니다! :) 호기심에서 어떤 브라우저를 사용 했습니까? 사파리에서 작동하며 파이어 폭스를 시험해보기 –

+0

Chrome, Firefox, Safari 및 IE의 최신 버전에서 테스트했습니다. 각각에 대해 동일한 결과를 얻었습니다. – smilledge

+0

이 동작은 브라우저를 대상으로하며 필요합니다. 참조 용 내 대답을 참조하십시오. – BoltClock

관련 문제