두 개의 클래스가 하나의 div에 할당되면 클래스가 무시됩니다.


84

썸네일 갤러리가 될 태그에 <div>대해 두 개의 클래스를 적용하려는 태그를 만들고있었습니다 <div>. 위치에 대한 한 클래스와 스타일에 대한 다른 클래스. 이런 식으로 스타일을 적용 할 수 있었고 이상한 결과가 나왔고 질문이 생겼습니다.

<div>태그에 두 개의 클래스를 할당 할 수 있습니까 ? 그렇다면 어느 것이 다른 것을 무시하거나 어느 것이 우선 순위를 가지고 있습니까?

답변:


154

div에 여러 클래스를 할당 할 수 있습니다. 클래스 이름에서 다음과 같이 공백으로 구분하십시오.

<div class="rule1 rule2 rule3">Content</div>

그러면이 div는 세 가지 클래스 선택기 .rule1, .rule2.rule3.

CSS 규칙은 스타일 시트에서 발생하는 순서대로 자신의 선택기 일치하고 페이지에있는 개체에 적용되는 두 가지 규칙 (하나 이상의 규칙이 같은 속성을 설정하려고), 다음 사이에 충돌이있는 경우 CSS 특이성 결정한다은 규칙이 우선합니다.

충돌하는 규칙에 대해 CSS 특이성이 동일하면 나중에 스타일 시트 또는 이후 스타일 시트에 정의 된 것이 우선합니다. 객체 자체의 클래스 이름 순서는 중요하지 않습니다. CSS 특이성이 동일한 경우 중요한 것은 스타일 시트의 스타일 규칙 순서입니다.

따라서 다음과 같은 스타일이 있다면 :

.rule1 {
    background-color: green;
}

.rule2 {
    background-color: red;
}

그런 다음 두 규칙이 div와 일치하고 정확히 동일한 CSS 특이성을 갖기 때문에 두 번째 규칙이 나중에 나오므로 우선 순위가 있고 배경이 빨간색이됩니다.


한 규칙의 CSS 특이성이 div.rule1더 높은 경우 ( 보다 높은 점수 .rule2) :

div.rule1 {
    background-color: green;
}

.rule2 {
    background-color: red;
}

그런 다음 우선권을 가지며 여기의 배경색은 녹색이됩니다.


두 규칙이 충돌하지 않는 경우 :

.rule1 {
    background-color: green;
}

.rule2 {
    margin-top: 50px;
}

그러면 두 규칙이 모두 적용됩니다.


+1 CSS 특이성을 설명하는 또 다른 좋은 링크 : maxdesign.com.au/articles/css-cascade
파비안 바니

아래의 대답은 내가 착각하지 않으면 더 정확하다고 생각합니까?
nagates

@nagates-어떤 대답이 더 정확하다고 생각하며 그 이유는 무엇입니까? "아래"에 많은 답변이 있으므로 어떤 답변을 언급했는지, 왜 "더 정확하다"고 생각하는지 모르겠습니다. 귀하의 생각을 설명해 주시면 제 답변을 개선하거나 명확하게 해 드리겠습니다.
jfriend00 2015

jfriend00 : 아래 @ erez-sason의 대답은 그가 언급 한 것입니다. 이것은 당신이 설명했던 것처럼 작동한다고 생각했기 때문에 이상하지만 그의 예는 그가 설명하는 방식으로 분명히 작동합니다. 임베디드 스타일과 링크 된 스타일 사이에 차이가 있는지 궁금합니다.
Adam McCormick

1
@AdamMcCormick-내 대답에는 내가 제공하는 예제 중 하나로 해당 대답의 정보가 이미 포함되어 있습니다. 두 규칙이 div와 일치하고 정확히 동일한 CSS 특이성을 갖기 때문에 두 번째 규칙이 나중에 나오므로 우선 순위와 배경이 있습니다. 빨간색입니다. . 하나의 시나리오가 아닌 여러 가능한 시나리오를 보여주고 모두 설명합니다. OP는 코드에 구체적이지 않았기 때문에 여러 옵션을 다루고 가장 간단한 옵션을 포함하는 일반적인 설명으로 이동했습니다.
jfriend00

28

실제로 CSS에서 마지막으로 정의 된 클래스가 div에 적용됩니다.

확인 해봐:

CSS에서 마지막 빨간색

.blue{ color: blue; }
.red { color: red;  }
<div class="blue red">blue red</div>
<div class="red blue">red blue</div>

vs

css에서 파란색 마지막

.red { color: red;  }
.blue{ color: blue; }
<div class="blue red">blue red</div>
<div class="red blue">red blue</div>


4
이것은 훨씬 더 나은 대답입니다. 허용되는 대답은 오해의 소지가 있습니다.
SD

4

동일한 속성이 있는지 묻는 경우 CSS 규칙에 따라 마지막 문장을 사용합니다.

<div class="red green"></div>

CSS

.red{
 color:red;
}
.green{
 color:green;
}

위의 예에 따라 .green 인 CSS 트리에 따라 마지막 문을 사용 합니다.


3

CSS에서 마지막으로 정의 된 클래스가 다른 것이 적용되지 않으면 우선 순위가 있습니다.

CSS 우선 순위읽어 보고 어떻게 작동하는지 확인하세요.


실제 CSS 자체에서 물리적으로 마지막을 의미합니까, 아니면 목록의 마지막 클래스 이름을 의미합니까?
Brain2000

그는 불행히도 JavaScript classList 메서드를 사용하는 사람들에게는이 디자인 결정이 놀랍고 도움이되지 않는다고 생각하는 사람들에게는 속성 목록의 순서가 아니라 모든 곳에서 정의 된 모든 CSS 규칙 목록에서 실제로 마지막이라는 것을 의미합니다.
David Spector

3

요소에 많은 클래스를 할당 할 수 있으며 공백으로 구분하면됩니다.

<div class="myClass aSecondClass keepOnClassing stayClassySanDiego"></div>

CSS의 캐스케이드 때문에 문서 하단가장 가까운 덮어 쓰기 규칙 이 요소에 적용됩니다.

그래서 만약 당신이

.myClass
{
    background: white;
    color: blue;
}

.keepOnClassing
{
    color: red;
}

빨간색은 사용되지만 배경색은 덮어 쓰지 않았으므로 사용되지 않습니다.

CSS 특이성도 고려해야합니다. 더 구체적인 선택자가있는 경우 다음 항목이 사용됩니다.

.myClass
{
    background: white;
    color: blue;
}

div.myClass.keepOnClassing
{
    background: purple;
    color: red;
}

.stayClassySanDiego
{
    background: black;
}

여기에서 두 번째 선택기는 더 구체적이므로 사용됩니다.

여기에서 모두 살펴볼 수 있습니다 .


(물론 완전하고 정확한 것으로) 모든 시간의 최고의 클래스 이름을 Upvoted
올리버 터너를
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.