[CSS] CSS상속과 캐스케이딩
작성:    
업데이트:
카테고리: CSS basic
태그: CSS, FE Language, 모두의HTML5&CSS3
CSS 상속
- 부모 태그에 CSS 속성을 적용하면 자식 태그에도 적용되는 것
※ 일부 속성(background-color, margin, padding, position) 등은 해당되지 않는다.
*html 파일
<!DOCTYPE html>
<html lang="ko">
<head>
<title>CSS상속 예제1</title>
<link ref="stylesheet" href="CSS문서명.css" />
</head>
<body>
<header>
<h1>header h1</h1>
<p>header p</p>
</header>
</body>
</html>
* css 파일 header {
color: red;
}
이 경우 header 태그 안의 header h1, header p 모두 빨간색이 된다.
이 때 css 문서가 다음과 같다면 어떻게 될까.
* css 파일 header {
color: red;
}
h1 {
color: blue;
}
p {
color: blue;
}
이 경우 header h1, header p 모두 파란색이 된다. 같은 속성인 경우 부모 태그에게 상속받은 속성보다, 직접 적용된 속성이 더 강하기 때문!
부모 태그가 다르지만, 자식 태그의 이름은 같은 경우?
예를 들어보자.
*html 파일
<!DOCTYPE html>
<html lang="ko">
<head>
<title>CSS상속 예제2</title>
<link ref="stylesheet" href="CSS문서명.css" />
</head>
<body>
<header>
<h1>header h1</h1>
<p>header p</p>
</header>
<footer>
<h1>footer h1</h1>
<p>footer p</p>
</footer>
</body>
</html>
인 경우, css 문서가 다음과 같다면 어떻게 될까.
* css 파일 header {
color: red;
}
h1 {
color: blue;
}
p {
color: blue;
}
결과는 <h1>
태그와 <p>
태그에 속성을 직접 부여하였기 때문에 header, footer
모두 파란색 글씨이다.
만약
<header>
태그 안의<h1>
태그와<p>
태그만 적용하고 싶다면?
누구집 자식인지만 태그명 앞에 써주면 된다.
* css 파일 header {
color: red;
}
header h1 {
color: blue;
}
header p {
color: blue;
}
캐스케이딩
- 케스케이딩은 같은 영역에 같은 디자인을 적용했을 때 어느 디자인을 우선해서 적용하는지의 우선순위를 나타낸다.
- 다음의 3가지가 우선순위에 영향을 미친다.
- CSS 속성이 입력된 순서
- 선택자를 구체적으로 입력했는지 여부
- type/id/class 선택자
가. 입력순서에 따른 우선순위
- 같은 선택자 안에 같은 속성을 적용했을 때 마지막에 작성한 속성값이 우선 적용
*html 파일
<!DOCTYPE html>
<html lang="ko">
<head>
<title>우선순위 예제1</title>
<link ref="stylesheet" href="CSS문서명.css" />
</head>
<body>
<p>Hello World</p>
</body>
</html>
* css 파일 p {
color: red;
}
/* 나중에 적용된 CSS 속성값의 우선순위가 더 높음*/
p {
color: blue;
}
실행결과 나중에 작성된 color: blue; 의 영향을 받아 파란색이 됨을 확인할 수 있다.
나. 선택자 입력에 따른 우선순위
- 선택자를 구체적으로 작성할수록 CSS 속성의 우선순위가 높아진다.
*html 파일
<!DOCTYPE html>
<html lang="ko">
<head>
<title>우선순위 예제2</title>
<link ref="stylesheet" href="CSS문서명.css" />
</head>
<body>
<header>
<h2>Hello World</h2>
</header>
</body>
</html>
* css 파일
/* 선택자를 구체적으로 작성할수록 우선순위가 더 높음*/
header h2 {
color: red;
}
h2 {
color: blue;
}
이 경우 h2 선택자의 css 속성이 나중에 쓰여졌지만 header h2 선택자가 더욱 구체적이기 때문에 header 태그 안의 h2의 선택자는 빨간색 글씨일 것이다.
다. 선택자의 종류에 따른 우선순위
- 선택자의 종류에 따라 우선순위는 달라진다.
- 우선순위 : id선택자 > class선택자 > type선택자
*html 파일
<!DOCTYPE html>
<html lang="ko">
<head>
<title>우선순위 예제3</title>
<link ref="stylesheet" href="CSS문서명.css" />
</head>
<body>
<h3 class="color">Welcome to CSS</h3>
</body>
</html>
* css 파일 1 class vs type
/* class 선택자*/
.color {
color: red;
}
/* type 선택자 */
h3 {
color: green;
}
실행결과 .color인 class 선택자의 우선순위가 h3인 type 선택자보다
우선순위가 높기 때문에 빨간색 글자로 출력된다.
위의 html 파일에 id 선택자를 추가해보자.
*html 파일
<!DOCTYPE html>
<html lang="ko">
<head>
<title>우선순위 예제4</title>
<link ref="stylesheet" href="CSS문서명.css" />
</head>
<body>
<h3 id="color" class="color">Welcome to CSS</h3>
</body>
</html>
* css 파일 2 id vs class vs type
/* id 선택자*/
#color {
color: blue;
}
/* class 선택자*/
.color {
color: red;
}
/* type 선택자 */
h3 {
color: green;
}
실행결과 id 선택자의 우선순위가 class 선택자, type 선택자보다 높기 때문에 글자는 파란색으로 출력될 것이다.
라. 인라인 방식
- HTML 태그에 직접 style 속성을 적용하는 방식인 ‘인라인 방식’과
id 선택자의 우선순위는 어떻게 될까.
*html 파일
<!DOCTYPE html>
<html lang="ko">
<head>
<title>우선순위 예제5</title>
<link ref="stylesheet" href="CSS문서명.css" />
</head>
<body>
<h3 style="color: pink;" id="color" class="color">Welcome to CSS</h3>
</body>
</html>
실행결과 글자는 분홍색으로 출력된다. 때문에 익스터널 방식 중 가장 우선순위가 높은 id 선택자보다도 html 문서에서 직접 속성을 적용하는 인라인 방식의 우선순위가 더 높은 것을 확인할 수 있다.
우선순위 : 인라인 방식 > id 선택자 > class 선택자 > type 선택자
CSS 파일에 주석을 작성하는 방법
- /_ 과 _/ 사이에 주석 내용을 입력
- 주석 내용 안에 주석을 중복으로 넣을 수 없다.
댓글남기기