하나의 규칙 내에서 여러 클래스가있는 대상 요소


117

여러 클래스가있는 요소를 포함하는 HTML이 있고, 동일한 클래스가 다른 컨테이너 내에서 다를 수 있도록 하나의 규칙 내에서 할당해야합니다. 내 CSS에 다음이 있다고 가정합니다.

.border-blue {
    border: 1px solid blue;
}
.background {
    background: url(bg.gif);
}

그런 다음 HTML에 다음이 있습니다.

<div class='border-blue background'>Lorum Crap No-one Cares About Ipsum</div>

단일 규칙 내에서이를 타겟팅 할 수 있습니까? 예를 들어, 내가 아는 것은 작동하지 않습니다.

.border-blue, .background {
    border: 1px solid blue;
    background: url(bg.gif);
}

답변:


182

.border-blue.background { ... }여러 클래스가있는 하나의 항목입니다.
.border-blue, .background { ... }각각 고유 한 클래스가있는 여러 항목을위한 것입니다.
.border-blue .background { ... }'.background'가 '.border-blue'의 자식 인 하나의 항목입니다.

더 자세한 설명 은 Chris의 답변 을 참조하십시오 .


2
감사! 이것이 가능한지 몰랐기 때문에 여기에서 알아 보도록 요청했습니다.
Tanner Ottinger 2011 년

이 솔루션은 나를 위해 작동하지 않습니다 (또는 더 이상 작동하지 않습니다 ...).
fresko

Chris의 답변에서 알 수 있듯이 클래스를 쉼표로 구분해야합니다.
fresko

.border-blue .background { ... }아이 란 무슨 뜻 이야? 나는 이것을 시도하고 이것은 작동하지 않습니다
Eliav Louski

174

누군가 내가 한 것처럼 우연히 발견하고 깨닫지 못하는 경우 위의 두 가지 변형은 다른 사용 사례에 대한 것입니다.

다음과 같은:

.blue-border, .background {
    border: 1px solid #00f;
    background: #fff;
}

파란색 테두리 또는 배경 클래스가있는 요소에 스타일을 추가하려는 경우입니다. 예를 들면 다음과 같습니다.

<div class="blue-border">Hello</div>
<div class="background">World</div>
<div class="blue-border background">!</div>

모두 파란색 테두리와 흰색 배경이 적용됩니다.

그러나 받아 들여지는 대답은 다릅니다.

.blue-border.background {
    border: 1px solid #00f;
    background: #fff;
}

이렇게하면 두 클래스가 모두있는 요소에 스타일이 적용되므로이 예제에서는 <div>두 클래스가있는 에만 스타일이 적용됩니다 (CSS를 올바르게 해석하는 브라우저에서).

<div class="blue-border">Hello</div>
<div class="background">World</div>
<div class="blue-border background">!</div>

따라서 기본적으로 이렇게 생각하면 쉼표 분리는 한 클래스 또는 다른 클래스 가있는 요소에 적용되고 점 분리는 한 클래스 및 다른 클래스 가있는 요소에 적용됩니다 .


12
이것은 거의 읽지 않은 매우 유용한 답변이었습니다. 건배!
psicopoo 2012

1
조심해. 공백이에 없다.blue-border.background
Knu8

2
think of it as AND and OR: 훌륭한 조언입니다. 나는이 추가 할 수 있습니다 .x .y으로 간주 할 수 있습니다y && ancestors.has(x)
싯다 르트 나라 얀 Garg를
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.