본문 바로가기
WEB/CSS

CSS - 박스 모델

by 둥바 2022. 6. 16.

박스 모델

- 웹 브라우저는 HTML 내의 요소들을 사각형으로 간주하고 웹 페이지에 출력시킨다.

- 요소들을 박스 형태로 그리는 것을 박스 모델이라 한다.

- 박스는 배치, 색상, 경계 등의 속성을 가진다.

- 각 박스는 margin(바깥쪽 여백),border(경계선),padding(안쪽 여백)을 가진다.

- 경계선(border)

- 경계선과 내용 사이의 간격 : 안쪽여백 (padding)

- 요소와 요소 사이의 간격 : 바깥여백(margin)

 

- 스타일 측면에서 문서는 하나 이상의 엘리먼트 박스(body)들로 구성되어있다.

- 안쪽 박스 모델 영역은 바깥쪽 상위 박스 모델의 내용 영역 안으로 제한됨 (박스 안에 박스가 포함되어 있을 수 있음)

예) <div>상위박스<div>중간<div>제일안쪽</div></div> </div>

 

박스 모델 스타일 속성

width 100px 글자 입력 영역 너비
height 30px 글자 입력 영역 높이
margin 10px -상하좌우 모두 10
10px 20px -위,아래 10 좌/우 20
10px 20px 30px-위 10,좌/우 20, 아래 30
10px 20px 30px 40px-위 10,우-20,아래30,좌40(시계방향)
경계선 바깥 외부 여백 크기
padding 10px
auto(자동 조절)
경계선 바깥 내부 여백 크기
margin-top, margin-right, margin-left,margin-bottom 10px -상하좌우 모두 10
10px 20px -위,아래 10 좌/우 20
10px 20px 30px-위 10,좌/우 20, 아래 30
10px 20px 30px 40px-위 10,우-20,아래30,좌40(시계방향)
경계선 바깥 외부 여백 크기 (위치)
padding-top,padding-right,padding-left,padding-bottom 10px
auto(자동 조절)
경계선 바깥 내부 여백 크기 (위치)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>margin_padding</title>
<style type="text/css">
body {
	padding: 0px;
	margin: 0px;
	/* 기본적으로 제공되는 값들을 초기화  */
}

p {
	width: 300px;
	text-align: center;
	margin: 0px;
	padding: 0px;
	background-color:yellow;
	border: 1px solid blue;
}

#target {
	margin : auto;
	padding-top : 10px;
	padding-right : 20px;
	padding-bottom: 30px;
	padding-left: 40px;
	background-color: lime;
	border: 1px solid green;
}


</style>
</head>
<body>
	<p>문단1</p>
	<p id="target">문단2</p>
</body>
</html>

 

박스 모델인 div 등의 요소를 화면의 가운데에 배치하려면 margin: auto 를 활용하면 된다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>box_model</title>
<style type="text/css">
div.test{
	background-color:yellow;
	width:200px;
	padding:10px;
	border: 5px solid red;
	text-align: right;
	margin:auto;
	
}


</style>
</head>
<body>
	<div class="test">div요소</div>
</body>
</html>

경계선

border-style 

- solid 실선, dahsed 점선, dotted 점선, double 이중선, hidden, none 기본값, inset 오목, outset 볼록, ridge 볼록선, groove 오목선

- border-top style, border-right-style, border-bottom-style, border-left-style

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>border-style1</title>
<style type="text/css">
p {
	border-width:5px; /* 테두리 두께  */
	border-color:green;
	/*border-radius: 5px;  테두리 모서리  */
}
</style>
</head>
<body>
	<p style="border-style:none;">none</p>
	<p style="border-style:dashed;">dashed</p>
	<p style="border-top-style:dotted;border-bottom-style:solid;">dotted-solid</p>
	<p style="border-style:double;">double</p>
	<p style="border-style:groove;">groove</p>
	<p style="border-style:ridge;">ridge</p>
	<p style="border-style:inset;">inset</p>
	<p style="border-style:outset;">outset</p>

</body>
</html>
border-style1

none

dashed

dotted-solid

double

groove

ridge

inset

outset

 

border-width : 경계선 굵기 지정 - 대체로 px 추천

- 5px, thick,medium,thin

- border-top-width, border-right-width, border-bottom-width,border-left-width 

 

border-color : 경계선 색상 지정

- #ff0000, rgb(255,0,0), 등

-border-top-color, border-right-color,border-bottom-color,border-left-color

 

border : 경계선 유형 굵기유형 색상 (한꺼번에 지정)

 

border-radius : 경계선 모서리 반지름(둥글게 경계선 처리)

-border-top-left-radius, border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius

 

box-shadow : x,y,blur,color 로 그림자 만들어 줄 수있다.

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>border-style2</title>
<style type="text/css">
h1{
	padding-bottom:5px;
	border-bottom:3px solid #ccc;
}
p {
	padding: 10px;
	border: 2px dotted black;
	
}

p.green {
	border-style:solid;
	border-color: green;
}

div {
	border: 2px solid red;
	border-radius: 10px;
	text-align: right;
}

#shadow{
	width:300px;
	height: 50px;
	background-color: green;
	box-shadow: 20px 10px 5px #666666;
}

</style>
</head>
<body>
	<h1>박스 모델</h1>
	<p>박스 모델은 실제 컨텐츠 영역, 박스와 컨텐츠 영역 사이의 여백인 패딩(padding),
	박스의 테두리(border), 박스간의 여백인 마진(margin) 등의 요소로 구성되어 있다.</p>
	<p class="green">경계선의 색상 : green</p>
	<div>border-radius 속성 사용하면 둥근 경계선을 만들 수 있다.</div>
	<div id="shadow"></div>
</body>
</html>

 

border-image 경계선 이미지 (테두리로 활용 가능)

border-image:url(주소) 크기 round/stretch;

- round : 영역을 채울 이미지 타일이 필요한 경우 이미지 패턴 조정

- stretch : stretch옵션은 이미지가 영역을 채우도록

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
#borderimage1{
	border: 10px solid;
	padding: 15px;
	border-image: url(../image/border.png) 30 round;
}

#borderimage2{
	border: 10px solid;
	padding: 15px;
	border-image: url(../image/border.png) 30 stretch;
}

</style>
</head>
<body>
	<h1>border image property</h1>
	<p>border-image 속성은 주위의 경계로 사용할 이미지를 지정</p>
	
	<p id="borderimage1">round옵션은 영역을 채울 이미지 타일이 필요한 경우 이미지 패턴 조정</p>
	<p id="borderimage2">stretch옵션은 이미지가 영역을 채우도록 </p>
	
	<p>원본 이미지 : </p>
	<img alt="" src="../image/border.png">
	
	<p><strong>Note : </strong> Internet Explorer 10 및 이전 버전은
	이미지 테두리를 지원하지 않는다.</p>
	
</body>
</html>

표현 효과 스타일 속성

display 박스 모델 표시 유형값 
예) block, inline,none,inline-block
표시 유형 지정
visibility 숨김여부 예) visible, hidden 엘리먼트의 공간 표시 여부 지정
opacity 투명도(0.0~1.0) 엘리먼트 공간의 투명도 지정
box-shadow x축간격 y축간격 번짐크기 그림자크기 그림자색상
4px 4px 10px 6px orange
박스 모델 영역에 그림자 효과

- display 속성값으로 'none' 지정하면 해당 공간(자식 엘리먼트 공간 포함)이 생략되어 화면에서 사라진다.

- visibility 속성값을 hidden으로 설정 (화면에 보이지 않도록 숨겨지면서 엘리먼트 내용 대신 빈 공간 표시)

- inline-block 속성 값  : 인라인 형식이면서도 블록 형식처럼 상하좌우 여백과 블록 공간의 폭과 높이를 설정하고자 하는 경우

컨테이너

- 공간 배치에서 상위 엘리먼트와 하위 엘리먼트의 관계는 중요

- 컨테이너 : 하위에 자식 엘리먼트를 포함하는 부모 엘리먼트의 공간 배치상의 역할(상위 엘리먼트 박스 공간) 으로 물건을 담는 상자처럼 하위 엘리먼트들을 자신의 공간 안에서 좌표를 통해 배치

- 컨테이너의 위치가 이동하면 포함된 자식 엘리먼트의 박스 공간도 같이 이동한다.

<body>
	<div>AAA
    	<span>BBB</span>
    </div>
</body>

 

정렬 방식 

text-align

-left, right, center, justify

 

배경 설정  

-배경 색상 : background-color

-배경 이미지: background-image:url('이미지 경로')

- background-size: cover; 이미지 원본 크기 유지 상태에서 이미지가 들어있는 요소의 가로,세로에 이미지를 맞춘다.

- fixed : 배경 위에 텍스트가 떠 있는 처리

- 고정 위치 : left bottom, left top, right bottom

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	body{
	background-color: aqua;
	background-repeat:no-repeat;
	background-image:url("../image/autumn.jpg");
	background-size: cover;
	/* 이미지 원본 크기를 유지한 상태에서 이미지가 들어 있는 요소의 가로,세로에 이미지 맞춘다. */
	
	
	}


</style>
</head>
<body>
	<h1>배경이미지설정</h1>
	<p>background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다. 
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	</p>
</body>
</html>

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">

/*fixed: 배경 위에 텍스트가 떠 있는 느낌처리
이미지의 고정 위치 : left top, left bottom, right bottom*/

body{
	background: url("../image/autumn.jpg") no-repeat right bottom fixed;
}

div {
	width: 300px;
	padding: 20px;
	border : 1px solid black;
}

</style>
</head>
<body>
<div class="bg">
<p>background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.
	background-image 속성을 사용하면 원하는 곳에 배경 이미지를 삽입할 수 있습니다.</p>
</div>

</body>
</html>

 

 

 

하이퍼링크 스타일

- a:link ) 링크가 연결되어 있을 때 스타일

- a:visited ) 이미 방문한 링크 일 때 스타일

- a:hover ) 마우스 올라갈 때 스타일

- a:active ) 마우스 클릭 스타일

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>LINK</title>
<style type="text/css">
a:link{
	color:red;
	text-decoration:none;
}
a:visited{
	color:green;
}

a:hover{
	color:blue;
	font-size:1.5em;
	text-decoration:underline;
}

a:active{
	text-decoration:line-through;
	color:yellow;
}

</style>
</head>
<body>
	<a href="http://google.com">사이트로 이동</a>
</body>
</html>

 

컨텐츠 영역 예시

- resize : both; 크기 조절 옵션으로 우측 하단에 조절 마크

- overflow : auto; 컨텐츠가 길어지면 스크롤바가 자동으로 생김

- height: auto; 내용에 맞춰 높이 자동 결정

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>elem_size</title>
<style type="text/css">
#target1 {
	width:100px;
	height:50px;
	background-color: yellow;
	resize:both; /* 크기 조절 옵션 : 우측 하단에 조절 마크가 생긴다.*/
	overflow:auto; /* 컨텐츠가 길어지면 스크롤바가 생긴다.*/
}

#target2 {
	width: 100px;
	height: auto; /* 컨텐츠에 맞춰서 높이 영역이 자동 결정 */
	background-color: aqua;
}

</style>
</head>
<body>
	<p id="target1">문단 문단 문단 문단 문단 문단 문단 문단</p>
	<div id="target2">구역 구역 구역 구역 구역 구역 구역 구역 구역 구역 구역 구역</div>
</body>
</html>

 

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>liststyle1</title>
<style type="text/css">
ul.a {
	list-style-type:circle;
}

ul.b {
	list-style-type:square;
	list-style-position: inside;
}

ul.c {
	list-style-type:none;
}

</style>
</head>
<body>
	<ul class="a">
		<li>HTML5</li>
		<li>CSS</li>
		<li>JavaScript</li>
	</ul>
	<ul class="b">
		<li>HTML5</li>
		<li>CSS</li>
		<li>JavaScript</li>
	</ul>
	<ul class="c">
		<li>HTML5</li>
		<li>CSS</li>
		<li>JavaScript</li>
	</ul>
</body>
</html>

 

제이쿼리 모바일에서 많이 사용되는 기법

<ul>

 <li><a href="#"></a></li>

</ul>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>liststyle2</title>
<style type="text/css">
ol {
	list-style:none;
	text-align:center;
	border-top:1px solid red;
	border-bottom:1px solid red;
	padding: 10px 0; /*위,아래 10px 좌,우 0px */
}

ol li{
	display: inline; /* li는 block요소이지만 inline으로 변경하여 가로라인으로 배치  */
	text-transform: uppercase;
	padding:0 10px; 
	letter-spacing: 10px; /* 글자 간격 */
	}
	
ol li a{
	text-decoration:none;
	color:black;
}

ol li a:hover{
	text-decoration:underline;
}

div {
	display:inline;
	float:right;
	/*화면에서 오른쪽에서 왼쪽방향으로 배치 */
	border:1px solid red;
}
</style>
</head>
<body>
	<ol>
		<li><a href="#">Home</a></li>
		<li><a href="#">Blog</a></li>
		<li><a href="#">About</a></li>
		<li><a href="#">Contact</a></li>
	</ol>
	<div>div1</div>
	<div>div2</div>
	<div>div3</div>
</body>
</html>

'WEB > CSS' 카테고리의 다른 글

CSS3 레이아웃  (0) 2022.06.20
CSS 기본 예제  (0) 2022.06.15