<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS 실습</title>
<link rel="stylesheet" type="text/css" href="css/external.css">
<style>
.internal{
color: red;
}
</style>
</head>
<body>
<p>Hello</p>
<!-- inline style 적용 -->
<p style="color:blue;">inline Style</p>
<!-- internal style 적용: -->
<p class="internal">internal style</p>
<!-- external style 적용: 외부 파일로 CSS 정의 -->
<p id="external">external style</p>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>전체 선택자 실습</title>
<style type="text/css">
*{
color:red;
}
</style>
</head>
<body>
<h1>전체 선택자 실습</h1>
<p>모든 태그의 color 속성에 red를 적용한다.</p>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>태그 선택자 실습</title>
<style type="text/css">
/* h1 태그의 color 속성에 red를 적용한다.*/
h1{
color:red;
}
/* p 태그의 color 속성에 blue를 적용한다.*/
p{
color:blue;
}
</style>
</head>
<body>
<h1>태그 선택자 실습</h1>
<p>특정 태그의 color 속성에 CSS를 적용한다.</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 선택자 실습</title>
<style type="text/css">
#one {
color: red;
}
#two {
color: blue;
}
</style>
</head>
<body>
<div id="one">
<h1>Hello</h1>
<p>Hello2</p>
<h2>Hello3</h2>
</div>
<div id="two">
<h1>world</h1>
<p>world2</p>
<h2>world3</h2>
</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>클래스 선택자 실습</title>
<style type="text/css">
/* 클래스가 select인 태그 선택 */
.select {
color: red;
}
/* 다음 3가지 경우가 모두 다른 의미이다. */
.select .aaa { /* class 가 select 자손인 aaa 인경우 */
color: red;
}
.select.aaa { /* class 가 select이면서 aaa 인경우 */
background-color: yellow
}
.select , .aaa { /* class 가 select 또는 aaa 인경우 */
font-size: 30px
}
</style>
</head>
<body>
<ul>
<li class="select aaa">홍길동</li>
<li>이순신</li>
<li class="select bbb">유관순</li>
<li>강감찬</li>
<li class="aaa">강감찬</li>
<li>
<ul class="select">
<li>AAA</li>
<li class="aaa">BBB</li>
<li>CCC</li>
</ul>
</li>
</ul>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
[id]{
color:red;
}
a[id]{
background-color: blue;
}
</style>
</head>
<body>
<h1 id="one">홍길동</h1>
<h2>이순신</h2>
<h3 id="two">유관순</h3>
<h2>강감찬</h2>
<h2>윤봉길</h2>
<a href="#" id="link">go</a>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
[id="two"]{
color:red;
}
</style>
</head>
<body>
<h1 id="one">홍길동</h1>
<h2>이순신</h2>
<h3 id="two">유관순</h3>
<h2>강감찬</h2>
<h2>윤봉길</h2>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
a[href^='https']{
color:red;
}
</style>
</head>
<body>
<a href="http://naver.com">one</a><br/>
<a href="https://naver.com" target="_blank">two</a><br/>
<a href="https://daum.net">three</a><br/>
<a href="http://daum.net" target="_blank">four</a><br/>
<a href="https://korea.com">five</a><br/>
<a href="http://korea.com" target="_blank">six</a><br>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
a[href$='net']{
color:red;
}
</style>
</head>
<body>
<a href="http://naver.com">one</a><br/>
<a href="https://naver.com" target="_blank">two</a><br/>
<a href="https://daum.net">three</a><br/>
<a href="http://daum.net" target="_blank">four</a><br/>
<a href="https://korea.com">five</a><br/>
<a href="http://korea.com" target="_blank">six</a><br>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
div[class*='man']{
color:red;
}
</style>
</head>
<body>
<div class="man-news">man-news</div>
<div class="milk man">milk man</div>
<div class="letterman2">letterman2</div>
<div class="newmilk">newmilk</div>
<div class="superman">superman</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
div[id][class$='man']{
color:red;
}
</style>
</head>
<body>
<div id="one">man-news</div>
<div class="milk man">milk man</div>
<div class="letterman2">letterman2</div>
<div class="newmilk">newmilk</div>
<div id="two" class="superman">superman</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
/*
[속성명 |= "속성값"] 선택자는 언더바_ 및 공백이 없는 합성어는 선택할 수 없습니다.
*/
div[class |='en']{
color:red;
}
</style>
</head>
<body>
<div id="one">man-news</div>
<div class="en" >milk man</div>
<div class="kr en">letterman2</div>
<div class="kr">newmilk</div>
<div id="two" class="en-UK">superman</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>속성 선택자 실습</title>
<style type="text/css">
/*
"값"과 일치하는 속성값이 면 선택.
속성값은 공백으로 구분한 여러 개의 속성값 들 중 1개가 될 수 있음
*/
div[class ~='en']{
color:red;
}
</style>
</head>
<body>
<div id="one">man-news</div>
<div class="en" >milk man</div>
<div class="kr en">letterman2</div>
<div class="kr">newmilk</div>
<div id="two" class="en-UK">superman</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>자식 선택자 실습</title>
<style type="text/css">
#one > h1 {
color: red;
}
</style>
</head>
<body>
<div id="one">
<h1>Hello</h1>
<p>Hello2</p>
<div>
<h1>world</h1>
</div>
</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>자손 선택자 실습</title>
<style type="text/css">
#one h1 {
color: red;
}
</style>
</head>
<body>
<div id="one">
<h1>Hello</h1>
<p>Hello2</p>
<div>
<h1>world</h1>
</div>
</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>형제 선택자 실습</title>
<style type="text/css">
/* 인접 형제 선택자는 + 기호를 사용하며,
A와 B가 같은 계층에 있을 때 A 바로 뒤에 B를 선택자로 지정합니다.
*/
h1 + h2 {
color: red;
}
</style>
</head>
<body>
<h1>홍길동</h1>
<h2>이순신</h2>
<h3>유관순</h3>
<h2>강감찬</h2>
<h2>윤봉길</h2>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>형제 선택자 실습</title>
<style type="text/css">
/* 일반 형제 선택자는 ~ 기호를 사용하며,
A와 B가 같은 계층에 있을 때 A 뒤에 있는 모든 B를 선택자로 지정합니다.
*/
h1 ~ h2 {
color: red;
}
</style>
</head>
<body>
<h1>홍길동</h1>
<h2>이순신</h2>
<h3>유관순</h3>
<h2>강감찬</h2>
<h2>윤봉길</h2>
</body>
</html>
📋 실행 📋
/* :link, :visited, :hover, :active, :focus */
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pseudo 실습</title>
<style>
a:link {color:red;} /* unvisited link */
a:visited {color:green;} /* visited link */
a:hover {color:yellow;} /* mouse over link */
a:active {color:blue;} /* selected link */
input:focus {
background-color:lightblue
}
</style>
</head>
<body>
<a href="#" target="_blank">This is a link</a><br>
이름<input type="text" name="username"><br>
나이<input type="text" name="userage"><br>
주소<input type="text" name="useraddress"><br>
</body>
</html>
📋 실행 📋
input:focus (입력 요소에 커서가 활성화되면 선택자로 지정)
input:enabled (상호작용 요소가 활성화되면 선택자로 지정함)
input:disabled (상호작용 요소가 비활성화되면 선택자로 지정함)
input:checked (체크박스가 표시되어 있으면 선택자로 지정)
input:default (default 스타일 적용)
input:indeterminate (정확히 슈정할 수 없는 상태를 입력한 경우)
input:invalid (모든 입력 요소가 유효하지 않은 값)
input:valid (모든 입력 요소가 유효한 값)
input:in-range (정해둔 범위에 맞는 값을 입력했을 때)
input:out-of-range (정해둔 범위를 벗어나는 값을 입력했을 때)
input::placeholder (placeholder 속성이 있을 경우)
input:read-only (readonly 속성이 있을 경우)
input:read-write (readonly 속성이 없을 경우)
input:required (required 속성이 있을 경우)
input:optional (required 속성이 없을 경우)
📋 코드 📋
/* :enabled, :disabled */
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
input:disabled {
background: green;
}
input:enabled {
background: yellow;
}
</style>
</head>
<body>
<input type="text" disabled="disabled" />
<input type="text" />
</body>
</html>
📋 실행 📋
📋 코드 📋
/* :checked */
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
input:checked{
height: 50px;
width: 50px;
}
</style>
</head>
<body>
사과<input type="checkbox" checked="checked" />
배<input type="checkbox" />
바나나<input type="checkbox" checked="checked" />
</body>
</html>
📋 실행 📋
p:first-child (부모의 첫 번째 자식인 모든 p 요소 선택)
p:last-child (p 요소의 마지막 자식 요소를 선택자로 지정)
p:only-child (부모의 유일한 자식인 모든p 요소 선택)
p:ntn-child(n) (p 요소가 부모 요소의 자식 요소 중 n번째 순서가 맞으면 선택)
📋 코드 📋
/* first-child */
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pseudo 실습</title>
<style type="text/css">
/* p:first-child {} : p 태그의 부모기준으로 첫 번째 p태그 반환. */
p:first-child {
color:red;
}
</style>
</head>
<body>
<p>I am a strong man.</p>
<p>I am a strong man.</p>
<div>
<p>div의 첫자식</p>
</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
/* last-child */
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pseudo 실습</title>
<style type="text/css">
/* CSS3
모든 <p>태그중에서 마지막 <i> 태그를 지정한다.
즉, p태그가 부모인 모든 마지막 i태그를 선택한다. */
p > i:last-child {
color:red;
}
</style>
</head>
<body>
<p>I am a <i>strong</i> man. I am a <i>strong</i> man.</p>
<p>I am a <i>strong</i> man. I am a <i>strong</i> man.</p>
</body>
</html>
📋 실행 📋
📋 코드 📋
/* only-child */
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pseudo 실습</title>
<style type="text/css">
/* CSS3
p:only-child{} : 유일한 자식으로 된 모든 p태그 선택 */
p:only-child{
color:red;
}
</style>
</head>
<body>
<div>
<p>1</p>
</div>
<div>
<p>2</p>
<p>3</p>
</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
/* ntn-child(n) */
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
table{
font-size:30pt;
}
/* CSS3
p:nth-child(n){} : n번째 자식으로 된 모든 p태그 선택 */
tr:nth-child(even) {
background: #CCC
}
tr:nth-child(odd) {
background: #999
}
</style>
</head>
<body>
<table>
<tr>
<td>111</td>
<td>222</td>
<td>333</td>
<td>444</td>
<td>555</td>
</tr>
<tr>
<td>111</td>
<td>222</td>
<td>333</td>
<td>444</td>
<td>555</td>
</tr>
<tr>
<td>111</td>
<td>222</td>
<td>333</td>
<td>444</td>
<td>555</td>
</tr>
<tr>
<td>111</td>
<td>222</td>
<td>333</td>
<td>444</td>
<td>555</td>
</tr>
</table>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pseudo 실습</title>
<style type="text/css">
/* CSS3
p:not(p:nth-child(n)){} : n번째 자식이 아닌 모든 p태그 선택 */
p:not(p:nth-child(even)){
color:red;
}
</style>
</head>
<body>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
</body>
</html>
📋 실행 📋
p:empty (몸체(body)가 없는 항목 선택)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
p:empty{
width: 100px;
height: 20px;
background: #ff0000;
}
</style>
</head>
<body>
<p></p>
<p>홍길동</p>
<p>이순신</p>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
p::before{
content:' 훌륭하신 ';
color:red;
font-size: 25px;
}
p::after{
content:' 장군';
color:blue;
}
::placeholder{
color:blue;
}
</style>
</head>
<body>
<p>강감찬</p>
<p>이순신</p>
<input type="text" placeholder="first name">
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS 크기 단위 실습</title>
<style type="text/css">
.basic{
font-size: 8px;
}
#_16px{
font-size: 16px;
}
#one{
font-size: 100%;
}
#two{
font-size: 200%;
}
#three1{
font-size: 1em;
}
#three2{
font-size: 1rem;
}
#four{
font-size: 2em;
}
#five{
font-size: 32px;
}
#six{
/* viewport width
1vw = 1% of viewport width
*/
font-size: 20vw;
}
</style>
</head>
<body class="basic">
<div>홍길동_default</div>
<div id="_16px">홍길동_16px</div>
<div id="one">홍길동_100%</div>
<div id="two">이순신_200%</div>
<div id="three1">유관순_1em</div>
<div id="three2">유관순_1rem</div>
<div id="four">강감찬_2em</div>
<div id="five">윤봉길_32</div>
<div id="six">강감찬_vw</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>font-size 실습</title>
<style type="text/css">
html{
font-size: 10px
}
#a li{
/*
html 부모 지정하고 부모의 상대값으로 1.5배로 지정
상대값 문제점은 중첩되는 경우에 2번 적용됨
따라서 실습문제에서는 BBB가 AAA보다 글꼴크기가 더 커진다.
해결방법은 root em인 rem이다.
이것은 root인 html을 기준으로 상대값이 적용된다.
*/
/*
em의 경우, 해당 단위가 사용되고 있는 요소의 font-size 속성값이 기준이 됩니다.
rem에서 r은 root, 즉 최상위 요소의 font-size 속성값 의미합니다.
*/
font-size: 1.5em;
}
#b li{
font-size: 1.5rem;
}
</style>
</head>
<body>
<p>Hello</p>
<ul id="a">
<li>AAAA</li>
<li>AAAA2</li>
<li>
<ul>
<li>BBBB</li>
<li>BBBB2</li>
</ul>
</li>
</ul>
<ul id="b">
<li>AAAA</li>
<li>AAAA2</li>
<li>
<ul>
<li>BBBB</li>
<li>BBBB2</li>
</ul>
</li>
</ul>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS 색상 실습</title>
<style type="text/css">
#one{
color:red /* 120가지 색상이 영단어로 제공됨 */
}
/* #ffffff: 흰색
#000000: 검정 */
#two{
color:#00ff00; /* 16진수 표기 */
}
#three{
color:rgb(0,0,255); /* 10진수 표기 red, green, blue 3가지 색상 조합*/
}
/*
red, green, blue 3가지 색상 조합과 alpha 값
alpha는 0~1 까지 사용 1은 완전 불투명 0은 완전 투명
*/
#four{
color:rgba(0,0,255,0.3);
}
</style>
</head>
<body>
<div id="one">홍길동</div>
<div id="two">이순신</div>
<div id="three">유관순</div>
<div id="four">강감찬</div>
<div id="five">윤봉길</div>
</body>
</html>
📋 실행 📋
// block -> inline
h1, h2{
display:inline;
}
// inline -> inline-block;
a{
display:inline-block;
}
// inline -> block
img{
display:block;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>display 실습</title>
<style type="text/css">
/* block태그인 p를 inline 태그로 표시 */
p{
display: inline;
}
div.two{
/* 영역유지 안됨 */
display:none;
}
/* inline 태그를 block 태그로 표시 */
span{
display: block;
}
</style>
</head>
<body>
<div class="one">
<p>Hello</p>
<p>world</p>
</div>
<div class="two">
<p>Hello2</p>
<p>world2</p>
</div>
<p>Hello3<span>world3</span></p>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>display 실습</title>
<style type="text/css">
.box1{
background: lime;
width:400px;
height:100px
}
.box2{
/* display:inline; */
background: yellow;
width:200px;
height:200px
}
.box3{
background: aqua;
/* inline 스타일 span는 width와 height 적용안됨 */
width:400px;
height:100px
}
.box4{
/* inline-block 스타일은 inline이지만 width와 height 적용 가능 */
display: inline-block;
background: powderblue;
width:400px;
height:100px
}
</style>
</head>
<body>
<div class="box1">BOX1</div>
<div class="box2">BOX2</div>
<span class="box3">BOX3</span><br>
<span class="box4">BOX4</span>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>visibility 실습</title>
<style type="text/css">
#box{
visibility: hidden;
}
</style>
</head>
<body>
<div>
<span>Dummy</span>
<div id="box">
<span>죽는날 까지 하늘을 우러러 한점 부끄럼이 없기를, 잎새에 이는 바람에도 나는 괴로워했다.</span>
</div>
<span>Dummy</span>
</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>visibility 실습</title>
<style type="text/css">
/* table이 제거시 영역도 같이 제거됨. */
td {
visibility: collapse;
}
</style>
</head>
<body>
<div>
<span>Dummy</span>
<table>
<tr>
<td>Test</td>
</tr>
<tr>
<td>Test</td>
</tr>
<tr>
<td>Test</td>
</tr>
</table>
<span>Dummy</span>
</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>opacity 실습</title>
<style type="text/css">
#box{
opacity:0.2;
}
</style>
</head>
<body>
<div>
<span>Dummy</span>
<div id="box">
<span>죽는날 까지 하늘을 우러러 한점 부끄럼이 없기를, 잎새에 이는 바람에도 나는 괴로워했다.</span>
</div>
<span>Dummy</span>
</div>
</body>
</html>
📋 실행 📋
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>RGBA</title>
<style>
div {
width: 300px;
}
div.a1 {
opacity: 1.0
}
div.a2 {
opacity: 0.8
}
div.a3 {
opacity: 0.6
}
div.a4 {
opacity: 0.4
}
div.a5 {
opacity: 0.2
}
</style>
</head>
<body>
<div class="a1">Hello</div>
<div class="a2">Hello</div>
<div class="a3">Hello</div>
<div class="a4">Hello</div>
<div class="a5">Hello</div>
</body>
</html>
📋 실행 📋
margin-top:<크기>;
margin-right:<크기>;
margin-bottom:<크기>;
margin-left:<크기>;
margin:<margin-top> <margin-right> <margin-bottom> <margin-left>;
margin:<margin-top> <margin-right> <margin-bottom>;
margin:<margin-top & margin-bottom> <margin-right & margin-left>;
margin:<margin-top & margin-right & margin-bottom & margin-left>;
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Box 모델 실습</title>
<style type="text/css">
/* margin 은 바깥쪽 여백 */
div{
width:100px;
height: 100px;
background-color: red;
}
#one{
margin-top:10px;
margin-right:10px;
margin-bottom:10px;
margin-left:10px;
}
#two{
margin:10px 10px 10px 10px; /* 상 우 하 좌 */
}
#three{
margin:10px;
}
#four{
margin:10px 20px; /* 상하: 10px 좌우: 20 px*/
}
#five{
margin:10px 20px 30px; /* 상: 10px 좌우: 20 px 하:30px */
}
#six{
margin:10px 30px 0 40px; /* 상: 10px 우: 30px 하:0px 좌: 40px */
}
</style>
</head>
<body>
<div id="one">one</div>
<div id="two">two</div>
<div id="three">three</div>
<div id="four">four</div>
<div id="five">five</div>
<div id="six">six</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>margin:auto 실습</title>
<style type="text/css">
div {
width: 300px;
margin: auto;
border: 1px solid red;
}
</style>
</head>
<body>
<h2>Use of the auto Value</h2>
<p>You can set the margin property to auto to horizontally
center the element within its container.
The element will then take up the specified width,
and the remaining space will be split equally
between the left and right margins:</p>
<div>
This div will be centered because it has margin: auto;
</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>margin:병합상쇄 실습</title>
<style type="text/css">
/*
첫번째 박스에는 margin-bottom: 50px; 두번째 박스에는 margin-top: 100px;
두 박스 사이에는 50 + 100 = 150px의 margin이 적용 되어야 하지만,
마진 병합 현상으로 인해 둘 중 더 큰 속성값인 100px로 병합 되었다.
*/
div#a {
width: 300px;
height: 100px;
background-color: red;
margin: 50px;
}
div#b {
width: 300px;
height:100px;
background-color: powderblue;
margin: 100px;
}
</style>
</head>
<body>
<h2>상하 블럭간의 margin는 값이 큰 margin으로 적용됨</h2>
<div id="a">a</div>
<div id="b">b</div>
</body>
</html>
📋 실행 📋
요소의 테두리 (경계선)
padding과 content를 둘러싸고 있는 영역 (margin과 padding 사이)
border-width : border의 너비 지정하는 속성 (테두리 굵기)
border-style : border의 스타일 지정하는 속성 (테두리 모양)
border-color : border의 색상 지정하는 속성
border-radius : 박스 모서리 둥글게 설정하는 방법
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Box 모델 border 실습</title>
<style type="text/css">
div{
width:100px;
height: 100px;
background-color: red;
margin:10px;
}
#one{
border-top-width: 10px;
border-right-width: 10px;
border-bottom-width: 10px;
border-left-width: 10px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-color: black;
}
#two{
border-width: 10px 20px;
border-style: solid dotted;
border-color: black;
}
#three{
border-width: 10px;
border-style: solid;
border-color: black;
}
#four{
border: 10px solid black;
}
</style>
</head>
<body>
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four"></div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Box 모델 border-radius 실습</title>
<style>
.grad {
width:300px;
padding:10px;
border:8px solid #0F0;
}
.grad2 {
width:300px;
padding:10px;
border:8px solid #F00;
border-radius: 20px;
}
</style>
</head>
<body>
<div class="grad">
<p>내 그늘 아래 그림자 길어질수록 <br>
나의 어지럼증 깊어져 <br>
세상이 몇바퀴씩 곤두박질치네요</p>
</div>
<br/>
<div class="grad2">
<p>내 그늘 아래 그림자 길어질수록 <br>
나의 어지럼증 깊어져 <br>
세상이 몇바퀴씩 곤두박질치네요</p>
</div>
</body>
</html>
📋 실행 📋
padding-top:<크기>;
padding-right:<크기>;
padding-bottom:<크기>;
padding-left:<크기>;
padding:[padding-top] [padding-right] [padding-bottom] [padding-left];
padding:[padding-top] [padding-right] [padding-bottom];
padding:[padding-top & padding-bottom] [padding-right & padding-left];
padding:[padding-top & padding-right & padding-bottom & padding-left];
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Box 모델 padding 실습</title>
<style type="text/css">
/* padding 은 안쪽 여백 */
div{
width:100px;
height: 100px;
background-color: red;
margin:10px;
border: 10px solid black;
}
#one{
padding-top:10px;
padding-right:10px;
padding-bottom:10px;
padding-left:10px;
}
#two{
padding:10px 10px 10px 10px; /* 상 우 하 좌 */
}
#three{
padding:10px;
}
#four{
padding:50px 20px; /* 상하: 50px 좌우: 20 px*/
}
#five{
padding:50px 20px 30px; /* 상: 50px 좌우: 20 px 하:30px */
}
</style>
</head>
<body>
<div id="one">hello one</div>
<div id="two">hello two</div>
<div id="three">hello three</div>
<div id="four">hello four</div>
<div id="five">hello five</div>
</body>
</html>
📋 실행 📋
텍스트 및 이미지 등 실제 내용이 보여지는 곳
시작 태그와 종료 태그 사이에 사용된 콘텐츠가 사용된 영역
width : content 영역의 너비 (border + padding + content 영역 포함)
height : content 영역의 높이
box-sizing : width, height 속성에 지정한 크기에 요소를 맞추기 위해 내부 content 영역의 너비와 높이 자동 조절
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Box 모델 width-height 실습</title>
<style type="text/css">
div#a{
width:100px;
height: 100px;
background-color: red;
}
div#b{
background-color: powderblue;
}
</style>
</head>
<body>
width 속성과 height 속성은 실제 내용을 감싸는 영역의 크기를 지정하는 속성이다.
지정하지 않으면 실제 요소의 크기로 설정(고정값, 상대값)된다
<div id="a">a</div>
<div id="b">b</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BOX 모델 box sizing 실습</title>
<style type="text/css">
#one {
width: 300px;
height: 100px;
border: 1px solid blue;
box-sizing: content-box;
}
#two {
width: 300px;
height: 100px;
padding: 50px;
border: 1px solid red;
box-sizing: content-box;
}
</style>
</head>
<body>
<div id="one">hello</div>
<div id="two">hello</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BOX 모델 box sizing 실습</title>
<style type="text/css">
#one {
width: 300px;
height: 100px;
padding: 20px;
border: 1px solid blue;
box-sizing: border-box;
}
#two {
width: 300px;
height: 100px;
padding: 50px;
border: 3px solid red;
box-sizing: border-box;
}
</style>
</head>
<body>
여러개의 블럭박스에 box-sizing: border-box; 지정하고
width와 height속성을 같게 주면 padding이나 border값이 달라도
결과적으로 박스크기는 같아진다.
box-sizing시 border-box로 지정하면 width와 height로 설정된 값에 padding,border,margin값이
포함되어 만들어지기 때문이다.
<div id="one">hello</div>
<div id="two">hello</div>
</body>
</html>
📋 실행 📋
background-color:<색상값>;
url()
함수로 지정background-image:url('이미지 경로');
background-repeat:<속성값>;
background-size:auto|cover|contain|<너비 높이>;
background-position:<x 위치> <y 위치>;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>background-position 실습</title>
<style type="text/css">
body{
background-image:url('images/001.png');
background-repeat: no-repeat;
background-attachment: scroll;
background-position: bottom;
background-color: powderblue;
/*
cover: 이미지를 늘리거나 가장자리 중 하나를 약간 잘라야 하는 경우에도 전체 컨테이너를 덮도록 배경 이미지의 크기를 조정.
contain:이미지가 완전히 보이도록 배경 이미지의 크기를 조정
*/
background-size: cover;
}
</style>
</head>
<body>
<h1>Lorem ipsum dolor sit amet</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Pellentesque est velit, laoreet vel rhoncus sit amet.</p>
</body>
</html>
📋 실행 📋
background-attachment:<속성값>;
폰트를 지정하는 속성으로 여러 개의 값 지정 가능
font family 이름
serif : 삐침이 있는 명조 계열의 글꼴
sans-serif : 삐침이 없고 굵기가 일정한 고딕 계열의 글꼴
monospace : 텍스트 폭과 간격이 일정한 글꼴
fantasy : 화려한 글꼴
cursive : 손으로 쓴 것 같은 필기체 계열의 글꼴
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>font-family 실습</title>
<style type="text/css">
/* C:\Windows\Fonts */
.font-arial{
font-family: '없는 폰트' , sans-serif;
}
.font-roman{
font-family: '없는 폰트' , serif;
}
.font-ansang{
font-family: '굵은안상수체' , sans-serif;
}
.font-md{
font-family: 'MD솔체' , sans-serif;
}
</style>
</head>
<body>
<h1 class="font-arial">Lorem ipsum</h1>
<h1 class="font-roman">Lorem ipsum</h1>
<h1 class="font-ansang">Lorem ipsum</h1>
<h1 class="font-md">Lorem ipsum</h1>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>font 단축 표현식 실습</title>
<style type="text/css">
p{
/* font-size: 2em;
font-style: italic;
font-weight: bold; */ /* 100 ~ 900 사이의 값지정도 가능 */
/* 단축 표현
font: font-style font-weight font-size font-family */
font: italic bold 50px Arial, Georgia, Times, "Times New Roman", serif;
}
</style>
</head>
<body>
<p>Lorem ipsum</p>
</body>
</html>
📋 실행 📋
폰트 크기를 지정하는 속성
고정길이 또는 상대길이, 7단계의 값으로 사용 (기본 웹 브라우저 폰트 사이즈 16px)
고정길이 : px
상대길이 : %, em, rem (1em = 16px)
7단계 값 : xx-small, x-small, small, medium, large, x-large, xx-large
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>font-size 실습</title>
<style type="text/css">
.a{
font-size: xx-small;
}
.b{
font-size: x-small;
}
.c{
font-size: small;
}
.d{
font-size: medium;
}
.e{
font-size: large;
}
.f{
font-size: x-large;
}
.g{
font-size: xx-large;
}
</style>
</head>
<body>
<p>Lorem ipsum</p>
<p class="a">Lorem ipsum_xx-small</p>
<p class="b">Lorem ipsum_x-small</p>
<p class="c">Lorem ipsum_small</p>
<p class="d">Lorem ipsum_medium</p>
<p class="e">Lorem ipsum_large</p>
<p class="f">Lorem ipsum_x-large</p>
<p class="g">Lorem ipsum_xx-large</p>
<p class="h">Lorem ipsum-default</p>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>font-size 실습</title>
<style type="text/css">
.a{
font-size: 2rem;
}
.b{
font-size: 32px;
}
.c{
font-size: 2.5em; /* 40px/16=2.5em */
}
.d{
font-size: 1.875em; /* 30px/16=1.875em */
}
.e{
font-size: 0.875em; /* 14px/16=0.875em */
}
</style>
</head>
<body>
<p>Lorem ipsum_default</p>
<p class="a">Lorem ipsum_2em</p>
<p class="b">Lorem ipsum_32px</p>
<p class="c">Lorem ipsum_2.5em</p>
<p class="d">Lorem ipsum_1.875em</p>
<p class="e">Lorem ipsum_0.875em</p>
</body>
</html>
📋 실행 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>font-weight & style 실습</title>
<style type="text/css">
p{
font-style: italic;
font-weight: bold; /* 100 ~ 900 사이의 값 지정도 가능 */
font-size: 2em;
}
</style>
</head>
<body>
<p>Lorem ipsum</p>
</body>
</html>
📋 실행 📋
웹 문서 작성시 웹 문서 안에 글꼴 정보도 함께 저장
사용자가 웹 문서에 접속하면 글꼴을 사용자 시스템으로 다운로드하여 사용
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>@font-face</title>
<style>
@font-face {
font-family:cheri;
src:url('fonts/cheri.ttf') format('truetype');
}
.text1 {
font-family:cheri, Arial Black;
font-size:80px;
color: #006;
}
</style>
</head>
<body>
<div class="normal_text">ABCDEF</div>
<div class="text1">123456</div>
</body>
</html>
📋 실행 📋
color:<속성값>;
text-align:<속성값>;
text-decoration:<속성값>;
text-transform:<속성값>;
text-indent:<크기>;
letter-spacing:normal|<크기>;
line-height:normal|<속성값>;
word-spacing:normal|<크기>;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>text color 실습</title>
<style type="text/css">
p{
color:red;
text-align: right;
text-decoration: line-through;
text-transform: uppercase;
}
div {
border: 1px solid black;
padding: 10px;
width: 200px;
height: 250px;
text-align: justify;
text-indent: 50px;
}
p.small {
line-height: 0.8;
text-align: center;
}
h1 {
letter-spacing: 3px;
word-spacing: 10px;
}
h2 {
letter-spacing: -3px;
word-spacing: -5px;
}
</style>
</head>
<body>
<p>Lorem ipsum</p>
<div>
In my younger and more vulnerable years my father
gave me some advice that I've been turning over
in my mind ever since. 'Whenever you feel like criticizing
anyone,' he told me, 'just remember that all the people in
this world haven't had the advantages that you've had.'
</div>
<p class="small">
smaller line-height.<br>
smaller line-height.<br>
</p>
<h1>This is heading 1</h1>
<h2>This is heading 2</h2>
</body>
</body>
</html>
📋 실행 📋
태그의 위치 설정을 변경할 때 사용
태그가 위에서 아래로 순서대로 배치 (기본 흐름따라 배치)
static으로 지정하면 아무런 변화X
좌표 속성을 사용할 수 없으며 위치 속성을 사용하지 않을 때와 같음
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>position static 실습</title>
<style type="text/css">
/*
static:
static인 요소는 HTML 문서 상에서 원래 있어야하는 위치에 배치됩니다.
top, left, bottom, right 속성값은 position 속성이 static일 때는 무시됩니다.
*/
main {
width: 300px;
height: 400px;
background: tomato;
}
div {
width: 200px;
height: 100px;
border: 1px solid;
background: yellow;
text-align: center;
line-height: 100px;
box-sizing: border-box;
}
div:nth-of-type(2) {
position: static;
background: cyan;
opacity: 0.8;
}
</style>
</head>
<body>
<h2>position: static;</h2>
<main>
<div>첫 번째 요소 static</div>
<div>두 번째 요소 static</div>
<div>세 번째 요소 static</div>
</main>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>position static 실습</title>
<style type="text/css">
/*
static:
static인 요소는 HTML 문서 상에서 원래 있어야하는 위치에 배치됩니다.
top, left, bottom, right 속성값은 position 속성이 static일 때는 무시됩니다.
*/
main {
width: 300px;
height: 400px;
background: tomato;
}
div {
width: 200px;
height: 100px;
border: 1px solid;
background: yellow;
text-align: center;
line-height: 100px;
box-sizing: border-box;
}
div:nth-of-type(2) {
position: static;
background: cyan;
opacity: 0.8;
top: 100px;
left: 100px;
}
</style>
</head>
<body>
<h2>position: static;</h2>
<main>
<div>첫 번째 요소 static</div>
<div>두 번째 요소 static</div>
<div>세 번째 요소 static</div>
</main>
</body>
</html>
📋 실행 📋
초기 위치 상태에서 상하좌우로 위치 이동 (좌표 속성 사용)
normal position 기준으로 상대적인 위치 결정
top, bottom, left, right 속성과 같이 사용
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>position relative 실습</title>
<style type="text/css">
/*
relative:
relative로 설정하게 되면, 요소를 원래 위치에서 벗어나게 배치할 수 있게 됩니다.
요소를 원래 위치를 기준으로 상대적(relative)으로 배치 해준다.
요소의 위치 지정은 top, bottom, left, right 속성을 이용해서
요소가 원래 위치에 있을 때의 상하좌우로 부터 얼마나 떨어지게 할지를 지정할 수 있다.
*/
main {
width: 300px;
height: 400px;
background: tomato;
}
div {
width: 200px;
height: 100px;
border: 1px solid;
background: yellow;
text-align: center;
line-height: 100px;
box-sizing: border-box;
}
div:nth-of-type(2) {
position: relative;
top: 28px;
left: 48px;
background: cyan;
opacity: 0.8;
}
</style>
</head>
<body>
<h2>position: relative;</h2>
<main>
<div>첫 번째 요소 static</div>
<div>두 번째 요소 relative</div>
<div>세 번째 요소 static</div>
</main>
</body>
</html>
📋 실행 📋
화면을 기준으로 절대 위치 좌표 설정 (절대적인 좌표 위치)
viewport 기준으로 상대적인 위치 결정 (브라우저 화면 기준)
페이지가 scroll 되는 경우에도 항상 고정된 위치에 보여짐
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>position fixed 실습</title>
<style type="text/css">
/*
fixed:
position 속성을 fixed로 지정하면 요소를 항상 고정된(fixed) 위치에 배치할 수 있습니다
fixed 속성값의 배치 기준이 자신이나 부모 요소가 아닌 뷰포트(viewport), 즉 브라우저 전체화면이다.
top, left, bottom, right 속성은 각각 브라우저 상단, 좌측, 하단, 우측으로 부터 해당 요소가 얼마나 떨어져 있는지를 결정합니다.
*/
main {
width: 300px;
height: 400px;
background: tomato;
}
div {
width: 200px;
height: 100px;
border: 1px solid;
background: yellow;
text-align: center;
line-height: 100px;
box-sizing: border-box;
}
div:nth-of-type(2) {
position: fixed;
bottom: 8px;
right: 16px;
background: cyan;
opacity: 0.8;
}
</style>
</head>
<body>
<h2>position: fixed;</h2>
<main>
<div>첫 번째 요소 static</div>
<div>두 번째 요소 fixed</div>
<div>세 번째 요소 static</div>
</main>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>position fixed 실습</title>
<style type="text/css">
div.fixed {
position: fixed;
bottom: 0;
right: 0;
width: 300px;
border: 3px solid #73AD21;
}
</style>
</head>
<body>
<h2>position: fixed;</h2>
<p>An element with position: fixed; is positioned relative to
the viewport, which means it always stays in the same place
even if the page is scrolled:
An element with position: fixed; is positioned relative to
the viewport, which means it always stays in the same place
</p>
<div class="fixed">
This div element has position: fixed;
</div>
</body>
</html>
📋 실행 📋
절대 위치 좌표 설정 (절대적인 좌표 위치)
relative일 때는 기준점이 요소의 왼쪽 위 모서리지만, absolute일 때는 웹 브라우저의 왼쪽 위 모서리
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>position static 실습</title>
<style type="text/css">
/*
absolute:
position 속성이 absolute일 때 해당 요소는 배치 기준을 자신이 아닌 상위 요소에서 찾습니다.
DOM 트리를 따라 올라가다가 position 속성이 static이 아닌 첫 번째 상위 요소가 해당 요소의 배치 기준으로 설정된다.
만약에 해당 요소 상위에 position 속성이 static이 아닌 요소가 없다면, DOM 트리에 최상위에 있는 <body> 요소가 배치 기준이 됩니다.
absolute 속성값은 relative 속성값과 함께 사용되는 경우가 많다.
*/
main {
width: 300px;
height: 400px;
background: tomato;
}
div {
width: 200px;
height: 100px;
border: 1px solid;
background: yellow;
text-align: center;
line-height: 100px;
box-sizing: border-box;
}
div:nth-of-type(2) {
position: absolute;
bottom: 8px;
right: 16px;
background: cyan;
opacity: 0.8;
}
</style>
</head>
<body>
<h2>position: static;</h2>
<main>
<div>첫 번째 요소 static</div>
<div>두 번째 요소 absolute</div>
<div>세 번째 요소 static</div>
</main>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>position static 실습</title>
<style type="text/css">
/*
absolute:
어떤 요소의 display 속성을 absolute로 설정하면, 부모 요소의 display 속성을 relative로 지정해주는 것이 관례입니다.
*/
main {
position: relative;
width: 300px;
height: 400px;
background: tomato;
}
div {
width: 200px;
height: 100px;
border: 1px solid;
background: yellow;
text-align: center;
line-height: 100px;
box-sizing: border-box;
}
div:nth-of-type(2) {
position: absolute;
bottom: 8px;
right: 16px;
background: cyan;
opacity: 0.8;
}
</style>
</head>
<body>
<h2>position: relative 와 position;</h2>
<main>
<div>첫 번째 요소 relative</div>
<div>두 번째 요소 absolute</div>
<div>세 번째 요소 static</div>
</main>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>position absolute 실습</title>
<style type="text/css">
div.container {
position: relative;
background-color: yellow;
}
div.container2 {
position: relative;
background-color: grey;
width:300px;
height:200px;
}
img{
position: absolute;
bottom:0px;
right:0px;
}
/* div.absolute {
position: absolute;
top: 80px;
right: 0;
width: 200px;
height: 100px;
border: 3px solid #73AD21;
} */
</style>
</head>
<body>
<h2>position: absolute1</h2>
<div class="container">
<div class="container2">
<img src="images/001.png" width="50px" height="50px">
</div>
<p> sadfasfdfsdfasfasfdasdfasdfasdfasfdasfdasfdsadfasfdfsdfasfasfdasdfasdfasdfasfdasfdasfdsadfasfdfsdfasfasfdasdfasdfasdfasfdasfdasfd
</p>
<img src="images/001.png" width="50px" height="50px">
</div>
</body>
</html>
📋 실행 📋
position 속성으로 배치한 요소의 z축 위치를 결정
position 속성이 static 값이 아닐 때는 좌표 속성에 따라 요소 배치함
요소가 position 될 때 겹쳐져 보임
요소의 stack 순서를 변경할 수 있는 속성
큰 값을 입력할 수록 위로 올라옴
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>z-index 실습</title>
<style type="text/css">
img {
position: absolute;
left: 0px;
top: 0px;
z-index: -1;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<img src="images/001.png" width="100" height="140">
<p>Because the image has a z-index of -1,
it will be placed behind the text.</p>
</body>
</html>
📋 실행 📋
필요에 따라 요소를 가로 방향으로 배치하기 위해서 사용
image를 삽입하거나 layout을 위한 용도로 사용
가로 배치 방법 1️⃣
가로 배치 방법 2️⃣ (overflow:hidden 사용)
#outer{
overflow: hidden;
}
가로 배치 방법 3️⃣ (display:flex 속성 사용)
부모의 display 속성으로 flex 지정하면 자식을 가로로 배치
#outer{
display: flex;
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<title>float 실습</title>
<style>
img {
float: right;
}
</style>
</head>
<body>
<h2>Float Right</h2>
<p>In this example, the image will float to the right in the paragraph, and the text in the paragraph will wrap around the image.</p>
<p><img src="images/pineapple.jpg" alt="Pineapple" style="width:170px;height:170px;margin-left:15px;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>float overflow, hidden 실습</title>
<style type="text/css">
#outer{
overflow: hidden;
}
.box{
box-sizing: border-box;
height: 100px;
border: 1px solid blue;
}
#box1{
float:left;
background: skyblue;
width: 20%;
}
#box2{
float:right;
background: lime;
width: 80%;
}
#box3{
background: yellowgreen;
width: 100%;
}
</style>
</head>
<body>
<div id="outer">
<div class="box" id="box1">box1</div>
<div class="box" id="box2">box2</div>
</div>
<div class="box" id="box3">box3</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>float diplay_flex 실습</title>
<style type="text/css">
#outer{
display: flex;
}
.box{
box-sizing: border-box;
height: 100px;
border: 1px solid blue;
}
#box1{
background: skyblue;
width: 20%;
}
#box2{
background: lime;
width: 80%;
}
#box3{
background: yellowgreen;
width: 100%;
}
</style>
</head>
<body>
<div id="outer">
<div class="box" id="box1">box1</div>
<div class="box" id="box2">box2</div>
</div>
<div class="box" id="box3">box3</div>
</body>
</html>
📋 실행 📋
float 속성을 해제할 때 사용하는 속성
float 속성이 대상 요소의 다음 요소에 영향을 줌
left : float 속성의 left 값 해제
right : float 속성의 right 값 해제
both : float 속성의 left와 right 값 해제
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>float clear 실습</title>
<style type="text/css">
.box{
box-sizing: border-box;
height: 100px;
border: 1px solid blue;
}
#box1{
float:left;
background: skyblue;
width: 20%;
}
#box2{
float:right;
background: lime;
width: 80%;
}
#box3{
clear:both;
background: yellowgreen;
width: 100%;
}
</style>
</head>
<body>
<div class="box" id="box1">box1</div>
<div class="box" id="box2">box2</div>
<div class="box" id="box3">box3</div>
</body>
</html>
📋 실행 📋
개념
구성요소
flex 모듈을 적용하기 위해서 부모/자식 관계 설정 필요
Flexbox Container 속성
Flexbox Item 속성
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
width: 200px;
}
.item{
background-color: tomato;
color:white;
border:1px solid white;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
.parent {
flex-direction : row /* default */
row-reverse
column
column-reverse
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
width: 200px;
height: 500px;
display:flex;
/* flexbox 축 */
flex-direction: row;
/* flex-direction: row-reverse;
flex-direction: column;
flex-direction: column-reverse; */
}
.item{
background-color: tomato;
color:white;
border:1px solid white;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
.parent {
flex-wrap : nowrap /* default */
wrap
wrap-reverse
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex wrap 실습</title>
<style type="text/css">
.container{
display:flex;
flex-direction: row;
flex-wrap: wrap;
}
.item{
color:black;
border: 1px solid black;
width: 300px;
}
</style>
</head>
<body>
<div class="container">
<div class="item" style="background-color: gray;"><article>
<h2>This is the heading of the main section</h2>
<p>This is a paragraph of text.</p>
</article></div>
<div class="item" style="background-color: white;"><aside>Here is the aside</aside></div>
</div>
</body>
</html>
📋 실행 📋
flex-flow 속성
.parent {
flex-flow : row nowrap /* default */
<flex-direction> <flex-wrap>
<flex-direction>
<flex-wrap>
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex flow 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
/* flex-direction: row;
flex-wrap: wrap; */
flex-flow: row wrap;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
width: 300px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
justify-content 속성
.parent {
justify-content : flex-start /* default */
flex-end
center
space-around
space-between
space-evenly
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex justify-content row 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
justify-content: flex-start;
}
.item{
background-color: tomato;
color:white;
border:1px solid white;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex justify-content column 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: column;
height: 500px;
justify-content: center;
}
.item{
background-color: tomato;
color:white;
border:1px solid white;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
align-items 속성
.parent {
align-items : stretch /* default */
flex-start
flex-end
center
baseline
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex align-items row 실습</title>
<style type="text/css">
.x{
height: 500px;
}
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
height: 500px;
align-items: stretch;
}
.item{
background-color: tomato;
color:white;
border:1px solid white;
}
</style>
</head>
<body>
<div class="x">
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex align-items column 실습</title>
<style type="text/css">
.x{
height: 500px;
}
.container{
background-color: powderblue;
display:flex;
flex-direction: column;
height: 500px;
align-items: flex-end;
}
.item{
background-color: tomato;
color:white;
border:1px solid white;
}
</style>
</head>
<body>
<div class="x">
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</div>
</body>
</html>
📋 실행 📋
align-content 속성
.parent {
align-content : stretch /* default */
flex-start
flex-end
center
space-between
space-around
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex align-content 실습</title>
<style type="text/css">
.x{
height: 500px;
}
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
height: 200px;
flex-wrap: wrap;
/* wrap된 경우에만 적용 */
align-content: center;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
width: 300px;
}
</style>
</head>
<body>
<div class="x">
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</div>
</body>
</html>
📋 실행 📋
.child {
order : 0 /* default */
<number>
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex order 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
}
</style>
</head>
<body>
<div class="container">
<!-- 5 6 4 2 1 3 -->
<div class="item" style="order: 3">1</div>
<div class="item" style="order: 2">2</div>
<div class="item" style="order: 4">3</div>
<div class="item" style="order: 1">4</div>
<div class="item" style="order: -1">5</div>
<div class="item" style="order: 0">6</div>
</div>
</body>
</html>
📋 실행 📋
flex-basis 속성
.child {
flex-basis : auto /* default */
<width>
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex-basis 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
}
.item:nth-child(2){
/* 자신의 content 너비값으로 설정 (기본) */
flex-basis: auto;
}
.item:nth-child(3){
/* width 값으로 설정 */
flex-basis: auto;
width: 150px;
}
.item:nth-child(4){
/* 명시된 flex-basis 값으로 설정 */
flex-basis: 250px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
flex-grow 속성
.child {
flex-grow : 0 /* default */
<number>
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex-grow 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
/* 1로 지정하면 균등하게 전체 너비를 채움 */
flex-grow: 1;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex-grow2 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
flex-grow: 1;
}
.item:nth-child(3){
/* 다른 항목보다 3배정도 빠르게 성장한다. */
flex-grow: 3;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
flex-shrink 속성
.child {
flex-shrink : 1 /* default */
<number>
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex-shrink 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
width: 250px;
flex-shrink: 2;
}
.item:nth-child(2){
background-color: black;
flex-shrink: 1; /* 숫자가 클수록 더 크게 줄어든다. 다른 item은 2이기 때문에 더 빨리 축소된다.*/
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex-shrink2 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
width: 250px;
flex-shrink: 1;
}
.item:nth-child(2){
background-color: black;
flex-shrink: 0; /* 숫자가 클수록 더 크게 줄어든다. 0이면 줄어들지 않는다.*/
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
flex 속성
.child {
flex : 0 1 auto /* default */
<flex-grow> <flex-shrink> <flex-basis>
<flex-grow>
<flex-basis>
<flex-grow> <flex-basis>
<flex-grow> <flex-shrink>
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex 단축 표현 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: row;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
width: 250px;
}
.item:nth-child(2){
background-color: black;
flex: 0 0 200px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
align-self 속성
.child {
align-self : stretch /* default */
flex-start
flex-end
center
baseline
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flex align-self 실습</title>
<style type="text/css">
.container{
background-color: powderblue;
display:flex;
flex-direction: column;
}
.item{
background-color: tomato;
color:white;
border: 1px solid black;
width: 250px;
}
.item:nth-child(2){
background-color: black;
align-self: flex-end;
}
.item:nth-child(4){
background-color: blue;
align-self: center;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</body>
</html>
📋 실행 📋
@media 미디어타입 and (표현식) {
CSS 코드;
}
@media <not|only> <mediatype> and (<media feature>) <and|or|not> (<media feature>) {
/* css 코드 */
}
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background-color: yellow;
}
@media screen and (max-width: 600px) { /* 최대 600px 이 되면 lightblue로 변경해라 */
body {
background-color: lightblue;
}
}
</style>
</head>
<body>
<h1>The @media Rule</h1>
<p>Resize the browser window. When the width of this document is 600 pixels or less, the background-color is "lightblue", otherwise it is "yellow".</p>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
div.example {
background-color: yellow;
padding: 20px;
}
@media screen and (max-width: 600px) {
div.example {
display: none;
}
}
</style>
</head>
<body>
<h2>Hide elements on different screen sizes</h2>
<div class="example">Example DIV.</div>
<p>When the browser's width is 600px wide or less, hide the div element. Resize the browser window to see the effect.</p>
</body>
</html>
📋 실행 📋
📋 코드 📋
<!DOCTYPE html>
<html>
<head>
<text>media query 반응형</text>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
/* {
box-sizing: border-box;
}
/* Create four equal columns that floats next to each other */
.column {
float: left;
width: 25%;
padding: 20px;
}
/* Clear floats after the columns */
.row:after {
content: "";
display: table;
clear: both;
}
/* On screens that are 992px wide or less, go from four columns to two columns */
@media screen and (max-width: 992px) {
.column {
width: 50%;
}
}
/* On screens that are 600px wide or less, make the columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
</style>
</head>
<body>
<h2>Responsive Four Column Layout</h2>
<p><strong>Resize the browser window to see the responsive effect.</strong> On screens that are 992px wide or less, the columns will resize from four columns to two columns. On screens that are 600px wide or less, the columns will stack on top of each other instead of next to eachother.</p>
<div class="row">
<div class="column" style="background-color:#aaa;">
<h2>Column 1</h2>
<p>Some text..</p>
</div>
<div class="column" style="background-color:#bbb;">
<h2>Column 2</h2>
<p>Some text..</p>
</div>
<div class="column" style="background-color:#ccc;">
<h2>Column 3</h2>
<p>Some text..</p>
</div>
<div class="column" style="background-color:#ddd;">
<h2>Column 4</h2>
<p>Some text..</p>
</div>
</div>
</body>
</html>
📋 실행 📋