๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CSS๐Ÿ”ง/css&css3 ์• ๋‹ˆ๋ฉ”์ด์…˜

๋‹จ์ผ ์• ๋‹ˆ๋ฉ”์ด์…˜

by hyojinny 2022. 9. 23.
๋‹จ์ผ์• ๋‹ˆ๋ฉ”์ด์…˜ - ํ•œ๋ฒˆ๋งŒ ๋™์ž‘
transition:all ๋˜๋Š” ๊ฐœ๋ณ„์†์„ฑ๋ช… 1s [์ง€์—ฐ์‹œ๊ฐ„] [ease]
ease ์ฒ˜์Œ๊ณผ ๋์ด ๋А๋ฆฌ๊ณ  ์ค‘๊ฐ„์ด ๋น ๋ฆ„, ์ฃผ๋กœ์‚ฌ์šฉ
ease-in(๊ฐ€์†) ์ฒ˜์Œ์€ ๋А๋ฆฌ๊ณ  ๋์—์„œ ๋นจ๋ผ์ง
ex. ์šฐ์ฃผ์„ ์ด ๋ฐ–์œผ๋กœ ๋‚˜๊ฐˆ๋•Œ - ease-out(๊ฐ์†): ์ฒ˜์Œ์€ ๋น ๋ฅด๊ณ  ๋์—์„œ ๋А๋ ค์ง
ex. ํ™”๋ฉด๋ฐ–์—์„œ ์•ˆ์œผ๋กœ ๋“ค์–ด์˜ฌ๋•Œ - ease-in-out: ease์™€ ๊ฐ™์ง€๋งŒ ์ค‘๊ฐ„์†๋„๊ฐ€ ease๋ณด๋‹ค ๋ถ€๋“œ๋Ÿฌ์›€
ex. ๋ฐ˜๋ณต์• ๋‹ˆ๋ฉ”์ด์…˜์— ์‚ฌ์šฉ - steps(5)
ex. ํƒ€์ดํ•‘ ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์‚ฌ์šฉ - cubic-bezier(1,0,0,1) /* easeInOutExpo*/
ex. ํŠน์ˆ˜ํ•œ ์›€์ง์ž„
(์Šคํ”„๋ง, ๋‹ค์ด๋‚˜๋ฏนํ•œ์›€์ง์ž„)์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ
ํฌ๋กฌ๊ฐœ๋ฐœ์ž๋ชจ๋“œ๋กœ ์ปค์Šคํ…€, https://easings.co/ ์ด์šฉ
- linear(๋“ฑ์†๋„): ์†๋„๋ณ€ํ™”๊ฐ€ ์—†์ด ์ผ์ •ํ•จ

* ๋ฐ์Šคํฌํƒ‘์€ ๊ณ ์ •ํฌ๊ธฐ์ด๋ฏ€๋กœ all์‚ฌ์šฉํ•ด๋„๋˜๋ฉฐ
๋ชจ๋ฐ”์ผ, ๋ฐ˜์‘ํ˜•์€ all์‚ฌ์šฉ์‹œ ํฌ๊ธฐ๋„ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋˜๋ฒ„๋ฆฌ๋ฏ€๋กœ ๊ฐœ๋ณ„์†์„ฑ ์‚ฌ์šฉํ•˜์ž
* :hover๋ฅผ ์›€์ง์ด๋Š” ์š”์†Œ์— ๊ฑธ์ง€๋ง๊ฒƒ
* background-color๋กœ ์‚ฌ์šฉ
* transition์€ ์ฒ˜์Œ์— ๋ฏธ๋ฆฌ ๊ฑธ์–ด์•ผํ•˜๋ฉฐ :hover์— ๊ฑธ๊ฒฝ์šฐ :hover์—์„œ๋งŒ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋จ
* ์ฒ˜์Œ transition๊ณผ :hover์˜ transition์„ ๋‹ค๋ฅด๊ฒŒ ์„ธํŒ…๊ฐ€๋Šฅ

 

transform - ์ด๋™,ํฌ๊ธฐ,ํšŒ์ „,๊ธฐ์šธ์ด๊ธฐ๋กœ ๋ณ€ํ™”๋ฅผ ์คŒ
position:relative์ฒ˜๋Ÿผ ์›๋ž˜์œ„์น˜๋Š” ๋ง‰ํžˆ๋ฉด์„œ ์ œ์ž๋ฆฌ์—์„œ ๋œจ๊ฒŒ๋จ
rotateZ(-90deg)  ํšŒ์ „, ์Œ์ˆ˜๋Š” ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ, ์—ฌ๋Ÿฌ๋ฐ”ํ€ดํšŒ์ „์€ ๊ฐ๋„๋ฅผ ๋งŽ์ด์ฃผ๋ฉด๋จ
rotateY ํ”Œ๋ฆฝํšจ๊ณผ(์นด๋“œํ”Œ๋ฆฝํšจ๊ณผ)
translate(x, y) % ์‚ฌ์šฉ์‹œ ์ž์‹ ์˜ ํฌ๊ธฐ๊ฐ€ ๊ธฐ์ค€์ด๋ฉฐ ์Œ์ˆ˜๊ฐ€๋Šฅ
translateX(100px)
translateY(100px)
๊ฐ€๋กœ๋‚˜ ์„ธ๋กœ ํ•œ๋ฐฉํ–ฅ์ผ ๊ฒฝ์šฐ ์‚ฌ์šฉ
transform-origin transform๊ธฐ์ค€์  ๋ณ€๊ฒฝ๊ฐ€๋Šฅ
px, %, left, top ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ
scale(1.5) ๊ฐ€๋กœ,์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ๋ฐฐ์ˆ˜๋กœ ๋ณ€๊ฒฝ
skewX(45deg) ๊ธฐ์šธ์ด๊ธฐ

 

- css ์• ๋‹ˆ๋ฉ”์ด์…˜์€ GPU๊ฐ€์†๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•จ
***** positon:fixed์š”์†Œ ๋ฐ”๊นฅ์ชฝ ์š”์†Œ์— transform์‚ฌ์šฉ์‹œ fixed์š”์†Œ์˜ ๊ธฐ์ค€์ด transform์‚ฌ์šฉํ•œ ์š”์†Œ๋กœ ๋ณ€๊ฒฝ๋จ(ํฌ๋กฌ๋ฒ„๊ทธ)
***** fixed ๋ฐ”๊นฅ์š”์†Œ์— transform์‚ฌ์šฉ๋ถˆ๊ฐ€!!!!!
***** head์— ์—ฐ๊ฒฐ๋œ jsํŒŒ์ผ์ด ํ•˜๋‚˜๋„ ์—†์„๊ฒฝ์šฐ transition์ž๋™์‹œ์ž‘ ๋ฒ„๊ทธ(ํฌ๋กฌ๋ฒ„๊ทธ) ๋ฐœ์ƒํ•จ (2022.09.26์ผ ์ˆ˜์ •๋œ๊ฑธ๋กœ ๋ณด์ž„)

 

 

 

 

 


์˜ˆ์ œ

 

 

๋ฐ•์Šค ์ด๋™์‹œํ‚ค๊ธฐ

.main_section01:hover .box {
    transform: translateX(500px);
}

๋ฐ•์Šค ํด๋ฆญ์‹œ ์ƒ‰ ์ด๋™

/* ์š”์†Œ์ด๋™์‹œ ๋ถ€๋ชจ์— hover */

 

 
 
/* translate์˜ %๋Š” ์š”์†Œ์˜ ํฌ๊ธฐ๊ฐ€ ๊ธฐ์ค€ */
.main_section01:hover .box {
    transform: translateX(100%);
}

 

 

 

 

/* transfrom์€ position:relative ์ฒ˜๋Ÿผ ์›๋ž˜์œ„์น˜๋ฅผ ๋ง‰์•„์ฃผ๋ฉฐ ์ œ์ž๋ฆฌ์—์„œ ๋œธ */

.main_section01:hover .box {
    transform: translate(100px, 30px);
}
transform์— z-index ์•ˆ๋จ
 
 
 
 
 
/* transform:translate ์€ GPU ๊ฐ€์†์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ข€๋” ๋ถ€๋“œ๋Ÿฌ์›€ */
๋‹ค๋ฅธ๊ฒƒ๋ณด๋‹ค ๊ถŒ์žฅ!
 
.main_section02:hover .box{
    /* left: calc(100% - 100px); */
    margin-left: 1100px;
 
๋‘˜๋‹ค ์‚ฌ์šฉ๊ฐ€๋Š”ํ•˜๋‚˜ ๋น„๊ถŒ์žฅ

 

 

ํšŒ์ „์‹œํ‚ค๊ธฐ๋„ ๊ฐ€๋Šฅ 

 

 

    /* transform: rotateX(360deg); */
    /* transform: rotateY(360deg); */
    /* transform: rotateZ(180deg); */
    /* ์Œ์ˆ˜๋ฉด ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ */
    /* transform: rotateZ(-180deg) translate(400px) skew(45deg); */
    transform: scale(2.5) rotateZ(-180deg) skew(45deg);
 
 

 

 

.main_section04 .box {
    transition: all 3s ease;
}
.main_section04:hover .box {
    transform: translate(1100px);
}
 
ํฌ๋กฌ์—์„œ ๊ทธ๋ž˜ํ”„๋กœ ํ™•์ธ๊ฐ€๋Šฅ
์ฒœ์ฒœํžˆ ์‹œ์ž‘ํ•ด์„œ ๋นจ๋ฆฌ ๊ฐ”๋”ฐ๊ฐ€ ์ฒœ์ฒœํžˆ๋“ค์–ด์˜ค๊ธฐ

 

/* transition:all ๋˜๋Š” ์†์„ฑ๋ช… ์‹œ๊ฐ„[ease] */
/* linear์€ ๋“ฑ์†๋„ */
/* ease๋Š” ๊ธฐ๋ณธ๊ฐ’ (์ผ๋ฐ˜์ ) */
/* ease-in ๊ฐ€์†๋„ (๊ฑฐ์˜์•ˆ์”€)*/
/* ease-out ๊ฐ์† (๊ฑฐ์˜์•ˆ์”€)*/
/* cubic-bezier ํŠน์ˆ˜ํ•œ ์›€์ง์ž„ */
.main_section04 .box {
    transition: all 3s ease linear;
}
 
์–‘์ชฝ์œผ๋กœ ์ ์šฉ๊ฐ€๋Šฅ 
    transition: all 1s
 
hover์—
    transition: all 4s;
 
๊ฐˆ๋•Œ๋Š” 4์ดˆ๋กœ ์˜ฌ๋•Œ๋Š” 1์ดˆ๋กœ 2๋ฒˆ์ ์šฉ๊ฐ€๋Šฅ  
 
 
 
 
 
 

 

/* cubic-bezier ํŠน์ˆ˜ํ•œ ์›€์ง์ž„ */  ์Šคํ”„๋ง๊ฐ™์€ ํšจ๊ณผ 
    transition: all 1s 1s cubic-bezier(0.88,-0.2, 0.14, 1.24); 
์†์„ฑ๋ช… /์‹œ๊ฐ„ /์ง€์—ฐ์‹œ๊ฐ„/์Šคํ”„๋งํšจ๊ณผ
 
 
์‰ฝ๊ฒŒ ์†๋„ ๋„ฃ์„์ˆ˜ ์žˆ๋Š” ๊ด€๋ จ ์‹ธ์ดํŠธ ์ฐธ๊ณ 
 
 

Easings - Generate, test and share custom easing curves.

Test common easing curves on a range of interfaces. Or generate and share your own cubic-bezier curves.

easings.co

 

 

 

 

    transition: all 1s steps(10);
๋š๋š ๋Š์–ด์„œ ์Šคํ…์œผ๋กœ ๊ฐ€๋Š”๊ฒƒ (์Šคํ…์˜ ์ˆซ์ž ) 
ํƒ€์ดํฌ ๊ฐ™์€ ํ…์ŠคํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜์—์”€
.main_section04 P {
    border: 1px solid black;
    font-size: 50px;
    width: 0;
    overflow: hidden;
    white-space: nowrap;
    transition: all 2s steps(10);
}
.main_section04 P:hover {
    width: 500px;
}

์ฃผ์˜ ๊ธ€์”จ๋ฅผ ๊ฐ€๋ ค์ค€ ์ƒํƒœ์—์„œ ํ•œ์Šคํ…์‹œ ๋ชจ์—ฌ์ค˜์•ผํ• ๋•Œ 

display: none; ์€ ์ ์šฉ์•ˆ๋จ 
hover์—
    /* overflow: hidden; */ ์ด๋‚˜ 
    visibility: hidden;
 
    visibility: hidden; /  visibility: visible;
    opacity: 1
์š”์†Œ ๊ฐ€๋Šฅ

 

 

 

/* ํด๋ฆญ์š”์†Œ๊ฐ€ ๊ฒน์ณ์žˆ์„๋•Œ ํŽ˜์ด๋“œํšจ๊ณผ ์‚ฌ์šฉ์‹œ
opacity: 0;    visibility: hidden; ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผํ•จ */
.main_section05 .lang_wrap .lang {
    position: absolute;
    left: 0px;
    top: 30px;
    width: 100%;
    background: yellow;
    opacity: 0;
    visibility: hidden;
    transform: all 1s;
}
.main_section05 .lang_wrap:hover .lang {
    opacity: 1;
    visibility: visible;
}
.main_section05 .lang_wrap .lang a {
    display: block;
}
.main_section05  p {
    clear: both;
    font-size: 30px;
}

๋Œ“๊ธ€