기본 문법
style 속성
<div style="...">
...
</div>
- 태그에 CSS를 적용하려면
style
속성을 사용
- 위와 같이 HTML의 태그에 직접 적용 가능하나, 주로 CSS 파일(
.css
) 별도로 만들어 적용
CSS 속성 및 CSS 속성값
<div style="color: #272928">
...
</div>
<div style="color: #272928; background-color: #eeeeee">
...
</div>
규칙
선택자 {
속성: 속성값;
속성: 속성값;
}
- CSS 속성을 각 태그에 넣기보다는 CSS 규칙을 정해 놓고 사용할 것
선택자
태그 이름
h3 {
font-size: 24px;
}
h1
, div
등의 태그에 해당하는 모든 요소에 스타일을 적용
아이디(id)
<h3>우도</h3>
<h3 id="hallasan">한라산 국립공원</h3>
<h3>성산 일출봉</h3>
<h3>군산 오름</h3>
#hallasan {
color: #f56513;
}
- 맨 앞에
#
을 붙여서 #아이디_이름
과 같은 문법으로 사용
- 아이디는 한 페이지 내에서 중복으로 쓸 수 없음
클래스(class)
<h3>우도</h3>
<h3 id="hallasan">한라산 국립공원</h3>
<h3>성산 일출봉</h3>
<h3>군산 오름</h3>
.place {
font-size: 16px;
font-weight: 400;
}
- 아이디는 중복해서 쓸 수 없지만, 클래스는 가능
- 맨 앞에
.
를 붙여 .클래스_이름
형태로 사용
기본 단위
색상
색상 코드
#FFFF00
RGB
rgb(255, 255, 0)
- 빨강, 초록, 파랑 값을 10진수로 써서 색상을 나타냄
- 0~255의 정수
RGBA
rgba(255, 255, 0, 0.5)
- RGB에 알파 값을 추가
- 0~1의 소수
- 1에 가까울수록 불투명, 0에 가까울수록 투명
절대적 크기
픽셀(px)
- 크기의 절대적인 단위
- 화면을 표시하는 기준이 되는 크기
상대적 크기
퍼센트
<div id="parent">
높이: 320px
<div id="child">
높이: 160px
</div>
</div>
#parent {
height: 320px;
}
#child {
height: 50%;
}
%
를 이용
- 부모 태그의 크기에 상대적으로 지정
em
<div id="parent">
크기: 16px
<div id="child">
크기: 64px
</div>
</div>
#parent {
font-size: 16px;
}
#child {
font-size: 4em;
}
rem
- root em
<html>
태그의 font-size
크기
<html>
<body>
크기: 18px
<div id="other">
크기: 32px
</div>
</body>
</html>
html {
font-size: 16px;
}
body {
font-size: 18px;
}
#other {
font-size: 2rem;
}
속성
텍스트
글자색
<span class="red">빨강</span>
<span class="orange">주황</span>
<span class="yellow">노랑</span>
.red {
color: #F23030;
}
.orange {
color: #F28705;
}
.yellow {
color: #F2CB05;
}
글꼴
<html>
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR&family=Poppins&display=swap" rel="stylesheet">
</head>
<body>
<p id="with-poppins">Poppins 있는 Noto Sans KR</p>
<p id="without-poppins">Poppins 없는 Noto Sans KR</p>
</body>
</html>
#with-poppins {
font-family: Poppins, "Noto Sans KR", sans-serif;
}
#without-poppins {
font-family: "Noto Sans KR", sans-serif;
}
- 우선적으로 적용할 글꼴 이름부터 쉼표(
,
)로 이어 차례대로 작성
- 웹 브라우저가 차례대로 확인하면서 적용 가능한 글꼴을 적용
- 글꼴 이름에 공백이 있으면 따옴표(
'
)로 감쌈
글짜 크기
font-size: 16px
글짜 굵기
<span class="bold">굵게</span>
<span class="regular">중간</span>
<span class="light">얇게</span>
.bold {
font-weight: 600;
}
.regular {
font-weight: 400;
}
.light {
font-weight: 200;
}
100
~ 900
에서 100
단위로 올라감
- 중간값은
400
줄 높이
<p class="loose">
넓게<br>
넓게<br>
넓게
</p>
<p class="regular">
보통<br>
보통<br>
보통
</p>
<p class="tight">
좁게<br>
좁게<br>
좁게
</p>
.loose {
font-size: 16px;
line-height: 1.7;
}
.regular {
font-size: 16px;
line-height: 1.5;
}
.tight {
font-size: 16px;
line-height: 1;
}
- 줄과 줄 사이의 간격을 조절
- 단위 없이, 글자 크기에 상대적인 값
텍스트 꾸미기
<a href="https://codeit.kr">
링크
</a>
<br>
<a class="none" href="https://codeit.kr">
밑줄 없는 링크
</a>
<br>
<span class="underline">
밑줄
</span>
<br>
<span class="line-through">
취소선
</span>
.none {
text-decoration: none;
}
.underline {
text-decoration: underline;
}
.line-through {
text-decoration: line-through;
}
none
: <a>
태그에 기본으로 있는 밑줄을 제거
underline
: 밑줄
line-through
: 취소선
배경
배경색
background-color: #272928
배경 이미지
background-image: url('a.png')
background-image:
url('a.png'),
url('b.png'),
url('c.png');
배경 위치
background-position: top;
background-position: right;
background-position: bottom;
background-position: left;
background-position: left top;
background-position: center;
배경의 반복
background-repeat: repeat;
background-repeat: no-repeat;
배경 크기
background-size: 40px 30px;
background-size: cover;
background-size: contain;
- 직접 가로 및 세로 크기 지정 가능
cover
: 비율을 유지하면서 영역에 꽉 차게
contain
: 영역 안에서 최대한 크게
그라디언트
background-image: linear-gradient(#000000, #ffffff);
background-image:
linear-gradient(45deg, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.2));
- 방향 기본값은 180도(위에서 아래)
- 방향을 바꾸려면 맨 앞에 각도 넣기, 단위는
deg
그림자
box-shadow: 5px 10px 15px 8px rgba(0, 0, 0, 0.6);
- 가로, 세로, 흐린 정도(blur), 퍼지는 정도(spread), 색상 순서
불투명도
opacity: 0;
opacity: 0.6;
opacity: 1;
- 요소 전체의 불투명도를 조절
0
~ 1
의 소수 값, 단위 없음
너비
width: 560px
높이
height: 380px
Padding
padding: 8px
padding: 16px 8px
padding: 16px 8px 24px
padding: 16px 8px 24px 10px
Margin
margin: 8px
margin: 16px 8px
width: 520px
margin: 16px auto
auto
는 자동으로 채워주고, margin
의 좌우에서만 동작
- 요소의
width
속성이 정해져있을 때만 auto
사용 가능
margin: 16px 8px 24px
margin: 16px 8px 24px 10px
박스 모델(Box Model)
- HTML/CSS에서 요소는 기본적으로 박스 형태
- Content, Padding, Border, Margin으로 구성
- 요소의 크기는 content를 포함해 border까지
border 속성
border: 2px solid #ededed;
border-radius 속성
- 박스 모델의 모서리를 둥글게 만들 때 사용
border
속성 없이도 사용 가능
border-radius: 16px
border-radius: 16px
border-radius: 9999px
box-sizing 속성
#box {
margin: 20px;
padding: 30px;
width: 100px;
}
#box
요소의 너비 = 100 + 30 + 30 = 160(px)
#box {
margin: 20px;
padding: 30px;
width: 100px;
box-sizing: border-box;
}
- 직관적으로 크기를 지정
box-sizing
속성을 border-box
로 지정하면 #box
요소의 너비 = 100(px)
- 기본값:
content-box
overflow 속성
- 박스의 크기를 지정했을 때 안에 있는 내용이 삐져나오는 현상
overflow
속성을 통해 이를 방지
overflow: hidden;
overflow: auto;
overflow: scroll;
Margin 상쇄(Margin Collapsing)
- 일반적으로 서로 이웃한 태그의 세로 margin은 겹쳐서 나타남
- 부모-자식 관계 태그에서도 margin을 겹쳐서 적용
- 다만, 부모에 padding이나 border가 있으면 경계가 있다고 생각하고 세로 margin을 겹치지 않음
<div id="a">a</div>
<div id="b">b</div>
#a {
margin: 30px;
}
#b {
margin: 20px;
}
#b
의 margin이 #a
의 margin에 완전히 겹쳐 둘 사이의 margin은 30px
<div id="a">
a
</div>
<div id="b">
<div id="c">
c
</div>
b
</div>
#a {
margin: 30px;
}
#b {
margin: 20px;
}
#c {
margin: 40px;
}
#b
의 margin이 #c
에 완젼히 겹쳐 둘 사이의 margin은 40px
#a
의 margin이 #b
에 완전히 겹쳐 둘 사이의 margin은 40px
Display
- 웹 페이지의 레이아웃을 결정하는 CSS의 속성
블록(Block)
block
: 위에서 아래로 차례대로 배치되는 display
속성
- 크기를 지정 가능
<h1>
, <h2>
, ... , <h6>
, <p>
, <div>
인라인(Inline)
inline
: 글을 쓰는 방향으로 줄이 바뀌는 display
속성
- 크기를 지정할 수 없음
- 다만 이미지와 같이 외부 데이터를 보여주는 태그는 인라인이지만, 크기를 지정 가능
<a>
, <br>
, <img>
, <span>
인라인 블록(Inline-block)
inline-block
: 인라인처럼 배치되지만 블록처럼 크기를 갖는 display
속성
float 속성
float
: 요소를 페이지의 왼쪽 혹은 오른쪽에 삽화처럼 배치하고, 그 주변에 인라인 요소를 배치할 수 있는 display
속성
| 블록 | 인라인 블록 | 인라인 |
---|
기본 크기 | 좌우로 꽉 참 | content에 딱 맞게 | content에 딱 맞게 |
배치 | 위에서 아래로 | 글 쓰는 방향 | 글 쓰는 방향 |
width & height | 있음 | 있음 | 없음 |
margin & padding | 있음 | 있음 | 인라인 진행 방향(가로)만 사용 가능 |