프론트엔드/HTML 및 CSS
[CSS] CSS 개념 정리
midcon
2023. 10. 26. 23:27
CSS 규칙
아래처럼 CSS속성을 하나하나 태그에 넣으려면 반복되는 작업이 너무 많아지므로 CSS 규칙을 정해놓고 사용하는게 편하다.
<div style="color: #272928; background-color: #eeeeee;">
...
</div>
CSS 선택자
규칙에서 요소를 선택하는 데 사용하는 부분이다.
태그 이름
h1, div 같은 태그를 쓰면 그 태그에 해당하는 요소들에 모두 스타일을 적용한다.
예를 들어 모든 h3 태그의 글자 크기를 24px로 하려면 아래와 같이 쓴다.
h3 {
font-size: 24px;
}
아이디 (id)
#아이디_이름 과 같은 문법으로 쓴다.
아이디는 한 페이지 안에서 중복으로 쓰면 문제가 생길 수 있으므로 유일해야 한다.
예를 들어서 아이디 이름이 hallasan인 태그에 글자색을 넣으려면 아래와 같이 쓴다.
<h3>우도</h3>
<h3 id="hallasan">한라산 국립공원</h3> // 여기에만 글자색 넣으려고 함
<h3>성산 일출봉</h3>
<h3>군산 오름</h3>
// id 사용법
#hallasan {
color: #f56513;
}
클래스 (class)
여러 개의 요소에 중복해서 CSS 를 적용할 때 아이디를 쓰면 문제가 생길 수 있기 때문에 클래스를 사용한다.
.클래스_이름 과 같은 문법으로 쓴다.
예를 들어 클래스 이름이 place인 모든 태그에 글자 크기와 굵기를 넣으려면 아래와 같이 쓴다.
// 여러 개의 요소에 중복해서 CSS를 적용하고 싶을 때
<h3 class="place">우도</h3>
<h3 class="place" id="hallasan">한라산 국립공원</h3>
<h3 class="place">성산 일출봉</h3>
<h3 class="place">군산 오름</h3>
// class 사용법
.place {
font-size: 16px;
font-weight: 400;
}
절대적인 크기 단위
픽셀 (px)
절대적인 단위로, 화면을 표시하는 기준이 되는 크기이다.
상대적인 크기 단위
퍼센트 (%)
퍼센트는 부모 태그의 크기를 기준하여 상대적으로 지정할 때 쓴다.
예를 들어서 부모 태그의 height의 절반 값을 쓰고 싶다면 height: 50%처럼 쓴다.
<div id="parent">
저는 높이가 320px입니다. // 부모 태그
<div id="child">
저는 높이를 160px로 사용하고 싶어요! // 자식 태그
</div>
</div>
// 퍼센트 사용법
#parent {
background-color: #A655ED;
height: 320px; // 부모 태그의 크기
}
#child {
background-color: #6942D6;
height: 50%; // 퍼센트 사용 -> 160px
}
em
CSS에서 em은 부모 태그 font-size의 크기이다.
예를 들어 부모 태그 글자 크기의 4배를 하고 싶다면, 4em으로 쓴다.
<div id="parent">
저는 16px입니다. // 부모 태그
<div id="child">
저는 64px로 쓰고싶어요! // 자식 태그
</div>
</div>
// em 사용법
#parent {
font-size: 16px; // 부모 태그의 크기
}
#child {
font-size: 4em; // em 사용 -> 64px;
}
rem
rem은 루트(root) em이라는 의미의 단위이며 CSS에서 rem은 <html> 태그의 font-size 크기이다.
예를 들어 <html> 태그 글자 크기에서 2배를 하고 싶다면, 2rem으로 쓴다.
<html>
<body>
저는 18px 입니다. // body 크기 적용
<div id="other">
저는 32px로 쓰고싶어요! // rem 적용할 영역
</div>
</body>
</html>
html {
font-size: 16px; // html 크기
}
body {
font-size: 18px; // body 크기
}
#other {
font-size: 2rem; // rem 적용 -> html 값의 2배 = 2 x 16px = 32px
}