코딩 공부/HTML + CSS
[HTML+CSS] 15_Float속성
chocbi
2020. 5. 9. 18:32
Float 속성
#01. Float 속성의 기본 특성
1) Float 속성
- Float속성은 뉴스 페이지와 비슷하다.
- 이미지나 박스를 화면의 우측 혹은 좌측에 고정시켜 놓고 텍스트가 그 옆에 흐르듯이 지나가도록 하는 것을 Floating 처리라 한다. 이 때 사용되는 속성이 float속성이다.
- Float 속성은 Block-Level 요소를 부모 박스 안에서 왼쪽이나 오른쪽에 고정시키는 것이 원래의 기능이지만, 다른 박스들과 함께 Floating처리를 하게 되면 다양한 효과를 얻을 수 있다.
2) Float 속성에 적용할 수 있는 값
값 | 설명 |
---|---|
float: left; | 요소를 부모 박스 안에서 왼쪽에 고정시킨다. |
float: right; | 요소를 부모 박스 안에서 오른쪽에 고정시킨다. |
float: inherit; | 부모 요소에 적용된 Float 속성값을 상속 받는다. |
float: none; | Float속성을 적용하지 않는다. (기본값) |
3) Float 속성 사용시, 주의사항
- width 속성에 대한 auto값을 사용할 수 없게 된다.
- %나 px단위의 값만 사용 가능함.
01-Float속성(1).html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<!-- 스타일 시트 -->
<style type="text/css">
#box1 {
width: 300px;
padding: 10px;
border: 1px solid #eee;
margin: 0 0 10px 10px;
/* float는 박스를 좌, 우 위치에 고정시키고, 텍스트가 그 주변에서 흐르도록 처리한다. */
float: right;
}
#box1 img {
width: 100%;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="box1">
<img src="img/title.jpg" />
</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.
최근에 이 용어는 웹 사이트를 작성하는 데 중요도가 높아지고 있으며
웹 디자인, 개발과 관계가 있다.</p>
<p>수많은 상호 의존성이 있는 표준들과 규격들 가운데 일부는
단지 월드 와이드 웹으로만 끝나는 것이 아니라,
인터넷의 관리 측면이기도 하며 이러한 표준들은 직간접적으로
웹 사이트, 웹 서비스 개발과 관리에 영향을 주고 있다.</p>
<p>이러한 것들 모두 "웹 표준"이라고 부르지만 웹 표준으로 이동하는
것을 찬성하는 사람들은 사용성과 접근성에 직접 영향을 미치는 더
높은 수준의 표준에 초점을 두는 경향이 있다.</p>
<p> (출처: 위키백과) </p>
</body>
</html>
출력결과
02-Float속성(2).html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<!-- 스타일시트-->
<style type="text/css">
/**
float의 특성 (2)
- 두 개의 박스가 서로 다른 값을 갖는 경우, 박스가 양쪽에 배치된다.
- 두 박스의 넓이 합이 부모를 가득 채우면, 한 줄을 양분하는 효과를 얻는다.
*/
div#box1 {
width: 150px;
height: 200px;
background-color: #ff00ff;
float: left;
}
div#box2 {
width: 150px;
height: 200px;
background-color: #ff6600;
float: right;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="box1">박스1</div>
<div id="box2">박스2</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.
최근에 이 용어는 웹 사이트를 작성하는 데 중요도가 높아지고 있으며
웹 디자인, 개발과 관계가 있다.</p>
<p>수많은 상호 의존성이 있는 표준들과 규격들 가운데 일부는
단지 월드 와이드 웹으로만 끝나는 것이 아니라,
인터넷의 관리 측면이기도 하며 이러한 표준들은 직간접적으로
웹 사이트, 웹 서비스 개발과 관리에 영향을 주고 있다.</p>
<p>이러한 것들 모두 "웹 표준"이라고 부르지만 웹 표준으로 이동하는
것을 찬성하는 사람들은 사용성과 접근성에 직접 영향을 미치는 더
높은 수준의 표준에 초점을 두는 경향이 있다.</p>
<p> (출처: 위키백과) </p>
</body>
</html>
출력결과
03-Float속성(3).html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<style type="text/css">
/**
float의 특성 (2)
- 두 개의 박스가 서로 다른 값을 갖는 경우, 박스가 양쪽에 배치된다.
- 두 박스의 넓이 합이 부모를 가득 채우면, 한 줄을 양분하는 효과를 얻는다.
*/
div#box1 {
width: 30%;
height: 200px;
background-color: #ff00ff;
float: left;
}
div#box2 {
width: 70%;
height: 200px;
background-color: #ff6600;
float: right;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="box1">박스1</div>
<div id="box2">박스2</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.
최근에 이 용어는 웹 사이트를 작성하는 데 중요도가 높아지고 있으며
웹 디자인, 개발과 관계가 있다.</p>
<p>수많은 상호 의존성이 있는 표준들과 규격들 가운데 일부는
단지 월드 와이드 웹으로만 끝나는 것이 아니라,
인터넷의 관리 측면이기도 하며 이러한 표준들은 직간접적으로
웹 사이트, 웹 서비스 개발과 관리에 영향을 주고 있다.</p>
<p>이러한 것들 모두 "웹 표준"이라고 부르지만 웹 표준으로 이동하는
것을 찬성하는 사람들은 사용성과 접근성에 직접 영향을 미치는 더
높은 수준의 표준에 초점을 두는 경향이 있다.</p>
<p> (출처: 위키백과) </p>
</body>
</html>
출력결과
#02. Float 마감제
1) <이미지+ 텍스트>로 구성된 두 개의 문단 준비하기
<body>
<div id="box1">
<img src="img/title.jpg" />
</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.
최근에 이 용어는 웹 사이트를 작성하는 데 중요도가 높아지고 있으며
웹 디자인, 개발과 관계가 있다.</p>
<div id="box2">
<img src="img/html5.png" />
</div>
<p>수많은 상호 의존성이 있는 표준들과 규격들 가운데 일부는
단지 월드 와이드 웹으로만 끝나는 것이 아니라,
인터넷의 관리 측면이기도 하며 이러한 표준들은 직간접적으로
웹 사이트, 웹 서비스 개발과 관리에 영향을 주고 있다.</p>
<p>이러한 것들 모두 "웹 표준"이라고 부르지만 웹 표준으로 이동하는
것을 찬성하는 사람들은 사용성과 접근성에 직접 영향을 미치는 더
높은 수준의 표준에 초점을 두는 경향이 있다.</p>
<p> (출처: 위키백과) </p>
</body>
2) 박스의 크기 설정 및 Float 속성 지정
<style type="text/css">
#box1,
#box2 {
width: 300px;
padding: 10px;
border: 1px solid #eee;
}
#box1 {
margin: 0 10px 10px 0;
float: left;
}
#box2 {
margin: 0 0 10px 10px;
float: right;
}
#box1>img,
#box2>img {
width: 100%;
}
</style>
3) Float 속성을 사용 후, 새로운 문단을 시작하기 위해 이전 Float 속성 Off하기
.clear {
float: none;
clear: both;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="box1">
<img src="img/title.jpg" />
</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.
최근에 이 용어는 웹 사이트를 작성하는 데 중요도가 높아지고 있으며
웹 디자인, 개발과 관계가 있다.</p>
<!-- 이전 사용했던 float를 끈다 -->
<div class="clear"></div>
<div id="box2">
<img src="img/html5.png" />
출력결과
#03. after 가상 클래스
05-after.html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<!-- 스타일시트 -->
<style type="text/css">
div.parent {
width: 250px;
border: 5px solid #f00;
background: #ffff00;
margin: auto;
}
div.child {
width: 200px;
height: 100px;
border: 5px solid #00f;
background: #f60;
margin: auto;
}
/**
[가상클래스 after, before]
특정 요소의 시작태그의 직전과 종료태그의 직후에 가상의 inline-level의 요소를 생성한다.
*/
/**시작태그 직후 */
.parent:before {
content: 'parent의 before';
display: block;
color: red;
}
.parent:after {
content: 'parent의 after';
display: block;
color: red;
}
.child:before {
content: 'after의 before';
display: block;
color: green;
}
.child:after {
content: 'child의 after';
display: block;
color: green;
}
/** 종료태그 직전 */
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div class="parent">
<!-- .parent의 before -->
<div class="child">
<!-- .child의 before -->
박스1
<!-- .child의 after -->
</div>
<!-- .parent의 after -->
</div>
</body>
</html>
- after가 태그의 끝에 설정을 해주어서 float기능을 끌수 있게 해주었다
출력결과
#04. after 가상 클래스를 사용한 Float 마감 처리
1) Float속성을 해제하는 두 번째 방법
06-Float마감제(2).html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<!-- 스타일 시트 -->
<style type="text/css">
#box1,
#box2 {
width: 300px;
padding: 10px;
border: 1px solid #eee;
}
#box1 {
margin: 0 10px 10px 0;
float: left;
}
#box2 {
margin: 0 0 10px 10px;
float: right;
}
#box1>img,
#box2>img {
width: 100%;
}
/**
[CSS로 Float 마감처리]
1) float영역을 <div class="clear">로 감싼다.
2) .clear: after CSS를 정의한다. (코드 참조);
*/
.clear:after {
content: '';
display: block;
/** float는 block-level에만 적용한다. */
clear: both;
float: none;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="box1">
<img src="img/title.jpg" />
</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.
최근에 이 용어는 웹 사이트를 작성하는 데 중요도가 높아지고 있으며
웹 디자인, 개발과 관계가 있다.</p>
<div class="clear"></div>
<div id="box2">
<img src="img/html5.png" />
</div>
<p>수많은 상호 의존성이 있는 표준들과 규격들 가운데 일부는
단지 월드 와이드 웹으로만 끝나는 것이 아니라,
인터넷의 관리 측면이기도 하며 이러한 표준들은 직간접적으로
웹 사이트, 웹 서비스 개발과 관리에 영향을 주고 있다.</p>
<p>이러한 것들 모두 "웹 표준"이라고 부르지만 웹 표준으로 이동하는
것을 찬성하는 사람들은 사용성과 접근성에 직접 영향을 미치는 더
높은 수준의 표준에 초점을 두는 경향이 있다.</p>
<p> (출처: 위키백과) </p>
</body>
</html>
- after 가상 클래스로 이전에 사용한 Float 속성을 해제한다.
출력결과
#05. 중첩된 HTML 구조에서의 Float 속성 사용하기
1) 중첩된 박스 구조에서의 Float 속성
- Float 속성이 적용된 요소는 부모요소가 감사지 못한다.
- 레이아웃 안에서 다른 요소의 영역을 침범하게 된다.
- 부모요소가 종료하기 전에 Float 마감처리를 추가하면 정상적으로 Float가 적용된 요소를 감쌀수 있다.
07-중첩관계Float(1).html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<style type="text/css">
#parent {
border: 5px dotted #000000;
padding: 10px;
}
#box1 {
width: 300px;
padding: 10px;
border: 1px solid #eee;
margin: 0 0 10px 10px;
float: right;
}
#box1 img {
width: 100%;
}
/** 부모 요소가 끝나기 전에 clear처리 필요함 */
.clear {
clear: both;
float: none;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="box1">
<img src="img/title.jpg" />
</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.</p>
<div class="clear"></div>
</body>
</html>
출력결과
2) 빈 HTML 태그를 사용하지 않고, 부모 요소가 Float 속성이 적용된 자식 요소를 감싸도록 처리하기
- 부모 요소의 after 가상 클래스를 사용하여 Float 마감처리를 한다.
08-중첩관계Float(2).html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<style type="text/css">
#parent {
border: 5px dotted #000000;
padding: 10px;
}
#box1 {
width: 300px;
padding: 10px;
border: 1px solid #eee;
margin: 0 0 10px 10px;
float: right;
}
#box1 img {
width: 100%;
}
/** 부모 요소가 끝나기 전을 의미하는 가상클래스 사용 */
.clear:after {
display: block;
content: '';
clear: both;
float: none;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="parent" class="clear">
<div id="box1">
<img src="img/title.jpg" />
</div>
<p>웹 표준은 월드 와이드 웹의 측면을 서술하고 정의하는
공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다.</p>
</div>
</body>
</html>
출력결과
#06. 박스 나열하기
1) Float 속성을 사용한 박스의 배치
- 같은 크기를 갖는 박스에게 Float 속성을 동일하게 지정하면 가로로 배치되고 부모의 넓이를 벗어나게 될 경우는 자동으로 줄바꿈 된다.
09-박스나열하기.html
<!DOCTYPE html>
<html lnag="ko">
<!-- 페이지 설정 부분 -->
<head>
<!--저장시에 사용된 인코딩(파일의 저장 형식) 값을 웹 브라우저에게 알려준다.- ANSI(euc-kr), UTF-8 -->
<meta charset="utf-8" />
<!--IE의 호환성 보기 모드 금지-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 스마트 장치에서의 해상도 균일화 처리-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<!--브라우저에 표시될 문서 제목-->
<title>My Web Page</title>
<!-- 스타일 시트-->
<style type="text/css">
/* 전체 박스의 크기 지정과 중앙 배치 */
#container {
width: 800px;
border: 5px dotted #cccccc;
padding: 10px;
margin: auto;
}
/** 모든 박스의 크기 일괄 지정 */
#container div {
width: 200px;
height: 200px;
float: left;
}
/** 각 박스에 대한 배경 색상 지정 */
div#box1 {
background-color: #ff00ff;
}
div#box2 {
background-color: #0000ff;
}
div#box3 {
background-color: #00ff00;
}
div#box4 {
background-color: #ff6600;
}
div#box5 {
background-color: #ffff00;
}
/**float 마감제 */
.clear:after {
content: '';
display: block;
float: none;
clear: both;
}
</style>
</head>
<!-- 브라우저에 보여질 부분 -->
<body>
<div id="container" class="clear">
<div id="box1">박스1</div>
<div id="box2">박스2</div>
<div id="box3">박스3</div>
<div id="box4">박스4</div>
<div id="box5">박스5</div>
</div>
</body>
</html>