본문 바로가기

자바스프링웹공부(2024)/HTML, CSS

2024.09.06.CSS - 박스모델

반응형

* 둥근테두리 

border-radius속성 : 박스모델의 둥근테두리를 지정

border-radius: 50%; 
/*원형으로 테두리를 표시하는 방법
1. div의 높이와 너비가 같아야 한다.
2.  % 사용. */

 

* 박스모델 여백지정(안쪽/바깥쪽)

* 가로방향 가운데 정렬하기

/* top, bottom : 0px <-> left, right: 자동으로 바깥 여백 조정 , 브라우저 크기를 바꿔도 정중앙에 있음. */
/* auto: 가로방향에서 정중앙에 오게하는 키워드 */
margin: 0 auto;
(==)
margin-left: auto;
margin-right: auto;

* 박스모델 안의 글자 세로방향 가운데 정렬.

#box4 {
	width:200px; height:100px;
 	line-height: 100px;/* div height와 동일하게 맞추면 글자가 박스 가운데로 온다.*/ 
	padding: 10px; /* 원래위치보다 패딩값만큼 글자가 떨어짐. */
}

[결과]

* box-sizing

box-sizing을 지정하지 않으면 초기값은 content-box

content-box 구성 : 콘텐츠크기 + padding + border + margin

border-box 구성 : width + height

#box5 {
	box-sizing: border-box; /* width, height 만큼만 상자크기가 정해진다. */
	width:200px; height:100px;
	border: 5px solid black;
	padding: 10px; /* 원래위치보다 패딩값만큼 글자가 떨어짐. */
	background-color: green;
    line-height: 100px;/* div height와 동일하게 맞추면 글자가 박스 가운데로 온다.*/
 }
 #box6 {
	box-sizing: content-box; /* 디폴트값(content-box)에 패딩이랑 보더 값이더해진다.  */
	width:200px; height:100px;
	border: 5px solid black;
	padding: 10px; /* 원래위치보다 패딩값만큼 글자가 떨어짐. */
    background-color: yellow;
    line-height: 100px;/* div height와 동일하게 맞추면 글자가 박스 가운데로 온다.*/
}

 

* 박스모델 배치방법

1. display 속성

- <li> 태그는 블록요소 이므로 한줄을 다 차지하지만 display: inline-block; 을 사용하면 인라인요소처럼 사용할 수 있다.

ul {
	list-style: none; /* 리스트앞의 특수기호 삭제 */
}
a {
	/* 하이퍼링크 밑줄 없애기 */
	text-decoration: none;
	padding: 15px; /* 하이퍼링크 영역 넓히려고 사용함. */
    /* 하이퍼 링크에서 글자를 넣었으니 여기서 글자색을 변경해야 함. */
    color: #fff;
}
li {
	display:inline-block; 
 	display: none; /* 만들어져 있지만 화면에서 숨길때 사용함.. 속성값 none */
	/*color: #fff;  글자색을 여기에 넣은게 아니고 하이퍼링크에 넣어서 여기서는 글자색이 안바뀜 */
}
<ul>
    <li><a href="#">menu1</a></li>
    <li><a href="#">menu2</a></li>
    <li><a href="#">menu3</a></li>
    <li><a href="#">menu4</a></li>
</ul>

 

2. float 속성

- 왼쪽이나 오른쪽으로 배치하는 속성. ( inline은 전부다 올라가는데 float는 하나씩 올라감 )
- float 속성 지정하면 반드시 해제시켜야 아래쪽에 지정된 블럭요소들이 따라 배치되지 않는다. </h3>
- float 속성을 해제 : clear 속성으로 해제 

#container {
	/* 전체 너비 지정 : 하지않으면 float가 아예 먹히지 않음.*/
	width: 800px;
}
p {
	background-color: yellow;	
}
img {
	/* float: right; /* img가 오른쪽에 붙은뒤에 아래있던 요소들이 오른쪽에다가 갖다 붙는다. */
	 float: left; /* img가 왼쪽으로 붙은뒤에 아래있던 요소들이 왼쪽에다가 갖다 붙는다. 화면상에 둥둥 떠있다??? */
	 margin-right: 50px;
}
.cls{
	 /* float 방향대로 clear 해주면 된다. 해제를 안해주면 공간이 남아있으면 전부다 따라 올라가기때문에 원하는 요소의 위치에 clear 해줘야 함.	 */
	 /* clear: left; */
	 clear: both; /* float를 양쪽 다 해제함 */
}
<body>
	<!-- inline은 전부다 올라가는데 float는 하나씩 올라감 -->
	<div id="container">
		<img alt="tree" src="image4/tree.png">
		<h3>애국가</h3>
		<p>1. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려 강산 대한 사람 대한으로 길이 보전하세</p>
		<p>2. 남산 위에 저 소나무 철갑을 두른 듯 바람 서리 불변함은 우리 기상일세 무궁화 삼천리 화려 강산 대한 사람 대한으로 길이 보전하세</p>
		<p>3. 가을 하늘 공활한데 높고 구름 없이 밝은 달은 우리 가슴 일편단심일세 무궁화 삼천리 화려 강산 대한 사람 대한으로 길이 보전하세</p>
		<p class="cls">4. 이 기상과 이 맘으로 충성을 다하여 괴로우나 즐거우나 나라 사랑하세 무궁화 삼천리 화려 강산 대한 사람 대한으로 길이 보전하세</p>
	</div>
</body>

 

[결과화면]

#box1 {
	background-color: red;
	float: right;
}
#box2 {
	background-color: green;
	float: left;
}
#box3 {
	background-color: blue;
	float: left;
}
#box4 {
	background-color: yellow;
	float: left;
}
.cls {
	clear: left;
}

[결과화면]

 

3. position 속성

 1)위치속성 : 기준위치와 블럭요소 사이가 얼마나 떨어져 있는지 숫자로 지정함.

    위치속성만 있으면 동작을 하지않음. position 속성을 꼭 같이 적어줘야함. 두개가 꼭 세트로 묶어다녀야 함. 

    가로방향(left: 100px, right), 세로방향(top, bottom) 
 2)position 속성 : static, relative, absolute, fixed 속성값을 지정해야만 위치 속성이 움직인다 

   - static:  기본값, 문서의 흐름에 맞추어서 이동 (고정 위치에서 바뀌지 않음).= 아무 동작을 하지않음.
   - relative : 현재 요소의 위치를 기준으로 상대적으로 이동함. 부모가 있으면 부모 기준으로 이동하기도함. 

   - absolute : 문서의 시작점(<body>태그의 시작위치)을 기준으로 이동함. 제일 많이 쓴다고 함. 

   - fixed : 브라우저창(뷰포트: 가시영역-모바일, 피씨, 태블릿 등 )의 위치를 기준으로 이동, 브라우저의 내용을 위/아래쪽으로 스크롤시키면 블록요소가 고정되어 있다. 

 

body {
	/* 스크롤바가 안생기면 확인이 힘들어서 넣어놓음. 의미는 없음.*/
	height: 2000px;
}
div {
	width: 200px;
	height: 100px;
	border: 5px solid black;
	text-align: center;
}
#box1 {
	position: static; 
	left: 150px; top: 110px;
	background-color: red;
}
#box2 {
	position: relative;
	left: 100px; top: 100px;
	background-color: green;
}
#box3 {
	position: absolute;
	left: 100px; top: 100px;
	background-color: blue;
}
#box4 {
	position: fixed;
	left: 300px; top: 100px;
	background-color: orange;
}
<body>
	<div id="box1">static</div>
	<div id="box2">relative</div>
	<div id="box3">absolute</div>
	<div id="box4">fixed</div>
</body>

 

[결과화면]

fixed는 스크롤바를 움직여도 고정되어 있음.

 

반응형