댓글 검색 목록

[css] CSS Selectors

페이지 정보

작성자 운영자 작성일 20-05-04 10:19 조회 1,120 댓글 0

CSS 선택기 소개 


CSS 선택기는 스타일을 지정할 내용을 실제로 선택하는 CSS 규칙 세트의 일부입니다. 

각각의 간단한 설명과 함께 사용 가능한 다양한 종류의 선택기를 살펴 보겠습니다.


https://www.sitepoint.com/css-selectors/ 


유니버셜 셀렉터 


범용 선택기는 와일드 카드 문자처럼 작동하여 페이지의 모든 요소를 ​​선택합니다. 

모든 HTML 페이지는 HTML 태그 내에 배치 된 컨텐츠를 기반으로 합니다. 각 태그 세트는 페이지의 요소를 나타냅니다. 범용 선택기를 사용하는 다음 CSS 예제를 살펴보십시오.


* {
   color: green;
   font-size: 20px;
   line-height: 25px;
}

중괄호 안에 있는 세 줄의 코드 (컬러, 글꼴 크기 및 줄 높이)는 HTML 페이지의 모든 요소에 적용됩니다. 

여기에서 보듯이 범용 선택기는 별표를 사용하여 선언됩니다. 범용 선택기를 다른 선택기와 함께 사용할 수도 있습니다.


요소 유형 선택기 


간단히 "유형 선택기"라고도 하는 이 선택기는 동일한 이름을 가진 하나 이상의 HTML 요소와 일치해야 합니다. 

따라서 nav 선택기는 모든 HTML nav 요소와 일치하고 <ul> 선택기는 모든 HTML 비 순차 목록 또는 <ul> 요소와 일치합니다.


다음 예제에서는 요소 유형 선택기를 사용하여 모든 <ul> 요소를 일치 시킵니다.


ul {
   list-style: none;
   border: solid 1px #ccc;
}

이를 문맥에 맞추기 위해 위의 CSS를 적용 할 HTML 섹션이 있습니다.


<ul>
  <li>Fish</li>
  <li>Apples</li>
  <li>Cheese</li>
</ul>

<div class="example">
  <p>Example paragraph text.</p>
</div>

<ul>
  <li>Water</li>
  <li>Juice</li>
  <li>Maple Syrup</li>
</ul>

페이지의 이 부분을 구성하는 세 가지 주요 요소가 있습니다 : 두 개의 <ul> 요소와 <div>. CSS는 <div>가 아닌 두 개의 <ul> 요소에만 적용됩니다. <ul> 대신 <div>를 사용하도록 요소 유형 선택기를 변경 한 경우 스타일은 두 개의 <ul> 요소가 아닌 <div>에 적용됩니다.


또한 스타일은 <ul> 또는 <div> 요소 내의 요소에는 적용되지 않습니다. 즉, 일부 스타일은 이러한 내부 요소에 의해 상속 될 수 있습니다.


ID Selector 


ID 선택기는 문자열 앞에 해시 또는 파운드 기호 (#)를 사용하여 선언됩니다. 문자열은 개발자가 정의합니다. 이 선택기는 선택기의 값과 동일하지만 해시 기호를 빼고 ID 속성이 있는 HTML 요소와 일치합니다.


예를 들면 다음과 같습니다.


#container {
   width: 960px;
   margin: 0 auto;
}

이 CSS는 ID 선택기를 사용하여 다음과 같은 HTML 요소와 일치 시킵니다.


<div id="container"></div>

이 경우 <div> 요소라는 사실은 중요하지 않으며 모든 종류의 HTML 요소 일 수 있습니다. 값이 container 인 ID 속성이 있는 한 스타일이 적용됩니다.


웹 페이지의 ID 요소는 고유해야 합니다. 즉, ID가 컨테이너 인 특정 페이지에는 단일 요소만 있어야 합니다. ID 선택기 규칙 세트에 사용 된 스타일을 페이지 당 한 번만 사용할 수 있기 때문에 ID 선택기를 매우 융통성 있게 만들 수 없습니다.


동일한 ID를 가진 페이지에 둘 이상의 요소가 있는 경우 스타일은 계속 적용되지만 해당 페이지의 HTML은 기술적 인 관점에서 유효하지 않으므로 이 작업을 수행하지 않는 것이 좋습니다.


비 유연성 문제 외에도 ID 선택기는 매우 높은 특이도의 문제를 가지고 있습니다.


Class Selector 


클래스 선택기는 모든 CSS 선택기 중 가장 유용합니다. 하나 이상의 문자 문자열 앞에 점이 표시됩니다. ID 선택기의 경우와 마찬가지로 이 문자열은 개발자가 정의합니다. 클래스 선택기는 또한 클래스 속성이 클래스와 동일한 값에서 점을 뺀 값으로 설정된 페이지의 모든 요소와 일치합니다.


다음 규칙 세트를 수행하십시오.


.box {
   padding: 20px;
   margin: 10px;
   width: 240px;
}

이러한 스타일은 다음 HTML 요소에 적용됩니다.


<div class="box"></div>

값이 box 인 클래스 속성이 있는 다른 HTML 요소에도 동일한 스타일이 적용됩니다. 클래스 속성이 동일한 단일 페이지에 여러 요소를 사용하면 스타일을 재사용하고 불필요한 반복을 피할 수 있으므로 유리합니다. 이외에도 클래스 선택기는 고유성이 매우 낮으며 나중에 더 자세히 설명합니다.


클래스 선택자가 중요한 동맹국 인 또 다른 이유는 HTML을 통해 여러 클래스를 단일 요소에 추가 할 수 있기 때문입니다. 공백을 사용하여 HTML 클래스 속성에서 클래스를 분리하면 됩니다. 예를 들면 다음과 같습니다.


<div class=”box box-more box-extended”></div>

Descendant Combinator 


하위 항목 선택기 또는 보다 정확하게 하위 항목 결합기를 사용하면 두 개 이상의 선택기를 결합 할 수 있으므로 선택 방법을 보다 구체적으로 지정할 수 있습니다. 예를 들면 다음과 같습니다.


#container .box {
   float: left;
   padding-bottom: 15px;
}

이 선언 블록은 컨테이너의 ID를 가진 요소 안에 상자 클래스가 있는 모든 요소에 적용됩니다. .box 요소가 바로 하위 요소 일 필요는 없습니다. .box를 감싸는 다른 요소가 있을 수 있으며 스타일은 계속 적용됩니다.


다음 HTML을 보십시오.


<div id="container">
  <div class="box"></div>

  <div class="box-2"></div>
</div>

<div class="box"></div>

이전 예제의 CSS를이 HTML 섹션에 적용하면 해당 스타일에 영향을 받는 유일한 요소는 상자 클래스가 있는 첫 번째 <div> 요소입니다. 클래스 2의 클래스가 있는 <div> 요소는 스타일의 영향을 받지 않습니다. 마찬가지로 상자 클래스가 있는 두 번째 <div> 요소는 컨테이너의 ID를 가진 요소 안에 있지 않으므로 영향을 받지 않습니다.


CSS에서 하위 조합을 사용할 때는 주의해야 합니다. 이러한 종류의 선택기는 CSS를 좀 더 읽기 쉽게 만들면서 스타일을 특정 컨텍스트로 불필요하게 제한 할 수 있습니다.이 경우 스타일은 # 컨테이너 내부의 상자로 제한되어 코드를 유연하게 만들 수 없습니다.


Child Combinator 


자식 콤비 네이터를 사용하는 셀렉터는 하위 자식 콤비 네이터를 사용하는 셀렉터와 비슷하지만 바로 하위 요소 만 대상으로 합니다.


#container > .box {
   float: left;
   padding-bottom: 15px;
}

이것은 하위 컴비네이터 예제와 동일한 코드이지만 공백 문자 대신 큰 기호 (또는 직각 괄호)를 사용합니다.


이 예에서 선택기는 상자 클래스가 있고 #container 요소의 직계 자식 인 모든 요소와 일치합니다. 즉, 하위 컴비 네이터와 달리 상자를 감싸는 다른 요소는 있을 수 없습니다. 직접 하위 요소 여야 합니다.


HTML 예제는 다음과 같습니다.


<div id="container">
  <div class="box"></div>

  <div>
    <div class="box"></div>
  </div>
</div>

이 예에서 이전 코드 예의 CSS는 상자 클래스가 있는 첫 번째 <div> 요소에만 적용됩니다. 보시다시피, 상자 클래스를 가진 두 번째 <div> 요소는 다른 <div> 요소 안에 있습니다. 결과적으로 스타일에 상자 클래스가 있어도 해당 요소에는 스타일이 적용되지 않습니다.


이 결합기를 사용하는 선택기는 다소 제한적일 수 있지만 중첩 목록의 스타일을 지정할 때 편리합니다.


General Sibling Combinator 


일반 형제 결합기를 사용하는 선택기는 형제 관계를 기반으로 요소를 일치 시킵니다. 즉, 선택된 요소는 HTML에서 서로 옆에 있습니다.


h2 ~ p {
   margin-bottom: 20px;
}

이 유형의 선택기는 물결표 문자 (~)를 사용하여 선언됩니다. 이 예에서 모든 단락 요소 (<p>)는 <h2> 요소의 형제 인 경우에만 지정된 규칙에 따라 스타일이 지정됩니다. <h2>와 <p> 사이에 다른 요소가 있을 수 있으며 스타일은 여전히 ​​적용됩니다.


위에서 CSS를 다음 HTML에 적용 해 보겠습니다.


<h2>Title</h2>
<p>Paragraph example.</p>
<p>Paragraph example.</p>
<p>Paragraph example.</p>
<div class="box">
  <p>Paragraph example.</p>
</div>

이 예제에서 스타일은 처음 세 단락 요소에만 적용됩니다. 마지막 단락 요소는 <div> 요소 안에 있기 때문에 <h2> 요소의 형제가 아닙니다.


Adjacent Sibling Combinator 


인접한 형제 결합기를 사용하는 선택기는 더하기 기호 (+)를 사용하며 일반 형제 선택기와 거의 동일합니다. 차이점은 대상 요소가 일반 형제 자매가 아니라 즉각적인 형제 자매 여야 한다는 것입니다. 이에 대한 CSS 코드가 어떻게 보이는지 봅시다 :


p + p {
   text-indent: 1.5em;
   margin-bottom: 0;
}

이 예제는 지정된 스타일을 다른 단락 요소 바로 뒤에 오는 단락 요소에만 적용합니다. 즉, 페이지의 첫 번째 단락 요소는 이러한 스타일을 받지 않습니다. 또한 두 단락 사이에 다른 요소가 나타나는 경우 두 단락의 두 번째 단락에는 스타일이 적용되지 않습니다.


따라서 이 선택기를 다음 HTML에 적용하면


<h2>Title</h2>
<p>Paragraph example.</p>
<p>Paragraph example.</p>
<p>Paragraph example.</p>

<div class="box">
  <p>Paragraph example.</p>
  <p>Paragraph example.</p>
</div>

… 스타일은이 HTML 섹션의 두 번째, 세 번째 및 다섯 번째 단락에만 적용됩니다.


Attribute Selector 


속성 선택기는 HTML 속성의 존재 및 / 또는 값을 기반으로 요소를 대상으로 하며 대괄호를 사용하여 선언됩니다.


input[type="text"] {
   background-color: #444;
   width: 200px;
}

하위 콤비 네이터와 함께 사용하려는 경우를 제외하고 여는 대괄호 앞에 공백이 없어야 합니다. 위의 CSS는 다음 요소와 일치합니다.


<input type="text">

그러나 이것은 일치하지 않습니다.


<input type="submit">

속성 선택기는 다음과 같이 값 없이 속성 자체 만 사용하여 선언 할 수도 있습니다.


input[type] {
   background-color: #444;
   width: 200px;
}

이는 값에 관계없이 모든 입력 요소를 유형의 속성과 일치 시킵니다.


대괄호 외부에 아무것도 지정하지 않고 속성 선택기를 사용할 수도 있습니다 (따라서 요소와 상관없이 속성 만 기반으로 타겟팅). 또한 값을 사용할 때 따옴표 (단일 또는 이중)를 포함하거나 포함하지 않는 옵션이 있습니다.


Pseudo-class 


의사 클래스는 콜론 문자를 사용하여 요소가 있을 수 있는 의사 상태 (예 : 호버링 상태 또는 활성화 상태)를 식별합니다. 일반적인 예를 살펴 보겠습니다.

a:hover {
   color: red;
}

이 경우 셀렉터의 의사 클래스 부분은 : hover 부분입니다. 여기 이 의사 클래스를 모든 앵커 요소 (요소)에 연결했습니다. 즉, 사용자가 요소 위로 마우스를 가져 가면 해당 요소의 색상 속성이 빨간색으로 변경됩니다. 이 유형의 의사 클래스는 동적 의사 클래스입니다. 이는 사용자 상호 작용 (이 경우 마우스가 대상 요소 위로 이동)에 대한 응답으로 만 발생하기 때문입니다.


이러한 유형의 선택기는 요소 만 선택하는 것이 아니라는 점을 인식해야 합니다. 그들은 특정 상태에 있는 요소를 선택합니다. 이 예의 목적 상 상태는 "호버"상태입니다.


Pseudo-element 


마지막으로 CSS에는 의사 요소라고 하는 선택기가 있으며 적절하게 사용하면 매우 유용 할 수 있습니다. 유일한 선택은 이 선택기가 우리가 고려한 다른 예제와는 상당히 다르다는 것입니다. 문맥에서 의사 요소를 봅시다 :


.container:before {
   content: "";
   display: block;
   width: 50px;
   height: 50px;
   background-color: #141414;
}

이 예에서는 한 가지 종류의 의사 요소 인 : before pseudo-element를 사용합니다. 이름에서 알 수 있듯이 이 선택기는 가상 요소를 대상 요소 내부의 페이지에 내용 전에 삽입합니다.



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.