Cascading Style Sheets의 줄임말로 마크업 언어가 실제로 화면에 표시되는 방법을 기술하는 언어이다. W3C(웹 표준 기관)에서 CSS를 웹 브라우저의 표준으로 지정했다.
여기서 Cascading은 우선순위가 계단식으로 적용된다는 의미로, CSS는 우선순위가 있는 스타일 시트이다. (스타일 우선순위는 추후)
선택자 {
속성: 속성값;
}
<p style="color: blue">귤귤</P>
귤귤
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS 개요 및 선택자</title>
<style>
h1 {
background-color: black;
color: white ;
}
</style>
</head>
css 파일
div[id=container1] {
background-color: yellow;
}
html 헤드 태그 <link> 태그 내 css파일 경로 지정
<link rel="stylesheet" href="css/selector1.css">
기본적으로 CSS 속성은 style 태그 또는 css파일에 작성된 순서대로 해석이 진행된다.
만약 동일한 요소에 여러 CSS 속성이 설정되는 경우 "우선순위"에 따라 어떤 CSS 스타일이 적용될지 결정된다.
- 1순위 : CSS 속성에 !important;를 붙인 경우
- 2순위 : inline으로 작성한 CSS
- 3순위 : 아이디 선택자(#)
- 4순위 : 클래스 선택자(.)
- 5순위 : 태그 선택자(태그명)
2.1. 태그 선택자(타입 선택자)
* div 태그에 배경선 적용
div {
border: 3px solid red;
}
2.2. 클래스 선택자
* test-1이라는 클래스를 가진 태그에 스타일 적용
.test-1 {
color: red;
}
2.3. id 선택자
* li-1, li-2라는 아이디를 가진 태그에 스타일 적용
#li-1{background-color: red;}
#li-2{background-color: lightcoral;}
2.4. 전체 선택자
전체 태그에 스타일 적용
* {
font-size: 20px;
}
3.1. 속성 선택자
| 번호 | 작성방법 | 설명 |
|---|---|---|
| 1 | 선택자[속성=속성값] | 속성값과 일치하는 요소 선택 |
| 2 | 선택자[속성~=속성값] | 속성에 속성값이 포함되어 있는 요소 선택 |
| 3 | 선택자[속성\=속성값] | 속성이 속성값으로 시작되는 요소 선택 -기준 앞에 * |
| 4 | 선택자[속성^=속성값] | 속성이 속성값으로 시작되는 요소 선택(캐럿기호) |
| 5 | 선택자[속성$=속성값] | 속성이 속성값으로 끝나는 요소 선택(달러기호) |
| 6 | 선택자[속성*=속성값] | 속성에 속성값이 포함되어 있는 요소 선택 |
CSS 파일
* div 태그들 중 name 속성값이 nam1과 "일치"하는 요소를 선택
[name=name1] {
background-color: orangered;
}
* div 태그들 중 name속성값에 name1이 포함되어 있는 요소를 선택
div[name~=name1]{
background-color: yellow;
}
* div 태그들 중 class 속성값이 div로 시작되는 요소 단, -기준 앞에
div[class|=div] {
background-color: cyan;
}
* div 태그들 중 name 속성값이 na로 시작되는 요소(시작과 관련된 기호는 캐럿^)
div[name^=na] {
background-color: blue;
}
* div 태그들 중 class 속성값이 ss로 끝나는 요소(끝과관련된 기호는 달러$)
div[class$=ss] {
color:white;
}
/* div 태그들 중 class 속성값에 i가 포함되어 있는 요소(
div[class*=i] {
background-color: yellow;
color: red;
}
HTML 파일
<div class="div-class" name="name1">div1</div>
<div class="divclass" name="name2">div2</div>
<div class="div-class" name="name3 name1">div3</div>
<div class="class-div" name="name3">div4</div>

3.2. 자손선택자와 후손선택자
<div id="test1">
<h4>div의 자손이면서 후손</h4>
<h4>div의 자손이면서 후손.</h4>
<ul>
<li>ul의 자손이면서 div의 후손입니다.</li>
<li>ul의 자손이면서 div의 후손입니다.</li>
</ul>
</div>
#test1 > h4 {
color : white;
}
#test1 > ul > li {
color : pink;
}
3.2. 등위 선택자
등위 관계에 있는 특정 요소를 선택할 때 사용한다.
<div id="test2">div1</div>
<div>div2</div>
<div>div3</div>
<div>div4</div>
<ul>마지막 div</ul>
#test2+div{
background-color: yellow;
}

#test2~div{
background-color: darkolivegreen;
}
3.2. 반응 선택자
사용자의 움직임에 따라 반응하는 선택자
<div id="active-test" class="area">active 테스트</div>
<div id="hover-test" class="area">hover 테스트</div>
.area {
background-color: yellowgreen;
width: 100px;
height: 100px;
cursor: pointer;
}
#active-test:active{
background-color: yellow;
color: red;
}
#hover-test:hover {
background-color: maroon;
color: white;
}
3.3. 상태 선택자
요소의 상태에 따라 선택되는 선택자들
- checked: 체크된 상태의 요소들
- focus: 초점이 맞춰진 input 요소들
- enabled/disabled : 활성화/비활성화된 요소들
<input type="checkbox" id="apple">
<label for="apple">사과</label>
<input type="checkbox" id="banana">
<label for="banana">바나나</label>
<input type="checkbox" id="pfruit">
<label for="pfruit">패션후르츠</label>
input[type=checkbox]:checked+label{
width: 20px;
height: 20px;
font-size: 20;
}
사과
바나나
패션후르츠
아이디: <input type="text" name="userId" placeholder="아이디"> <br>
비밀번호: <input type="password" name="userPwd" placeholder="비밀번호"> <br>
input[name^=user]:focus {
background-color: palevioletred;
}
원래는 클릭하면 핑크색으로 바뀜 ㅎㅋ
아이디:
비밀번호:
<button>클릭 가능 버튼</button>
<button disabled>클릭 불가능 버튼</button>
button:disabled{
background-color: indigo;
}
button:enabled{
background-color: olive;
}
클릭 가능 버튼
클릭 불가능 버튼
3.4. 일반 구조 선택자
(1) first-of-type : 같이 선택된 요소들 중 첫번째 요소
(2) last-of-type : 같이 선택된 요소들 중 마지막 요소
(3) nth-of-type(n) : 같이 선택된 요소들 중 n번째
(4) nth-last-of-type : 뒤에서부터 n번째 요소(맨 뒤가 1)
HTML 및 CSS 예시
<div id="test1">
<p>테스트1</p>
<p>테스트2</p>
<p>테스트3</p>
<p>테스트4</p>
<p>테스트5</p>
<pre>테스트6</pre>
</div>
#test1 > p:first-child{
background-color: red;
color: white;
}
#test1 > pre:last-child{
background-color: orange;
}
#test1 > p:nth-child(2){
background-color: yellow;
}
#test1 > :nth-child(2n-1){
background-color: purple;
}
#test1 > p:nth-last-child(2n){
background-color: hotpink;
}
| p:nth-last-child(2n) 적용 X | p:nth-last-child(2n) 적용했을 때 |
|---|---|
![]() | ![]() |
3.5. 형태 구조 선택자
(1) first-of-type : 같이 선택된 요소들 중 첫번째 요소
(2) last-of-type : 같이 선택된 요소들 중 마지막 요소
(3) nth-of-type : 같이 선택된 요소들 중 n번째
(4) nth-last-old-type : 뒤에서부터 n번째 요소
HTML 및 CSS 예시
<div id="test2">
<pre>테스트0</pre>
<p>테스트1</p>
<p>테스트2</p>
<p>테스트3</p>
<p>테스트4</p>
<p>테스트5</p>
<pre>테스트6</pre>
</div>
#test2 > p:first-of-type{
background-color: orange;
}
#test2 > pre:first-of-type{
background-color: orangered;
}
#test2 > p:last-of-type{
background-color: skyblue;
}
#test2 > p:nth-of-type(2n){
background-color: red;
}
3.6. 부정 선택자
HTML 및 CSS 예시
<ul id="test3">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
#test3 > li:nth-of-type(3n){
background-color: pink;
}
#test3 > li:not(:nth-of-type(3n)){
background-color: beige;
}
#test3 > li:not(:nth-of-type(2n)) {
color: crimson;
}
| 형태 구조 선택자 | 부정 선택자 |
|---|---|
![]() | ![]() |
3.7. only-child & only-of-type & empty
<div id="test1">
<p>자식1</p>
<pre>자식2</pre>
</div>
<div id="test2">
<p>자식1</p>
<pre>자식2</pre>
</div>
<div id="test3">
<p><!--주석--></p>
<p>123</p>
<p> </p>
<p><span>하이</span></p>
</div>
#test1 > p:only-child{
background-color: steelblue;
}
#test2 > p:only-of-type{
background-color: plum;
}
#test3 > p:empty{
height: 30px;
background-color: lime;
}
| only-child | only-of-type | empty |
|---|---|---|
![]() | ![]() | ![]() |
| 자식이 하나가 아니라서 스타일X | 공백도 요소로 취급 |