list-style-image: <url(이미지 파일 경로) | none
list-style: none;
h 태그
(가로 화면 전체 차지)block
값<style>
h1,
span {
display: block;
border: 3px solid darkblue;
}
</style>
span 태그
(요소의 크기만큼 너비를 차지)inline
값<style>
h1,
span {
display: inline;
border: 3px solid darkblue;
}
</style>
규격
@media, @import
를 사용하여 특정 조건에 따라 스타일 적용-블럭 레벨 요소
h 태그
(가로 화면 전체 차지)block
값-인라인 레벨 요소
span 태그
(요소의 크기만큼 너비를 차지)inline
값최적화 된 레이아웃
을 정의하는 CSSflex
: 부모만 flex 가능, 자식들이 따라가기 때문에 자식에게 flex 설정하면 안됨flex.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE-edge" />
<meta name="viewport" content="device-width," initial-scale="1.0" />
<title>Document</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div></div>
<div id="second"></div>
<div></div>
</body>
</html>
style.css
body {
/*div, second의 부모*/
display: flex;
}
div {
/*display 속성 값의 종류 : block, inline, flow, grid, flex */
/* 부모만 flex 가능, 자식들이 따라가기 때문에 자식에게 flex 설정하면 안됨 */
width: 200px;
height: 200px;
background-color: tomato;
}
#second {
background-color: seagreen;
}
display: flex;
를 쓰지 않으면 마진 때문에 아래와 같이 결과 값이 나옴justify-content
속성align-items
속성height : 100%
로 두어야 전체 화면 기준으로 사이즈가 꽉 차게 보여지게 됨html,
body {
height: 100%;
}
body {
/*div, second의 부모*/
display: flex;
align-items: stretch;
}
div {
/*display 속성 값의 종류 : block, inline, flow, grid, flex */
/* 부모만 flex 가능, 자식들이 따라가기 때문에 자식에게 flex 설정하면 안됨 */
width: 500px;
height: 500px;
background-color: tomato;
}
#second {
width: 700px;
height: 700px;
background-color: seagreen;
}
안 할 경우의 사진 : 설정을 안하게 되면 가장 긴 길이
인 초록색 기준으로 크기가 결정 되어 버림
flex-direction
flex의 축 방향을 바꿔주는 속성
속성값
- row(기본값) : 가로 방향(행) 배치
- row-reverse : 역순으로 가로 방향(행) 배치
- column : 세로방향(열) 배치
- column-reverse : 역순으로 세로방향(열) 배치
body{
flex-direction: column;
}
요소를 어떻게 배치
할지 정한다.기본 위치 기준으로 한 상대적 위치
“상대적인” 의미로 상대적인 기준은 자기 자신을 의미한다.
position: relative
정하면 자기 자신을 기준으로 top, bottom, right, left
형제 관계일 때 예시 : 같은 부모를 가진 요소
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=`, initial-scale=1.0" />
<title>Document</title>
<style>
.up {
background-color: lightcoral;
width: 100px;
height: 100px;
}
.down {
background-color: lightskyblue;
width: 100px;
height: 100px;
position: relative;
top: 20px; /*relative를 정의하고 top, left, right, bottom을 따로 정의*/
}
</style>
</head>
<body>
<h2>형제 관계일 때 예시 : 같은 부모를 가진 요소</h2>
<div class="up"></div>
<div class="down"></div>
</body>
</html>
조부모, 부모, 자식 관계일때
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=`, initial-scale=1.0" />
<title>Document</title>
<style>
.grandparent {
background-color: lightcoral;
width: 200px;
height: 200px;
}
.parent {
background-color: lightskyblue;
width: 100px;
height: 100px;
position: relative;
top: -30px;
opacity: 0.5; /*투명도*/
}
.child {
background-color: lightgreen;
width: 50px;
height: 50px;
position: relative; /*나를 기준으로 위에가 떨어지게 됨*/
top: -30px; /* +일때는 아래로 이동 -일때는 위로 이동*/
opacity: 0.5;
}
</style>
</head>
<body>
<!--부모에 위치에 따라 자식의 위치가 달라진다.-->
<h2>조부모, 부모, 자식 관계일때</h2>
<div class="grandparent">
<div class="parent">
<div class="child"></div>
</div>
</div>
</body>
</html>
```css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=`, initial-scale=1.0" />
<title>Document</title>
<style>
.up {
background-color: lightcoral;
width: 100px;
height: 100px;
}
.down {
background-color: lightskyblue;
width: 100px;
height: 100px;
position: absolute;
top: 20px; /*absoulte : 부모인 body를 기준으로 이동*/
opacity: 0.5;
}
</style>
</head>
<body>
<h2>형제 관계일 때 예시 : 같은 부모를 가진 요소</h2>
<div class="up"></div>
<div class="down"></div>
</body>
</html>
```
- 예제2
- **`.grandparent`**는 **`position: relative;`**로 설정되어 있어, **`.parent`**와 **`.child`**의 상대적인 위치를 기준으로 배치
- **`.parent`**는 **`position: absolute;`**로 설정되어 있어, **`.grandparent`**를 기준으로 상대적인 위치(**`top: 30px;`**)에 배치
- **`.child`**도 **`position: absolute;`**로 설정되어 있으며, **`.parent`**를 기준으로 상대적인 위치(**`top: 30px;`**)에 배치
```css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=`, initial-scale=1.0" />
<title>Document</title>
<style>
.grandparent {
background-color: lightcoral;
width: 200px;
height: 200px;
position: relative;
}
.parent {
background-color: lightskyblue;
width: 100px;
height: 100px;
position: absolute;
top: 30px;
opacity: 0.5; /*투명도*/
}
.child {
background-color: lightgreen;
width: 50px;
height: 50px;
position: absolute; /*다른 요소와 겹치기 가능*/
top: 30px; /*parent 안에 위치하며, parent를 기준으로 움직이기 됨*/
opacity: 0.5;
}
</style>
</head>
<body>
<h2>조부모, 부모, 자식 관계일때</h2>
<div class="grandparent">
<div class="parent">
<div class="child"></div>
</div>
</div>
</body>
</html>
```
<!-- display 속성 : 배치방법 결정 웹 문서의 내비게이션을만들어서 메뉴항목을 가로로 배치할 때 가장 많이 사용-->
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 수평 내비게이션 작성 : 원래 블록레벨이었던 목록 인라인 레벨 변경-->
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE-edge" />
<meta name="viewport" content="device-width," initial-scale="1.0" />
<title>블랙 레벨 요소</title>
<link rel="stylesheet" href="menu.css" />
</head>
<body>
<div class="container">
<header></header>
<main>
<nav class="nave">
<ul>
<li>menu1</li>
<li>menu2</li>
<li>menu3</li>
<li>menu4</li>
</ul>
</nav>
<article></article>
</main>
<footer></footer>
</div>
</body>
</html>
menu.css
* {
box-sizing: border-box; /*알아서 계산하는 크기*/
}
nav ul {
list-style: none;
}
nav ul li {
display: inline-block;
padding: 20px;
margin: 0 20px;
border: 1px solid #222;
}
/*.container {
display: flex;
justify-content: center;
border: 1px solid #222;
}*/
.container {
display: flex;
}
.nave {
margin: 0 auto; /*내부적으로 달라짐*/
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE-edge" />
<meta name="viewport" content="device-width," initial-scale="1.0" />
<title>document</title>
<style>
img {
float: left;
margin-right: 30px;
}
</style>
</head>
<body>
<img src="images/tree.png" />
<p>
Proident irure elit non et in eiusmod. Adipisicing cillum irure pariatur
tempor anim dolor irure do laborum esse excepteur nulla consequat.
Pariatur consequat proident commodo aute incididunt fugiat.
</p>
<p>
Adipisicing qui veniam sunt Lorem voluptate. Fugiat elit sunt ipsum labore
dolore. Ut id labore quis et ex enim consectetur enim consectetur nostrud
exercitation esse veniam. Eu aliqua eiusmod in est velit aliqua Lorem sit.
Laborum exercitation dolore ipsum mollit duis nostrud sint.
</p>
<p>
Adipisicing sint exercitation cupidatat quis veniam sunt nisi adipisicing
commodo nulla aliquip commodo et. Officia aliqua dolore mollit esse do
reprehenderit Lorem officia. Dolor labore ipsum deserunt dolore quis
fugiat culpa amet labore mollit occaecat irure aliquip duis. Esse id
fugiat occaecat dolore aute do nostrud elit. Eu consectetur eu irure duis
pariatur laborum ipsum Lorem irure elit dolore. Irure aliquip exercitation
quis adipisicing ut.
</p>
</body>
</html>
만약 float: left;
설정 안하면
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
padding: 20px;
margin: 10px;
}
#container {
justify-content: center;
align-items: center;
}
#box1 {
background-color: rgb(168, 210, 210);
float: left;
}
#box2 {
background-color: rgb(190, 209, 227);
float: left;
}
#box3 {
background-color: rgb(212, 92, 71);
float: left;
}
#box4 {
background-color: rgb(208, 199, 184);
float: both;
}
</style>
</head>
<body>
<div id="container">
<div id="box1">box1</div>
<div id="box2">box2</div>
<div id="box3">box3</div>
<div id="box4">box4</div>
</div>
</body>
</html>
밀리지말자.. 다짐해도 노션에서 옮기는 작업이 생각보다 이미지 때문에 귀찮다.. 그러다가 괜찮은 방법을 알게 됨.. 원본보기 해서 이미지 복사하면 한결 수월하다!!! CSS는 눈으로 보여서 재미있지만 여기서 느낀건 생각보다 어렵다는 거 위치 파악하고 이런거가 너무 어렵다.
창피한 썰
미니 실습을 팀들이랑 하는데... 그 전에 서로 조정할려고 나만 일단 마이크 쳐서 조정 후 끈줄 알았다..
한 분이 화면 공유해주시며 이정도 했다라고 했는데 그때 내가 "나만 못해"라고 했는데 마이크가 켜져있었는데 나만이라건 소리가 안들어가고 못해만 그 타이밍에 들어갔는지.. 그 분이 "죄송해요.. 더 이쁘게 할게요 라고ㅠㅠㅠㅠㅠ" 그게 아닌데 진짜 죄송하다 하면서 진짜 죄송하다 생각했다... 이것도 다 추억이 되겠지 조심하자... 말 한마디에 사람 상처 받을 수 있다...