두 개의 클래스가 하나의 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.