EverGiver
박스 모델과 CSS 속성 본문
728x90
박스 모델의 기본 구성
- 박스 모델 (box model)
- 스타일 시트에서 박스 형태의 요소
- 콘탠츠 영역, 박스와 콘텐츠 영역 사이의 여백인 패딩(padding), 박스의 테투리(border), 그리고 여러 박스 모델 사이의 여백인 마진(margin) 등의 요소로 구성
콘텐츠 영역의 크기를 지정하는 width, height 속성
종류 | 설명 |
<크기> | 너비나 높이의 값을 px이나 em 단위로 지정한다. |
<백분율> | 박스 모델을 포함하는 부모 요소를 기준으로 너빗값이나 높잇값을 백분율로 지정 |
auto | 박스 모델의 너빗값과 높잇값이 콘텐츠 양에 따라 자동으로 결정 (기본값) |
박스 모델의 크기를 계산하는 box-sizing 속성
- width/height 속성은 박스 모델에서 콘텐츠 주변의 여백이나 테두리를 뺀 콘텐츠 영역의 크기를 가리킨다.
- 웹 문서에 여러 가지 요소를 배치할 때 실제 박스 모델이 차지하는 크기는 콘텐츠 영역 외에도 콘텐츠와 테두리 사이의 여백, 테두리 두께까지 계산해야 한다.
- box-sizing은 박스 모델의 너비와 높이를 어떻게 결정할 것인지에 따라 border-box와 content-box 중에 선택할 수 있다.
종류 설명 border-box 테두리까지 포함해서 너빗값을 지정 content-box 콘텐츠 영역만 너빗값을 지정 (기본값)
박스 모델에 그림자 효과를 주는 box-shadow 속성
box-shadow: <수평 거리> <수직 거리> <흐림 정도> <번짐 정도> <색상> inset
- box-shadow의 속성 값에서 수평 거리와 수직 거리는 반드시 지정해야 한다.
종류 설명 <수평 거리> 그림자가 가로로 얼마나 떨어져 있는지 나타낸다.
양숫값은 요소의 오른쪽에, 음숫값은 요소의 왼쪽에 그림자를 만든다. (필수 속성)<수직 거리> 그림자가 세로로 얼마나 떨어져 있는지 나타낸다.
양숫값은 요소의 아래쪽에, 음숫값은 요소의 위쪽에 그림자를 만든다. (필수 속성)<흐림 정도> 이 값을 생략하면 0을 기본값으로 하여 진한 그림자를 표시한다.
이 값이 커질수록 부드러운 그림자를 표시하며, 음숫값은 사용할 수 없다.<번짐 정도> 양숫값을 사용하면 모든 방향으로 그림자가 퍼져서 박스보다 그림자가 크게 표시된다.
반대로 음숫값은 모든 방향으로 그림자가 축소되어 보인다. (기본값은 0이다.)<색상> 한 가지만 지정할 수도 있고, 공백으로 구분해서 여러 개의 색상을 지정할 수도 있다.
(기본값은 현재 검은색이다.)inset 이 키워드를 함께 표시하면 안쪽 그림자로 그린다.
→ box-shadow:5px 5px 4px grey
박스 모델의 방향 살펴보기
- 박스 모델의 방향으로 맨 윗부분은 top, 오른쪽은 right, 아랫부분은 bottom, 왼쪽은 left라고 한다.
- 맨 위부터 시작해서 top → right → bottom → left처럼 시계 방향으로 순서가 진행된다.
margin (외여백)
- 요소 주변의 여백을 의미
(요소와 요소 사이의 간격을 조절 가능)
margin: <크기> ¦ <백분율> ¦ auto
종류 | 설명 |
<크기> | 너빗값이나 높잇값을 px이나 em 같은 단위와 함께 수치로 지정 |
<백분율> | 박스 모델을 포함한 부모 요소를 기준으로 너빗값이나 높잇값을 퍼센트(%)로 지정 |
auto | display 속성에서 지정한 값에 맞게 적절한 값을 자동으로 지정 |
- margin은 입력한 방향에서부터 떨어지는 개념
ex) left 100px → 오른쪽으로 100px만큼 이동
★ margin은 +값만 있는 게 아니라 -값도 있다.
: -값을 사용할 경우 기존에 방향과 반대 방향으로 이동한다.
ex) left:100px → 오른쪽으로 100px만큼 이동
left:-100px →왼쪽으로 100px만큼 이동 - margin의 사용법 3가지
1. margin-left, right, bottom, top 방향과 함께 사용하는 방법(가장 많이 사용)
→ 일반적인 상황에서 right, bottom 사용하지 않는다 (벽이 없기 때문이다)
→ right/bottom 대상을 이동시키는 목적보다는 서로의 개체 간의 간격을 벌려주는 용도로 많이 사용한다.
2. margin: 세로 값, 가로 값
3. margin: 그냥 값 - margin 속성을 사용하여 웹 문서를 가운데 정렬하기
- 우선적으로 배치할 요소의 너빗값이 정해져 있어야 한다.
- margin-left와 margin-right의 속성 값을 auto로 지정한다.
- margin:0 auto - 마진 중첩 이해하기
- 주의해야 할 점
▷ 마진 중첩 (margin overlap) / 마진 상쇄 (margin collapse)
: 요소를 세로로 배치할 경우에 각 요소의 마진과 마진이 서로 만나면 마진 값이 큰 쪽으로 겹쳐진다.
▷ 마진 중첩은 아래 마진과 위 마진이 서로 만날 때 큰 마진 값으로 합쳐지는 것이고, 오른쪽 마진과 왼쪽 마진이 만날 경우는 중첩되지 않는다.
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>margin #1</title> <style> *{margin:0;padding:0;} #a{width:300px;height:300px;background-color:red;margin-bottom:100px} #b{width:200px;height:200px;background-color:blue;margin-left:-100px} </style> </head> <body> <div id="a"></div> <div id="b"></div> </body> </html>
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>margin #2</title> <style> *{margin:0;padding:0} #a{width:400px;height:400px;background-color:red;margin:100px} #b{width:200px;height:200px;background-color:green;} </style> </head> <body> <div id="a"></div> <div id="b"></div> </body> </html>
border (테두리)
대상 개체에 테두리를 만들어주는 구문
- border-left, right, bottom, top
: 원하는 방향에만 선을 넣어줄 수 있다. - border:값
: 상하좌우 4가지 방향 모두에 동일한 선 넣기
(테두리 스타일과 두께, 색상을 한꺼번에 표현 가능) - 테두리 스타일을 지정하는 border-style 속성
0. none
: 테두리가 없다 (기본값)
1. solid ★
: 가장 많이 사용하는 표준 실선
2. dashed
: 절취선처럼 생긴 컷팅형 점선
3. dotted
: 동그라미로 되어 있는 점자 형태의 선
4. double
: 두줄 선 - 테두리 두께를 지정하는 border-width 속성
border-width: <크기> ¦ thin ¦ medium ¦ thick
- 테두리 색상을 지정하는 border-color 속성
- border-color 속성을 사용해서 4개 방향의 테두리 색상을 한꺼번에 지정할 수 있다.
- border-top-color처럼 border와 color 사이에 테두리 방향을 넣어 주면 색상을 하나씩 지정할 수도 있다. - 둥근 테두리를 만드는 border-radius 속성
border-radius: <크기> ¦ <백분율>
종류 설명 <크기> 반지름 크기를 px, em의 단위와 함께 수치로 표시 <백분율> 현재 요소의 크기를 기준으로 비율(%)로 지정
- 안에다가 이미지를 넣어서 동그란 이미지로 만들어 디자인적으로 많이 사용한다. - 꼭짓점마다 따로 둥글게 처리하기
- border와 radius 사이에 위치를 나타내는 예약어를 넣어 사용한다.
▷ border-top-left-radius (왼쪽 윗부분)
▷ top-left / top-right / bottom-right / bottom-left 사용
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>margin #3</title> <style> *{margin:0;padding:0;} div{width:300px;height:300px; margin-left:200px; margin-top:200px; border:4px double red} p{width:300px;height:300px; background-color:#123456; margin-left:200px; margin-top:200px; border-radius:50%;} h1{width:200px;height:200px; background-color:violet; padding-left:100px;} </style> </head> <body> <div></div> <p></p> <h1></h1> </body> </html>
padding (내 여백)
콘텐츠 영역과 테두리 사이의 여백
(테두리 안쪽의 여백)
- 태그가 이동을 하기는 하는데 길어지면서 이동
- 특징적인 부분은 margin의 개념과 다르지 않지만 실질적으로 이동을 할 때 잘 사용하지 않는다.
(margin-top 대신해서 가끔씩 사용하는 경우가 있다)
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>margin #4</title> <style> *{margin:0;padding:0;} div{width:200px; font-size:30px; padding-bottom:20px; margin-left:200px; margin-top:200px; border-bottom:1px solid red;} </style> </head> <body> <div> 안녕하세요 </div> </body> </html>
728x90
'Front-End (웹) > CSS' 카테고리의 다른 글
float 속성 (0) | 2021.07.28 |
---|---|
background 속성 (0) | 2021.07.26 |
중앙정렬 (0) | 2021.07.23 |
display 속성 (0) | 2021.07.21 |
CSS 속성 (0) | 2021.07.19 |
Comments