relative = ํ๋ฆ๋๋ก // ์์์ : ๊ฐ์์์น
absolute = ํ๋ฆ๋ฌด์ // ์์์ : ๋ถ๋ชจ์์์์น ๋ถ๋ชจ์์์ค์ relative๊ฐ ์์ผ๋ฉด ๊ทธ๊ฒ ์์์ ! relative ์์ผ๋ฉด body๊ฐ ์์์ !
fixed = ํ๋ฆ๋ฌด์, ์คํฌ๋กค ๋ด๋ ค๋ ๊ณ ์ ์์น // ์์์ : ๋ถ๋ชจ์์ ์๊ด์์ด ๊ทธ๋ฅ ์ ์ฒดํ์ด์ง ๊ธฐ์ค
=================================================
transition : ๋ค๋ฅธ ์์ฑ๋ค์ ๋ณํ, ์ผ์ ์๊ฐ๋์ ์์ฐ์ค๋ฝ๊ฒ // 1ํ๋ง!!! // ๋ง์ฐ์ค์ค๋ฒ์์ ๋ง์ฐ์ค ๋์๋ ๋ค์ ์๋๋๋ก ๋์์ค๋ (ํ๋์์ค๋ vs ์์ฐ์ค๋ฝ๊ฒ ์ค๋ฅด๋ฅต ๋์์ค๋)
animation : ์ฌ๋ฌ๋จ๊ณ๋ก ๋๋ ์, ์์ง์ // ๋ชํ๋ฐ๋ณต, ๋ฌด์ ํ ๋ฐ๋ณต // ๋ง์ฐ์ค์ค๋ฒ์์ ๋ง์ฐ์ค๋ฅผ ๋ผ๋ฉด ๋ค์ ์๋๋๋ก ๋์์ค์ง ์๊ณ ๊ทธ์๋ฆฌ์์ ๋ฉ์ถค
transform : ํด๋น ์์์ ํฌ๊ธฐ,ํ์ ,์ด๋
transition + transform
animation + transform
๐กํจ๊ณผ๊ฐ ๋ํ๋๊ฒ ํ๊ณ ์ถ์ ๋ฐ์ค์ transition, animation ์์ฑ๋ค ๋ฃ๋๊ฒ!!
=================================================
๐จ๐จ๐จ์ฃผ์๐จ๐จ๐จ
transition,animation์ ์์ฑ ๋ฐ๋ก ์จ๋ ์ ์ฉ์ด ๋ค ๋๋๋ฐ
transform์ ์์ฑ ์ฐ๋ ค๋ฉด ๊ฐ์ด ์จ์ผํ๋ค!!!
transform:scale(2,2);
transform:rotate(45deg); ๋ก ์ฐ๋ฉด ์ ์ผ ๋ง์ง๋ง์ ์๋ rotate๋ง ๋จนํ๋ค
๊ทธ๋์
transform:scale(2,2) rotate(45deg); ์ด๋ ๊ฒ ๊ฐ์ด ์จ์ค์ผํ๋ค
=================================================
๐ก :hover (๋ง์ฐ์ค์ค๋ฒ) ์ผ๋!!!
๊ณตํต => ๊ณตํต์ ์ธ ์ฑ์ง ๋ชจ์๋๋ boxํด๋์ค ํ๋ ๋ง๋ค์ด์ฃผ๊ณ
transition => 1ํ๋ง!!!!! (๋ง์ฐ์ค๋ผ๋ฉด ๋ค์ ์ ์๋ฆฌ๋ก ๋์๊ฐ)
๋ง์ฐ์ค ์ค๋ฒํ์๋ ๋ฐ๋์ด์ผ ํ๋ ์ฌํญ๋ค ์
๋ ฅํด์ฃผ๊ณ
.container:hover > .box1 {
width: 400px;
height: 100px;
}
.container:hover > .box3 {
margin-left: 200px;
}
.container:hover > .box2 {
background-color: purple;
}
.box4:hover {
border: 7px solid red;
}
.box5:hover {
border: 7px solid red;
}
๊ฐ๊ฐ box1, box2, box3, box4, box5 ๋ง๋ค
transition-property: all;
transition-duration: 1s;
transition-timing-function: linear;
์ก์์ฃผ๊ณ
(ํ๋ฐ๋๋ ํจ๊ณผ๋ฅผ ์ฃผ๊ณ ์ถ์ผ๋ฉด transition: ์์ฑ์ hover์ ๋ฃ์ด์ฃผ๋ฉด ํ๋ฐ๋๋ค! -> hover์์ transition์์ฑ์ด ์์ผ๋๊น hover ๊ธฐ๋ฅ์ด ๋๋๋ฒ๋ฆฌ๋ฉด(๋ง์ฐ์ค๋ฅผ ๋ผ๋ฒ๋ฆฌ๋ฉด) transition๋ ๋๋๋ฒ๋ฆฌ๋๊น ํ๋ฐ๋๋๊ฒ!)
animation => ๋ฌด์ ํ๋ฐ๋ณต!!!!! (๋ง์ฐ์ค๋ผ๋ฉด ๊ทธ์๋ฆฌ์์ ๋ฉ์ถค)
๋จผ์ @keyframes๋ก ์ ๋๋ฉ์ด์
ํจ๊ณผ๋ค์ ๋ง๋ค์ด์ค๋ค
@keyframes box1-ani {
0% {
width: 100px;
height: 100px;
}
100% {
width: 400px;
height: 100px;
}
}
@keyframes box3-ani {
0% {
left: 0px;
}
100% {
left: 200px;
}
}
๊ทธ ๋ค์ ์ ์ฉํ๊ณ ์ถ์ ๋ฐ์ค์ animation-name: box1-ani;์ ์ค์ animation ์ ์ฉ์ํจ๋ค ๊ทธ๋ฆฌ๊ณ ๋ง์ฐ์ค์ค๋ฒํ์๋ ํจ๊ณผ๊ฐ ๋ํ๋์ผ ํ๋๊ฑฐ๋๊น ๊ฐ๋งํ ์์๋ ์ ์งํ๊ณ ์๊ฒ animation-play-state: paused;์ ์ฃผ๊ณ
.box1 {
background-color: red;
animation-name: box1-ani;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
position: relative;
animation-play-state: paused;
}
.box3 {
background-color: black;
animation-name: box3-ani;
animation-duration: 1s;
animation-iteration-count: infinite;
animation-direction: alternate;
position: relative;
animation-play-state: paused;
animation-fill-mode: both;
}
๊ทธ๋ฆฌ๊ณ ๋ง์ฐ์ค์ค๋ฒํ์๋ ํจ๊ณผ๊ฐ ๋ํ๋๊ฒ ํ๋ค!
.container:hover > .box1 {
animation-play-state: running;
}
.container:hover > .box3 {
animation-play-state: running;
}
๊ตด๋ฌ๊ฐ๋ ์ฌ๊ฐํ ํํํ๊ธฐ
<body>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.box {
margin: 30px;
width: 100px;
height: 100px;
background-color: blue;
position: relative; //left ๋ํ๋๊ฒ ํ๊ธฐ์ํด!
animation-name: box-ani;
animation-duration: 3s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
@keyframes box-ani {
0% {
background-color: blue;
left: 0px;
}
50% {
background-color: orange;
left: 200px;
transform: rotate(180deg);
}
100% {
background-color: pink;
left: 400px;
transform: rotate(360deg);
}
}
</style>
</body>
<body>
<div class="box"></div>
</body>
=> ๐ป
์ด๋ฐ์์ผ๋ก ๋ฐ๊ตด๋ฐ๊ตด ๊ตด๋ฌ๊ฐ๋ ํํ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค
์ปจํ
์ด๋ => ์ปจํ
์ด๋์ flex๋ฅผ ์ก์์ฃผ๊ณ ์์ ์์ดํ
์ ์ ๋ ฌ!!!!!!
-์์ดํ
-์์ดํ
display : inline, block, inline-block
display : flex, inline-flex
flex-direction
row : ๊ฐ๋ก์ถ
row-reverse : ๊ฐ๋ก์ถ ์ญ๋ฐฉํฅ
column : ์ธ๋ก์ถ
column-reverse : ์ธ๋ก์ถ ์ญ๋ฐฉํฅ
flex-wrap
nowrap : ์ค๋ฐ๊ฟX
wrap : ์ค๋ฐ๊ฟO
wrap-reverse : ์ค๋ฐ๊ฟO-์ญ๋ฐฉํฅ
flex-flow: row nowrap; => ๊ฐ๋ก์ถ ์ค๋ฐ๊ฟ
(direction) (wrap)
flex-start : (์ฃผ์ถ)์์ ๊ธฐ์ค ์ ๋ ฌ
flex-end : (์ฃผ์ถ)๋ ๊ธฐ์ค ์ ๋ ฌ
center : ๊ฐ์ด๋ฐ ์ ๋ ฌ
space-between : ์์ดํ
์ฌ์ด ๊ฐ๊ฒฉ ๊ท ์ผ
space-around : ์์ดํ
๋๋ ๊ฐ๊ฒฉ ๊ท ์ผ (margin๊น์ง ํฌํจ)
space-evenly : ์์ดํ
์ฌ์ด+์๋ ๊ฐ๊ฒฉ ๊ท ์ผ (์ฌ์ด๋ฅผ ์๋๊ฐ๊ฒฉ ์ฌ์ด์ ๋ง์ถฐ)
flex-start : (๊ต์ฐจ์ถ)์์ ๊ธฐ์ค ์ ๋ ฌ
flex-end : (๊ต์ฐจ์ถ)๋ ๊ธฐ์ค ์ ๋ ฌ
center : ๊ฐ์ด๋ฐ ์ ๋ ฌ @
stretch : ๊ต์ฐจ์ถ ๋ฐฉํฅ์ผ๋ก ๋์ด๋จ
baseline : ์์ดํ
baseline๊ธฐ์ค ์ ๋ ฌ
๐์ ๋ฆฌ
display: flex;
flex-direction: column; (๊ธฐ๋ณธ๊ฐ์ด row์ผ ๊ทธ๋์ ํ์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ์๋!)
flex-wrap: wrap; (์ค๋ฐ๊ฟ ํ๊ณ ์ถ์๋)
justify-content: flex-start, flex-end, center, space-between, space-around, space-evenly; (์ฃผ์ถ ์ ๋ ฌ)
align-items: flex-start, flex-end, center, stretch, baseline; (๊ต์ฐจ์ถ ์ ๋ ฌ)
align-self: flex-start, flex-end, center, stretch, baseline; (์์ดํ ๊ต์ฐจ์ถ ์์ฒด ์ ๋ ฌ)
align-content: flex-start, flex-end, center, space-between, space-around, space-evenly stretch; (์ฌ๋ฌ์ค์ผ๋ ๊ต์ฐจ์ถ ์ ๋ ฌ)