컴퓨터/HTML&CSS
HTML의 요소들의 스타일을 제어할 수 있는 CSS를 사용하려면 HTML의 원하는 요소와 범위를 정확하게 선택할 수 있어야 합니다.
CSS문법에서는 원하는 요소를 선택할 수 있도록 다양한 방법을 제공하고 있습니다.
본문에서는 이런 요소를 선택하는 다양한 방법에 대해서 알아보도록 하겠습니다.
선택자는 요소를 선택하는 문법적인 방법을 일컫는 말입니다.
4개의 큰 분류로 나누어 구분할 수 있습니다.
종류는 크게 중요하지 않습니다. 각각의 표현 방법을 잘 숙지해두세요.
기본선택자는 기본적이고 가장 대중적으로 요소들을 선택하는 방법을 말합니다.
종류 | 기능 | 표현방법 |
전체 선택자 (Universal selector) | 모든 요소를 선택 (Namespace 제한가능) | * |
유형 선택자 (Type selector) | 요소의 이름으로 선택 (태그 이름) | elementname |
클래스 선택자 (Class selector) | 요소의 클래스명으로 선택 | .classname |
ID 선택자 (ID selector) | 요소의 아이디명으로 선택 | #idname |
속성 선택자 (Attribute selector) | 해당 특성을 포함한 요소를 선택 | [attr] , [attr=value] |
CSS를 이용하다 보면 문서 전체의 요소들을 선택하여 제어하고 싶을 때 사용합니다.
보통 CSS를 이용하여 디자인하기 위한 초기화 과정에서 많이 사용하곤 합니다.
*{
margin: 0px;
padding: 0px;
border: 0px;
}
태그명을 가지고 요소를 선택합니다.
즉 CSS 적용되는 HTML의 모든 동일한 태그명을 선택하는 선택자입니다.
전체 문서에서 특정 태그명을 가진 요소들을 전부 제어할 때 주로 사용됩니다.
/*태그명으로 요소 선택*/
h1{
background-color: black;
}
h2{
background-color: blue;
}
동일한 클래스명을 가진 요소들을 선택하는 선택자입니다.
DOT(. ) 클래스명으로 선택합니다. (클래스 명은 중복될 수 있습니다.)
/* classname이 'article'이라는 요소에 접근할 때 */
.article{
/*원하는 스타일 적용*/
}
동일한 ID를 가진 요소들을 선택하는 선택자입니다.
#ID명으로 선택합니다.(ID명은 중복되지 않습니다.)
/* ID값이 'mastertable'이라는 요소에 접근 할 때*/
#mastertable{
/*원하는 스타일 적용*/
}
요소(태그)들에서는 속성과 값들이 존재합니다.
해당 선택자는 속성과 값들의 포함, 일치, 만족 등을 확인하여 요소를 선택합니다. (더 자세한 내용은 여기)
/*해당 속성이 존재하는 경우*/
[attribute]{
}
/*해당 속성과 값이 일치하는 경우*/
[attribute = value]{
}
거창하게 그룹 선택 자라고 구분 지었지만 사실 여러 요소를 한 번에 선택하기 위한 방법입니다.
예를 들어 | ||
class명이 article인 요소들과 h2 태그명을 가진 요소들을 한 번에 선택하고 싶은 경우 이 그룹 선택자의 표현을 사용합니다. 쉼표( , )를 이용하여 표현할 수 있습니다.
/*그룹 선택자*/
.article, h2{
/*원하는 스타일 적용*/
}
결합 선택자는 하나이상의 선택자를 선택하고, 관계를 가지는 선택자입니다.
즉, 특정 조건을 가지는 선택자입니다. 특정 선택 요소의 자식, 형제 요소들을 제어하기에 효과적입니다.
CSS 선택자는 부모 요소 쪽으로 접근하는 선택자는 제공하지 않습니다.
종류 | 기능 | 표현 방법 |
자손 결합자 (Descendant combinator) | 좌측 요소를 기준으로 하위 모든 요소들을 선택한다. | 공백으로 표현 |
자식 결합자 (Child combinator) | 좌측 요소를 기준으로 바로 아래 자식요소를 선택한다. | > |
일반 형제 결합자 (General sibling combinator) |
좌측 요소와 부모가 같고 좌측 요소 뒤에부터 있는 모든 요소를 선택한다. | ~ |
인접 형제 결합자 (Adjacent sibling combinator) |
좌측 요소와 부모가 같고 좌측 요소 바로 뒤에 있는 요소를 선택한다. | + |
자손 결합은 A요소의 하위 요소 중 모든 B 요소를 선택하라는 의미의 선택자입니다.
즉, 어떤 요소로 범위를 지정한 후 그 안에서 모든 요소를 선택할 수 있습니다.
공백으로 표현하며 자주 사용하는 결합 선택자입니다.
/* article클래스에서 모든 h1태그를 선택해라 /*
.article h1{
//...
}
/* article클래스에서 모든 h1,h2,h3태그를 선택해라 /*
.article h1,h2,h3{
/*...*/
}
자손 결합은 어떤 요소로 범위를 지정한 후 그 안에서 한 단계 아래의 하위 태그만 선택하는 선택자입니다.
예를 들어 다음과 같은 HTML요소들이 존재한다고 가정합시다.
<div class='main'>
<h1>메인 제목</h1>
<div class='article'>
<h1>본문 제목</h1>
</div>
</div>
이때 main클래스 요소 안에 h1(메인 제목)의 요소만을 선택하고 싶다면 자식 결합을 이용하면 됩니다.
/* 자식 결합*/
.main > h1{
/*......*/
}
일반 형제 결합은 좌측 요소와 같은 부모 안의 모든 요소를 선택합니다.
예를 들어 다음과 같은 HTML 요소가 존재한다고 가정합시다.
<div class='article'>
<h1>본문 제목</h1>
<p>본문내용1</p>
<p>본문내용2</p>
</div>
위와 같을 때 일반 형제 결합으로 모든 p요소를 선택할 수 있습니다.
/*일반 형제 결합*/
h1 ~ p{
/*...*/
}
인접 형제 결합은 일반형제 결합과 유사하지만 만나는 바로 첫 번째 요소만을 선택합니다.
/*인접 형제 결합*/
h1 + p{
/*...*/
}
본문 내용1만 선택됩니다.
위와 같이 사용해서 첫 번째 단락만 들여 쓰기를 하는 경우 용의 합니다.
의사 클래스와 의사 요소는 추상적인 개념을 선택할 수 있도록 설계된 선택자입니다.
요소로 존재하지는 않지만 필요한 개념들을 선택할 수 있도록 도와줍니다.
예를 들어, 마우를 올려두는 동작이라던지, 이미 방문했던 링크라던지, 특정 요소의 첫 번째 글자, 첫 줄 등 이런 추상적인 개념을 선택할 수 있게 해 줍니다.
사전적 정의를 살펴보면 다음과 같습니다.
종류 | 기능 | 표현 방법 |
의사 클래스 (Pseudo classes) |
상태 정보에 대한 선택자 - 동작,행위 예) 방문여부, 마우스 위치여부등 |
: |
의사 요소 (Pseudo elements) |
요소의 추상적 개념에 대한 선택자 예)요소의 첫글자,첫줄 등등 |
:: |
의사 클래스와 의사 요소는 추상적인 개념을 선택하는 것이기 때문에 각각의 이름이 정의되어있습니다.
각각의 자주 사용하는 이름만을 살펴보도록 하겠습니다. 예제는 의사 클래스 , 의사 요소에서 확인하세요)
이름 | 설명 |
:link | 사용자가 방문하지 않은 링크를 선택 |
:visited | 사용자가 방문했던 링크를 선택 |
:hover | 마우스 커서가 링크위에 올라와 있는 요소를 선택 |
:nth-child(n) | n번째 위치에 있는 자식 요소를 선택 |
:focus | 활성화된 input 요소를 선택 |
:checked | 체크된 상태의 input 요소를 선택 |
이름 | 설명 |
::before | 특정 요소의 시작부분에 콘텐츠를 추가한다. |
::after | 특정 요소의 끝부분에 콘텐츠를 추가한다. |
::first-line | 요소의 텍스트 첫 줄을 선택한다. |
::first-letter | 요소의 첫 글자를 선택한다. |
의사 클래스와 의사 요소는 다른 포스트에서 조금 더 집중적으로 다뤄보도록 하겠습니다.
HTML & CSS - [CSS] 요소의 크기와 위치 (width, height, left, top, right, bottom) (0) | 2022.05.25 |
---|---|
HTML & CSS - [CSS] CSS의 다양한 단위 (0) | 2022.05.23 |
HTML - iframes(문서안의 문서) (0) | 2022.02.19 |
HTML - Class 와 Id(태그의 정체성을 부여해 주다) (0) | 2022.01.09 |
HTML - div 와 span (0) | 2021.10.05 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet