단일 선택기로 모든 <H> 태그를 타겟팅 할 수 있습니까?


155

페이지에서 모든 h 태그를 타겟팅하고 싶습니다. 나는 당신이 이런 식으로 할 수 있다는 것을 알고 있습니다 ...

h1,
h2,
h3,
h4,
h5,
h6 {
  font: 32px/42px trajan-pro-1,trajan-pro-2;
}

그러나 고급 CSS 선택기를 사용하여보다 효율적인 방법이 있습니까? 예를 들면 다음과 같습니다.

[att^=h] {
  font: 32px/42px trajan-pro-1,trajan-pro-2;
}

(그러나 분명히 작동하지 않습니다)


8
선택할 때 이것은 점점 지루해진다h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, ...
Vortico

답변:


128

아니요,이 경우 쉼표로 구분 된 목록이 필요합니다.


14
Google에서 여기에 방문 하고 CSS에서 쉼표로 구분 된 목록이 무엇을 의미 하는지 궁금해하는 사람들에게는 OP가 제공 한 첫 번째 예입니다. 즉 h1, h2, h3 {}.
bluesmonk 17 년

44

기본 CSS는 아니지만 LESS ( http://lesscss.org )를 사용하는 경우 재귀를 사용 하여이 작업을 수행 할 수 있습니다.

.hClass (@index) when (@index > 0) {
    h@{index} {
        font: 32px/42px trajan-pro-1,trajan-pro-2;
    }
    .hClass(@index - 1);
}
.hClass(6);

Sass ( http://sass-lang.com )에서는이를 관리 할 수 ​​있지만 재귀는 허용하지 않습니다. 그들은 @for이러한 인스턴스에 대한 구문을 가지고 있습니다 :

@for $index from 1 through 6 {
  h#{$index}{
    font: 32px/42px trajan-pro-1,trajan-pro-2;
  }
}

LESS 또는 Sass와 같은 CSS로 컴파일되는 동적 언어를 사용하지 않는 경우 이러한 옵션 중 하나를 반드시 확인해야합니다. CSS 개발을 단순화하고 더 역동적으로 만들 수 있습니다.


12
h1, h2, h3과 같은 CSS에서 for 루프를 만드는 것보다 수동으로 입력하는 것이 확실합니다. 시간과 공간이 덜 걸립니다. 현재와 나중에 이해하는 것이 더 명확합니다.
Muhammad Umer

¯_ (ツ) _ / ¯ "can" != "should". 그럼에도 불구하고 Sass / LESS 옵션은 바닐라 CSS가 제공하지 않는 확장 성을 제공합니다. 같은 것을 생각하십시오 font-size: (48px / @index).
Steve

그것이 귀하의 요구에 가장 잘 맞는다면 괜찮습니다. 이전 의견에서 언급했듯이 어떤 이유로 든 LESS 또는 Sass의 인덱스에서 작업 해야하는 경우이 방법을 사용하면 쉽게 수행 할 수 있습니다. 헤더 번호에 따라 구현이 동적 일 수 있습니다.
Steve

통합 싶지 않은 사람들을 위해 scss/sass자신의 프로젝트에 있지만 생성 할 css함께 scss/sass그들이이 온라인 도구라고 사용할 수 있습니다 sassmeister
사미르 칸

38

SASS를 사용하는 경우이 믹스 인을 사용할 수도 있습니다.

@mixin headings {
    h1, h2, h3,
    h4, h5, h6 {
        @content;
    }
}

다음과 같이 사용하십시오.

@include headings {
    font: 32px/42px trajan-pro-1, trajan-pro-2;
}

편집 : 선택적으로 각 제목 요소에 자리 표시 자 선택기를 확장하여 가장 좋아하는 방법입니다.

h1, h2, h3,
h4, h5, h6 {
    @extend %headings !optional;
}

그런 다음 단일 클래스를 타겟팅하는 것처럼 모든 제목을 타겟팅 할 수 있습니다 (예 :

.element > %headings {
    color: red;
}

그것은 SCSS + 나침반 SCSS에서 아주 작은 걸음 : compass-style.org/reference/compass/helpers/selectors - 제목 (에서 $, $에)
명령형

1
와,이 2 년 후 와서 .. 편집은 황금처럼 보인다! !optional그래도 확장 에서 플래그 의 목적을 이해하고 있다고 확신 합니까? 구글에서 아무것도 찾을 수없는 것 같습니다 ...
Bill



3

모든 h 태그 (h1, h2 등)의 jQuery 선택기는 ": header"입니다. 예를 들어, jQuery를 사용하여 모든 h 태그를 빨간색으로 만들려면 다음을 사용하십시오.

$(':header').css("color","red")


특정 사업부 내에서만 모든 표제를 타겟팅 할 수 있습니까? 예를 들어 $('.my_div :header').css("color","red")?
user1063287

1

바닐라 CSS로 이것을 해결하려면 h1..h6요소 의 조상에서 패턴을 찾으십시오 .

<section class="row">
  <header>
    <h1>AMD RX Series</h1>
    <small>These come in different brands and types</small>
  </header>
</header>

<div class="row">
  <h3>Sapphire RX460 OC 2/4GB</h3>
  <small>Available in 2GB and 4GB models</small>
</div>

패턴을 발견 할 수 있으면 원하는 것을 대상으로하는 선택기를 작성할 수 있습니다. 위의 예에서 모든 h1..h6요소는 CSS3의 의사 클래스 :first-child:not의사 클래스를 결합하여 모든 최신 브라우저에서 사용할 수 있습니다.

.row :first-child:not(header) { /* ... */ }

앞으로 고급 의사 클래스 선택기 :has()후속 형제 콤비 네이터 ( ~)는 웹 표준이 시간이 지남에 따라 계속 발전함에 따라 더 많은 제어 기능을 제공 할 것입니다.



1

다음과 같이 단일 선택기로 대상을 타겟팅하려는 경우 문서의 모든 제목을 분류 할 수 있습니다.

<h1 class="heading">...heading text...</h1>
<h2 class="heading">...heading text...</h2>

그리고 CSS에서

.heading{
    color: #Dad;
    background-color: #DadDad;
}

이것이 항상 모범 사례라고 말하지는 않지만 유용하고 구문 타겟팅에 여러 가지면에서 더 쉬울 수 있습니다.

따라서 모든 h1 ~ h6에 html의 동일한 .heading 클래스를 제공하면 해당 CSS 시트를 사용하는 모든 HTML 문서에 대해 해당 클래스를 수정할 수 있습니다.

거꾸로 "섹션 div 기사 h1 등 {}"에 비해 더 많은 글로벌 제어,

단점은 CSS에서 모든 선택기를 호출하는 대신 html로 입력하는 것이 훨씬 많지만 모든 제목을 대상으로하는 html 클래스가 있으면 도움이 될 수 있다는 것입니다. CSS는 충돌로 인해 발생할 수 있기 때문에


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.