๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HTML5 & CSS3

[HTML5 & CSS3] ๋ณ€ํ˜•

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 14.
๋ฐ˜์‘ํ˜•

โ–ถ ๋ณ€ํ˜•

ํŠน์ • ์š”์†Œ์˜ ํฌ๊ธฐ๋‚˜ ํ˜•ํƒœ๊ฐ€ ๋ณ€ํ•˜๋Š” ๊ฒƒ. CSS3๋ฅผ ์ด์šฉํ•˜๋ฉด ์Šคํƒ€์ผ ์‹œํŠธ ์†Œ์Šค๋งŒ์œผ๋กœ ๊ฐ„๋‹จํžˆ ์ด๋ฏธ์ง€๋ฅผ ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

โ€‹

โ€‹

*2์ฐจ์› ๋ณ€ํ˜•๊ณผ 3์ฐจ์› ๋ณ€ํ˜•

'2์ฐจ์› ๋ณ€ํ˜•'์€ ์›น ์š”์†Œ๋ฅผ ๋ณ€ํ˜•์‹œํ‚ฌ ๋•Œ ๋‹จ์ˆœํžˆ ์ˆ˜ํ‰์ด๋‚˜ ์ˆ˜์ง์œผ๋กœ ์ด๋™ํ•˜๊ณ  ํšŒ์ „ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

'3์ฐจ์› ๋ณ€ํ˜•'์€ x์ถ•๊ณผ y์ถ•์— ์›๊ทผ๊ฐ์„ ์ฃผ๋Š” z์ถ•์„ ์ถ”๊ฐ€ํ•ด ๋ณ€ํ˜•์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹

*transform๊ณผ ๋ณ€ํ˜• ํ•จ์ˆ˜

์ด๋ฏธ์ง€๋ฅผ ํšŒ์ „์‹œํ‚ค๊ฑฐ๋‚˜ ์ด๋™ํ•˜๋Š” ๋“ฑ ์›น ์š”์†Œ๋ฅผ ๋ณ€ํ˜•ํ•˜๋ ค๋ฉด transform ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ transform: ๋‹ค์Œ์— ๋ณ€ํ˜• ํ•จ์ˆ˜๋ฅผ ํ•จ๊ป˜ ์ž…๋ ฅํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด .photo๋ผ๋Š” ํด๋ž˜์Šค ์„ ํƒ์ž๋ฅผ ๊ฐ€์ง„ ์›น ์š”์†Œ๋ฅผ x์ถ•์œผ๋กœ 50px, y์ถ•์œผ๋กœ 100px ์ด๋™์‹œํ‚ค๋ ค๋ฉด ์›น ์š”์†Œ๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ๋ณ€ํ˜• ํ•จ์ˆ˜ translate์„ ์‚ฌ์šฉํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์Šคํƒ€์ผ์„ ์ง€์ •ํ•œ๋‹ค.

โ€‹

.photo { transform: translate(50px, 100px); }

 

โ€‹

-2์ฐจ์› ๋ณ€ํ˜• ํ•จ์ˆ˜

๋ณ€ํ˜• ํ•จ์ˆ˜

์„ค๋ช…

translate(tx, ty)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ x์ถ•๊ณผ y์ถ•์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

translateX(tx)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ x์ถ•์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

translateY(ty)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ y์ถ•์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

scale(sx, sy)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ x์ถ•๊ณผ y์ถ•์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•œ๋‹ค.

scaleX(sx)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ x์ถ•์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•œ๋‹ค.

scaleY(sy)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ y์ถ•์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•œ๋‹ค.

rotate(๊ฐ๋„)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ ํšŒ์ „ํ•œ๋‹ค.

skew(ax, ay)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ x์ถ•๊ณผ y์ถ•์œผ๋กœ ์™œ๊ณกํ•œ๋‹ค.

skewX(ax)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ x์ถ•์œผ๋กœ ์™œ๊ณกํ•œ๋‹ค.

skewY(ay)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ y์ถ•์œผ๋กœ ์™œ๊ณกํ•œ๋‹ค.

 

โ€‹

-3์ฐจ์› ๋ณ€ํ˜• ํ•จ์ˆ˜

๋ณ€ํ˜• ํ•จ์ˆ˜

์„ค๋ช…

matrix3d(n, [n])

4x4 ํ–‰๋ ฌ์„ ์ด์šฉํ•ด ์ด๋™๊ณผ ํ™•๋Œ€/์ถ•์†Œ, ํšŒ์ „ ๋“ฑ์˜ ๋ณ€ํ™˜์„ ์ง€์ •ํ•œ๋‹ค.

translate3d(tx, ty, tz)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ x์ถ•๊ณผ y์ถ•, z์ถ•์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

translateZ(tz)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ z์ถ•์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

scale3d(sx, sy, sz)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ x์ถ•๊ณผ y์ถ•, z์ถ•์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•œ๋‹ค.

scaleZ(sz)

์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ z์ถ•์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•œ๋‹ค.

rotate3d(rx, ry, rz, ๊ฐ๋„)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ ํšŒ์ „ํ•œ๋‹ค.

rotateX(๊ฐ๋„)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ x์ถ•์œผ๋กœ ํšŒ์ „ํ•œ๋‹ค.

rotateY(๊ฐ๋„)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ y์ถ•์œผ๋กœ ํšŒ์ „ํ•œ๋‹ค.

rotateZ(๊ฐ๋„)

์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ z์ถ•์œผ๋กœ ํšŒ์ „ํ•œ๋‹ค.

perspective(๊ธธ์ด)

์ž…์ฒด์ ์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ๋Š” ๊นŠ์ด ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹

*translate ๋ณ€ํ˜• ํ•จ์ˆ˜ - ์š”์†Œ ์ด๋™์‹œํ‚ค๊ธฐ

translate ๋ณ€ํ˜• ํ•จ์ˆ˜๋Š” 2์ฐจ์›๊ณผ 3์ฐจ์›์—์„œ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ๋ณ€ํ˜• ํ•จ์ˆ˜์ด๋‹ค. x์ถ• ๋ฐฉํ–ฅ์ด๋‚˜ y์ถ• ๋ฐฉํ–ฅ ๋˜๋Š” ์–‘์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ๊ฑฐ๋ฆฌ๋ฅผ ์ง€์ •ํ•ด ํ•ด๋‹น ์š”์†Œ๋ฅผ ์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ ์ด๋™์‹œํ‚จ๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

transform:translate(tx, ty)

transform:translate3d(tx, ty, tx)

transform:translateX(tx)

transform:translateY(ty)

transform:translateZ(tz)

 

์ด๋ฏธ์ง€ ์ด๋™ํ•˜๊ธฐ

<style>
   .movex:hover {
      -webkit-transform: translateX(50px);
      -ms-transform: translateX(50px);
      -moz-transform: translateX(50px);
      -o-transform: translateX(50px);
      transform: translateX(50px);
   }
   .movey:hover {
      -webkit-transform: translateY(20px);
      -ms-transform: translateY(20px);
      -moz-transform: translateY(20px);
      -o-transform: translateY(20px);
      transform: translateY(20px);
   }
   .movexy:hover {
      -webkit-transform: translate(10px, 20px);
      -ms-transform: translate(10px, 20px);
      -moz-transform: translate(10px, 20px);
      -o-transform: translate(10px, 20px);
      transform: translate(10px, 20px);
   }
</style>

<body>
<div class="origin">
<div class="movex"><img src="images/bus.jpg"></div>
</div>
<div class="origin">
<div class="movey"><img src="images/bus.jpg"></div>
</div>
<div class="origin">
<div class="movexy"><img src="images/bus.jpg"></div>
</div>
</body>

 

โ€‹

โ€‹

*scale ๋ณ€ํ˜• ํ•จ์ˆ˜ - ์š”์†Œ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ธฐ

scale ๋ณ€ํ˜• ํ•จ์ˆ˜๋Š” ์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ ํ™•๋Œ€/์ถ•์†Œํ•œ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋Š” scale(sx, sy)์™€ scaleX(sx), scaleY(sy), scale3d(sx, sy, sz), scaleZ(sz)์ธ๋ฐ ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ’์ด 1๋ณด๋‹ค ํฌ๋ฉด ํ™•๋Œ€๋˜๊ณ  1๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ถ•์†Œ๋œ๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

transform:scale(sx, sy)

transform:scale3d(sx, sy, sx)

transform:scaleX(sx)

transform:scaleY(sy)

transform:scaleZ(sz)

 

์ด๋ฏธ์ง€ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ธฐ

<style>
   .scalex:hover {
      -webkit-transform: scaleX(1.2);
      -ms-transform: scaleX(1.2);
      -moz-transform: scaleX(1.2);
      -o-transform: scaleX(1.2);
      transform: scaleX(1.2);
   }
   .scaley:hover {
      -webkit-transform: scaleY(1.5);
      -ms-transform: scaleY(1.5);
      -moz-transform: scaleY(1.5);
      -o-transform: scaleY(1.5);
      transform: scaleY(1.5);
   }
   .scale:hover {
      -webkit-transform: scale(0.7);
      -ms-transform: scale(0.7);
      -moz-transform: scale(0.7);
      -o-transform: scale(0.7);
      transform: scale(0.7);
   }
</style>
</head>

<body>
<div class="origin">
<div class="scalex"><img src="images/fruit.jpg"></div>
</div>
<div class="origin">
<div class="scaley"><img src="images/fruit.jpg"></div>
</div>
<div class="origin">
<div class="scale"><img src="images/fruit.jpg"></div>
</div>
</body>

 

โ€‹

โ€‹

*rotate ๋ณ€ํ˜• ํ•จ์ˆ˜ - ์š”์†Œ ํšŒ์ „ํ•˜๊ธฐ

2์ฐจ์›๊ณผ 3์ฐจ์› ๋ณ€ํ˜• ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ rotate ๋ณ€ํ˜• ํ•จ์ˆ˜๋Š” ์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ ์›น ์š”์†Œ๋ฅผ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์ด๋‚˜ ์‹œ๊ณ„ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค. rotate ๋ณ€ํ˜• ํ•จ์ˆ˜๋Š” 2์ฐจ์› ํ•จ์ˆ˜์ผ ๋•Œ์™€ 3์ฐจ์› ํ•จ์ˆ˜์ผ ๋•Œ์˜ ๊ธฐ๋ณธํ˜•์ด ๋‹ค๋ฅด๋‹ค.

โ€‹

-2์ฐจ์› ํ•จ์ˆ˜ ๊ธฐ๋ณธํ˜•

 

๊ธฐ๋ณธํ˜•)

transform:rotate(๊ฐ๋„)

 

-3์ฐจ์› ํ•จ์ˆ˜ ๊ธฐ๋ณธํ˜•

 

๊ธฐ๋ณธํ˜•)

transform:rotate(rx, ry, ๊ฐ๋„)

transform:rotate3d(rx, ry, rx, ๊ฐ๋„)

transform:rotateX(rx)

transform:rotateY(ry)

transform:rotateZ(rz)

โ€‹

์ด๋ฏธ์ง€ 2์ฐจ์› ํšŒ์ „ํ•˜๊ธฐ

<style>
   .rotate1:hover {
      -webkit-transform: rotate(20deg);
      -ms-transform: rotate(20deg);
      -moz-transform: rotate(20deg);
      -o-transform: rotate(20deg);
      transform: rotate(20deg);
   }
   .rotate2:hover {
      -webkit-transform: rotate(-40deg);
      -ms-transform: rotate(-40deg);
      -moz-transform: rotate(-40deg);
      -o-transform: rotate(-40deg);
      transform: rotate(-40deg);
   }
</style>

<body>
<div class="origin">
<div class="rotate1"><img src="images/fruit.jpg"></div>
</div>
<div class="origin">
<div class="rotate2"><img src="images/fruit.jpg"></div>
</div>
</body>

 

โ€‹

โ€‹

์ด๋ฏธ์ง€ 3์ฐจ์› ํšŒ์ „ํ•˜๊ธฐ

<style>
   .origin {
      perspective: 200px; /* 3์ฐจ์›์—์„œ ์ž…์ฒด์ ์ธ ๋Š๋‚Œ์„ ์ฃผ๊ธฐ ์œ„ํ•ด ํ™”๋ฉด์— ๊นŠ์ด๊ฐ์„ ์คŒ */
   }
   .rotatex {
      -webkit-transform: rotateX(45deg);
      -moz-transform: rotateX(45deg);
      -o-transform: rotateX(45deg);
      -ms-transform: rotateX(45deg);
      transform: rotateX(45deg);
   }
   .rotatey {
      -webkit-transform: rotateY(45deg);
      -moz-transform: rotateY(45deg);
      -o-transform: rotateY(45deg);
      -ms-transform: rotateY(45deg);
      transform: rotateY(45deg);
   }
   .rotatez {
      -webkit-transform: rotateZ(45deg);
      -moz-transform: rotateZ(45deg);
      -o-transform: rotateZ(45deg);
      -ms-transform: rotateZ(45deg);
      transform: rotateZ(45deg);
   }
   .rotatexyz {
      -webkit-transform: rotate3d(2.5, 1.2, -1.5, 45deg);
      -moz-transform: rotate3d(2.5, 1.2, -1.5, 45deg);
      -o-transform: rotate3d(2.5, 1.2, -1.5, 45deg);
      -ms-transform: rotate3d(2.5, 1.2, -1.5, 45deg);
      transform: rotate3d(2.5, 1.2, -1.5, 45deg);
   }
</style>

<body>
<div class="origin">
<div class="rotatex"><img src="images/fruit.jpg" alt=""></div>
</div>
<div class="origin">
<div class="rotatey"><img src="images/fruit.jpg" alt=""></div>
</div>
<div class="origin">
<div class="rotatez"><img src="images/fruit.jpg" alt=""></div>
</div>
<div class="origin">
<div class="rotatexyz"><img src="images/fruit.jpg" alt=""></div>
</div>
</body>

 

โ€‹

โ€‹

*skew ๋ณ€ํ˜• ํ•จ์ˆ˜ - ์š”์†Œ๋ฅผ ๋น„ํ‹€์–ด ์™œ๊ณกํ•˜๊ธฐ

2์ฐจ์› ๋ณ€ํ˜•๋งŒ ๊ฐ€๋Šฅํ•œ skew ๋ณ€ํ˜• ํ•จ์ˆ˜๋Š” ์š”์†Œ๋ฅผ ์ง€์ •ํ•œ ๊ฐ๋„๋งŒํผ ๋น„ํ‹€์–ด ์™œ๊ณกํ•œ๋‹ค. ์ด๋•Œ ์–‘์ชฝ ๋ฐฉํ–ฅ์ด๋‚˜ ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋น„ํ‹€ ์ˆ˜ ์žˆ๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

transform:skew(ax, ay)

transform:skewX(ax)

transform:skewY(ay)

 

x์ถ•๊ณผ y์ถ•์œผ๋กœ ์ด๋ฏธ์ง€ ์™œ๊ณกํ•˜๊ธฐ

<style>
   .skewx:hover {
      -webkit-transform: skewX(30deg);
      -ms-transform: skewX(30deg);
      -moz-transform: skewX(30deg);
      -o-transform: skewX(30deg);
      transform: skewX(30deg);
   }
   .skewy:hover {
      -webkit-transform: skewY(15deg);
      -ms-transform: skewY(15deg);
      -moz-transform: skewY(15deg);
      -o-transform: skewY(15deg);
      transform: skewY(15deg);
   }
   .skewxy:hover {
      -webkit-transform: skew(-25deg, -15deg);
      -ms-transform: skew(-25deg, -15deg);
      -moz-transform: skew(-25deg, -15deg);
      -o-transform: skew(-25deg, -15deg);
      transform: skew(-25deg, -15deg);
   }
</style>
</head>

<body>
<div class="origin">
<div class="skewx"><img src="images/rose.jpg"></div>
</div>
<div class="origin">
<div class="skewy"><img src="images/rose.jpg"></div>
</div>
<div class="origin">
<div class="skewxy"><img src="images/rose.jpg"></div>
</div>
</body>

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€