본문 바로가기
HTML & CSS/CSS3

[CSS] TIL2 : 선택자의 종류 및 조합방법 / 스타일 적용 우선순위

by charlie-lyc 2021. 4. 27.
728x90
반응형

학습을 시작하기 전에 HTML의 클래스와 아이디 속성에 관한 내용을 먼저 살펴보길 바랍니다.

 

[HTML] TIL5 : 블럭-레벨 및 인라인 요소의 특징 / 클래스 및 아이디 속성 활용

▣ Block-level & Inline Elements HTML을 구성하는 요소들(Elements) 즉 태그들은 크게 두 가지 종류로 구분됩니다. 하나는 블럭-레벨 요소이고 또 다른 하나는 인라인 요소입니다. 간단하게 설명하자면 브

charlie-lyc.tistory.com

 


▣  선택자(Selectors)의 종류

CSS에서 작성되는 방식에 따라 차이는 있지만 가장 많이 사용되는 선택자는 HTML 요소(Element), 클래스(Class), 그리고 아이디(Id) 세 가지입니다. 임의로 작성한 아래의 코드를 예시로 선택자들에 대해 살펴보겠습니다.

 

<body>

  <div id="first-block">
    <h2 class="paragraph-title">First Heading</h2>
    <p class="paragraph">Lorem, ipsum dolor sit amet consectetur 
    adipisicing elit. Natus, veritatis doloribus necessitatibus 
    ipsa ab eveniet quis ut porro animi magnam?</p>
    <div>
      <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. 
      Quod, atque!</p>
    </div>
  </div>
    <div id="second-block">
    <h2 class="paragraph-title">Second Heading</h2>
    <p class="paragraph">Lorem ipsum dolor, sit amet consectetur 
    adipisicing elit. Rerum doloribus beatae cupiditate, quas 
    dicta nesciunt necessitatibus sit suscipit? Necessitatibus, modi!</p>
  </div>
  
</body>

 


□ Element selector

 HTML 요소, 즉 태그의 이름을 의미합니다. HTML 문서 내에는 동일한 태그가 반복되어 사용되기 때문에 좀 더 구분성을 가지기 위해서는 id와 class를 함께 사용하는 것이 편리합니다.

예) body, div, h2, p

 

<style> 태그 내에서 아래와 같이 작성할 수 있습니다.

 

<style>

  /* Element Selector */
  h2 {
    color: green;
  } 

</style>

 

이때 헤딩 태그의 이름인 'h2'를 선택자로 동일하게 작성합니다.

 

 


□ Id selector

id 속성의 값은 HTML 문서 내에서 유일한 값이어야 합니다. 동일한 값의 id 선택자는 존재할 수 없으며 따라서 한 개의 요소를 조작하고자 할 때 id 속성을 사용합니다. 그리고 id 속성 값을 표시할 때는 공백(Space)을 포함하지 않습니다.

예) first-block, second-block

 

<style> 태그 내에서 아래와 같이 작성할 수 있습니다.

 

<style>

  /* '#' for id selector */
  #first-block {
    background-color: #ddd;
  }
  #second-block {
    background-color: #aaa;
  }
  
</style>

 

이때 id 값의 앞에 '#' 기호를 추가하여 선택자를 작성합니다.

 

 


□ Class selector

 class 속성의 값은 여러 HTML 요소들이 공유할 수 있습니다. 하나의 HTML 요소가 여러 개의 class 속성 값을 동시에 가질 수 있으며 따라서 여러 개의 HTML 요소를 동시에 조작하고 싶을 때 class 속성을 사용합니다. 그리고 만약 여러 개의 class 속성 값들을 포함하여 이들을 나열할 때는 공백(Space)으로 구분합니다.

예) paragraph-title

 

<style> 태그 내에서 아래와 같이 작성할 수 있습니다.

 

<style>

  /* '.' for class selector */
  .paragraph-title {
    color: blue;
  } 

</style>

 

이 때 id 값의 앞에 '.' 기호를 추가하여 선택자를 작성합니다.

 

 


반응형

 

▣  선택자의 조합 방법

기본 선택자들을 조합하여 다양한 형태로 선택자를 재작성할 수 있습니다. 그중에서 몇 가지 방법에 대하여 살펴보도록 하겠습니다.

 


□ 여러 개를 동시에 선택

여러 개의 요소를 동시에 선택할 때는 ' , '기호를 이용합니다. <style> 태그 내에서 아래와 같이 작성할 수 있습니다.

 

<style>

  /* Multiple selectors */
  #first-block, #second-block {
    border: 1px solid #ccc;
    padding: 10px;
    margin-bottom: 5px;
  }

</style>

 

first-block 과 second-block 에 동일한 스타일을 적용하기 위해 두 개의 id 선택자를 ' , '로 이어 작성하였고, 스타일을 적용한 결과는 아래와 같습니다.

 

 


□ 중첩된 요소 모두 선택

특정 부모 요소를 지정하여 중첩의 깊이에 관계없이 모든 자식 요소들을 선택할 수 있는 방법입니다. 왼쪽부모 요소이고 오른쪽자식 요소이며, 둘 사이는 공백(Space)으로 구분합니다. <style> 태그 내에서 아래와 같이 작성할 수 있습니다.

 

<style>

  /* Nested selectors */
  #first-block p {
    font-size: 22px;
    border: solid 1px;
  }

</style>

 

first-block 내의 모든 <p> 태그 요소들에 스타일을 적용하기 위해 부모와 자식 관계를 표현하여 선택자를 작성하였고, 스타일을 적용한 결과는 아래와 같습니다.

 

 


□ 직계 자식 요소만 선택

위의 경우와 달리 모든 자식 요소들을 대상으로 하는 것이 아니라 ' > '기호를 이용하여 1단계의 직계 자식 요소들만 선택할 수 있는 방법입니다. <style> 태그 내에서 아래와 같이 작성할 수 있습니다.

 

<style>

  /* Nested directly inside selectors */
  #first-block > p {
    font-size: 22px;
    border: solid 1px;
  }

</style>

 

first-block 내의 1단계 깊이의 <p> 태그 요소에 스타일을 적용하기 위해 직계 관계를 표현하여 선택자를 작성하였고, 스타일을 적용한 결과는 아래와 같습니다.

 

 


 

▣  선택자(Selectors)의 스타일 적용 우선순위

동일한 요소에 대하여 스타일을 중복 설정하게 될 경우 코드의 위치 또는 어떤 선택자를 이용하느냐에 따라 적용 우선순위가 달라지며, CSS파일이 복잡해지면 특별한 코드를 이용하여 위치나 선택자에 관계없이 우선 적용할 수 있습니다.

 


□ <style> 태그 내에서 위치

<style>

  /* Position within <style> */
  h1 {
    color: blue;
  }
  h1 {
    color: orange;
  }

</style>

 

앞서 설명한 CSS의 실행 우선순위의 경우와 마찬가지로 아래쪽에 위치할수록 최종적인 스타일로 적용됩니다. 

 

 


□ 선택자의 종류

<style>

  /* Order of selectors : id > class */
  #title {
    color: green;
  }

  /* Order of selectors : class > element */
  .heading {
    color: red;
  }

  /* Position within <style> */
  h1 {
    color: blue;
  }
  h1 {
    color: orange;
  }
  
</style>

 

요소(태그) 보다 클래스, 클래스보다는 아이디가 스타일 적용 우선순위가 높습니다. 즉 위치와 관계없이 id > class > element 의 순으로 스타일이 우선 적용됩니다.

 

 


□ !important 코드

<style>

  /* Order of selectors : id > class */
  #title {
    color: green;
  }

  /* Order of selectors : class > element */
  .heading {
    color: red;
  }

  /* Position within <style> */
  h1 {
    /*** Important ***/
    color: blue !important;
  }
  h1 {
    color: orange;
  }
  
</style>

 

위치나 선택자의 종류와 관계없이 가장 우선적으로 스타일을 적용할 수 있는 코드입니다.

 

 


 

728x90
반응형

댓글