λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
HTML5 & CSS3

[HTML5 & CSS3] λ³€ν˜•κ³Ό κ΄€λ ¨λœ 속성듀

by μ½”λ”©ν•˜λŠ” λΆ•μ–΄ 2021. 2. 14.
λ°˜μ‘ν˜•

β–Ά λ³€ν˜•κ³Ό κ΄€λ ¨λœ 속성듀

μ•žμ—μ„œ 배운 λ³€ν˜• ν•¨μˆ˜λ“€μ—μ„œ 2차원 λ³€ν˜•μ— 원근감을 μΆ”κ°€ν•˜λ©΄ 3차원 λ³€ν˜•μ„ λ§Œλ“€ 수 μžˆλŠ”λ° μ΄λ•Œ λ‹¨μˆœνžˆ zμΆ•λ§Œ μΆ”κ°€ν•œλ‹€κ³  ν•΄μ„œ 원근감이 μƒκΈ°μ§€λŠ” μ•ŠλŠ”λ‹€. λ‹€μ‹œ 말해 λ³€ν˜•ν•  λ•Œ 기쀀이 λ˜λŠ” 지점을 λ°”κΎΈκ±°λ‚˜ μš”μ†Œμ˜ 원근감을 ν‘œν˜„ν•˜κΈ° μœ„ν•œ λ‹€λ₯Έ 속성도 ν•„μš”ν•˜λ‹€.

​

​

​

*transform-origin 속성 - λ³€ν˜• 기쀀점 μ„€μ •ν•˜κΈ°

μ•žμ—μ„œ transform 속성에 μ“°μ΄λŠ” λ³€ν˜• ν•¨μˆ˜λ₯Ό 배울 λ•Œ xμΆ•κ³Ό yμΆ•, z좕을 κΈ°μ€€μœΌλ‘œ λ³€ν˜•ν–ˆλ‹€. 그런데 transform-origin 속성을 μ΄μš©ν•˜λ©΄ 좕이 μ•„λ‹Œ νŠΉμ • 지점을 λ³€ν˜•μ˜ κΈ°μ€€μœΌλ‘œ μ„€μ •ν•  수 μžˆλ‹€. λ¬Όλ‘  2차원 λ³€ν˜•κ³Ό 3차원 λ³€ν˜• λͺ¨λ‘μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

​

κΈ°λ³Έν˜•)

transform-origin: <xμΆ•> <yμΆ•> <zμΆ•> | initial | inherit ;

 

속성 κ°’

μ„€λͺ…

<xμΆ•>

원점 κΈ°μ€€μ˜ x μ’Œν‘―κ°’μœΌλ‘œ 길이 κ°’μ΄λ‚˜ <λ°±λΆ„μœ¨>, left, center, right μ€‘μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

<yμΆ•>

원점 κΈ°μ€€μ˜ y μ’Œν‘―κ°’μœΌλ‘œ 길이 κ°’μ΄λ‚˜ <λ°±λΆ„μœ¨>, top, center, bottom μ€‘μ—μ„œ 선택할 수 μžˆλ‹€.

<zμΆ•>

원점 κΈ°μ€€μ˜ z μ’Œν‘―κ°’μœΌλ‘œ 길이 κ°’λ§Œ μ‚¬μš©ν•  수 μžˆλ‹€.

이미지 λ³€ν˜• μ‹œμž‘μ μ„ λ‹€μ–‘ν•˜κ²Œ μ§€μ •ν•˜κΈ°

<style>
   .rose {
      -moz-transform: rotateZ(10deg);
      -ms-transform: rotateZ(10deg);
      -o-transform: rotateZ(10deg);
      -webkit-transform: rotateZ(10deg);
      transform: rotateZ(10deg);
   }
   .ltop .rose {
      -webkit-transform-origin: left top;
      -ms-transform-origin: left top;
      -moz-transform-origin: left top;
      -o-transform-origin: left top;
      transform-origin: left top;
   }
   .rtop .rose {
      -webkit-transform-origin: right top;
      -ms-transform-origin: right top;
      -moz-transform-origin: right top;
      -o-transform-origin: right top;
      transform-origin: right top;
   }
   .lbottom .rose {
      -webkit-transform-origin: left bottom;
      -ms-transform-origin: left bottom;
      -moz-transform-origin: left bottom;
      -o-transform-origin: left bottom;
      transform-origin: left bottom;
   }
   .rbottom .rose {
      -webkit-transform-origin: right bottom;
      -ms-transform-origin: right bottom;
      -moz-transform-origin: right bottom;
      -o-transform-origin: right bottom;
      transform-origin: right bottom;
   }
</style>

<body>
<div class="origin">
<div class="ltop"><img src="images/rose.jpg" class="rose"></div>
</div>
<div class="origin">
<div class="rtop"><img src="images/rose.jpg" class="rose"></div>
</div>
<div class="origin">
<div class="lbottom"><img src="images/rose.jpg" class="rose"></div>
</div>
<div class="origin">
<div class="rbottom"><img src="images/rose.jpg" class="rose"></div>
</div>
</body>

 

​

​

*perspective, perspective-origin 속성 - 원근감 ν‘œν˜„ν•˜κΈ°

perspective 속성은 3차원 λ³€ν˜•μ—μ„œ μ‚¬μš©ν•˜λŠ” μ†μ„±μœΌλ‘œ μ›λž˜ μœ„μΉ˜μ—μ„œ μ‚¬μš©μžκ°€ μžˆλŠ” λ°©ν–₯μ΄λ‚˜ λ°˜λŒ€ λ°©ν–₯으둜 μž‘μ•„λ‹ΉκΈ°κ±°λ‚˜ λ°€μ–΄λ‚΄ 원근감을 κ°–κ²Œ ν•œλ‹€. 속성 값은 0보닀 컀야 ν•˜λ©° 값이 클수둝 μ‚¬μš©μžλ‘œλΆ€ν„° 멀어진닀.

​

κΈ°λ³Έν˜•)

perspective: <크기> | none ;

 

속성 κ°’

크기

<크기>

μ›λž˜ μœ„μΉ˜μ—μ„œ μ‚¬μš©μžκ°€ μžˆλŠ” λ°©ν–₯으둜 μ–Όλ§ˆλ‚˜ μ΄λ™ν•˜λŠ”μ§€λ₯Ό ν”½μ…€ 크기둜 μ§€μ •ν•œλ‹€.

none

perspectiveλ₯Ό μ§€μ •ν•˜μ§€ μ•ŠλŠ”λ‹€.

​

perspective-origin 속성을 μ‚¬μš©ν•˜λ©΄ μ’€ 더 높은 κ³³μ—μ„œ 원근을 μ‘°μ ˆν•˜λŠ” λ“―ν•œ λŠλ‚Œμ„ λ§Œλ“€ 수 μžˆλ‹€. perspective-origin μ†μ„±μœΌλ‘œ μž…μ²΄μ μœΌλ‘œ ν‘œν˜„ν•  μš”μ†Œμ˜ μ•„λž«λΆ€λΆ„(bottom) μœ„μΉ˜λ₯Ό 지정할 수 있기 λ•Œλ¬Έμ΄λ‹€.

​

 

κΈ°λ³Έν˜•)

perspective-origin: <xμΆ• κ°’> | <yμΆ• κ°’> ;

 

속성 κ°’

μ„€λͺ…

<xμΆ• κ°’>

μ›Ή μš”μ†Œκ°€ xμΆ•μ—μ„œ 어디에 μœ„μΉ˜ν•˜λŠ”μ§€λ₯Ό μ§€μ •ν•œλ‹€. μ‚¬μš©ν•  수 μžˆλŠ” 값은 길이 κ°’μ΄λ‚˜ λ°±λΆ„μœ¨, left, right, center이닀. κΈ°λ³Έ 값은 50%이닀.

<yμΆ• κ°’>

μ›Ή μš”μ†Œκ°€ yμΆ•μ—μ„œ 어디에 μœ„μΉ˜ν•˜λŠ”μ§€λ₯Ό μ§€μ •ν•œλ‹€. μ‚¬μš©ν•  수 μžˆλŠ” 값은 길이 κ°’μ΄λ‚˜ λ°±λΆ„μœ¨, top, center, bottom이닀. κΈ°λ³Έ 값은 50%이닀.

이미지 νšŒμ „ν•˜λ©° 원근감 μ£ΌκΈ°

<style>
   #no-pers, #pers {
      width: 152px;
      height: 180px;
      border: 1px solid black;
      margin: 30px;
      float: left;
   }
   .rotatex img {
      -webkit-transform: rotateX(50deg);
      -ms-transform: rotateX(50deg);
      -moz-transform: rotateX(50deg);
      -o-transform: rotateX(50deg);
      transform: rotateX(50deg);
   }
   #pers {
      -moz-perspective: 300px;
      -ms-perspective: 300px;
      -webkit-perspective: 300px;
      perspective: 300px;
   }
</style>

<body>
<h4>원본 이미지</h4>
<div>
<img src="images/sunset.jpg" alt="">
</div>
<div id="no-pers">
<div class="rotatex">
<img src="images/sunset.jpg" alt="">
</div>
</div>
<div id="pers">
<div class="rotatex">
<img src="images/sunset.jpg" alt="">
</div>
</div>
</body>

 

​

​

*transform-style 속성 - 3D λ³€ν˜• μ μš©ν•˜κΈ°

μ—¬λŸ¬ 가지 λ³€ν˜•μ„ λ™μ‹œμ— μ μš©ν•  λ•Œ transform-style 속성을 μ‚¬μš©ν•˜λ©΄ λΆ€λͺ¨ μš”μ†Œμ— μ μš©ν•œ 3D λ³€ν˜•μ„ ν•˜μœ„ μš”μ†Œμ—λ„ μ μš©ν•  수 μžˆλ‹€.

​

3D λ³€ν˜•μ„ μ μš©ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ vs μ μš©ν–ˆμ„ λ•Œ

<style>
   .box1 {
      background: #82cbd8;
      -webkit-transform: rotateY(45deg);
      -moz-transform: rotate(45deg);
      -o-transform: rotateY(45deg);
      -ms-transform: rotateY(45deg);
      transform: rotateY(45deg);
   }
   .box2 {
      background: #0d6097;
      -webkit-transform-origin: left top;
      -moz-transform-origin: left top;
      -ms-transform-origin: left top;
      -o-transform-origin: left top;
      transform-origin: left top;
      -webkit-transform: rotateY(45deg);
      -moz-transform: rotateX(45deg);
      -ms-transform: rotateX(45deg);
      -o-transform: rotateX(45deg);
      transform: rotateX(45deg);
   }
   #tr-style1 {
      -webkit-transform-style: flat;
      transform-style: flat;
   }
   #tr-style2 {
      -webkit-transform-style: preserve-3d;
      transform-style: preserve-3d;
   }
</style>

<body>
<div class="container">
<div class="box1" id="tr-style1">
<div class="box2"></div>
</div>
</div>
<div class="container">
<div class="box1" id="tr-style2">
<div class="box2"></div>
</div>
</div>
</body>

 

​

​

*backface-visibility 속성 - μš”μ†Œμ˜ λ’·λ©΄ ν‘œμ‹œν•˜κΈ°

backface-visibility 속성은 μš”μ†Œμ˜ λ’·λ©΄, 즉 λ°˜λŒ€μͺ½ 면을 ν‘œμ‹œν•  것인지λ₯Ό κ²°μ •ν•œλ‹€.

​

κΈ°λ³Έν˜•)

perspective-origin: <xμΆ• κ°’> | <yμΆ• κ°’> ;

 

속성 κ°’

μ„€λͺ…

visible

뒷면을 ν‘œμ‹œν•œλ‹€.

hidden

뒷면을 ν‘œμ‹œν•˜μ§€ μ•ŠλŠ”λ‹€.

μš”μ†Œμ˜ 뒷면을 ν‘œμ‹œν•˜μ§€ μ•Šμ„ λ•Œ vs ν‘œμ‹œν•  λ•Œ

<style>
   .box {
      background: #82cbd8;
      -webkit-transform: rotateY(135deg);
      -moz-transform: rotate(135deg);
      -ms-transform: rotateY(135deg);
      -o-transform: rotateY(135deg);
      transform: rotateY(135deg);
   }
   #back1 {
      -webkit-backface-visibility: hidden;
      -moz-backface-visibility: hidden;
      backface-visibility: hidden;
   }
   #back2 {
      -webkit-backface-visibility: visible;
      -moz-backface-visibility: visible;
      backface-visibility: visible;
   }
</style>

<body>
<div class="container">
<div class="box" id="back1">
<h1>BACK</h1>
</div>
</div>
<div class="container">
<div class="box" id="back2">
<h1>BACK</h1>
</div>
</div>
</body>

 

λ°˜μ‘ν˜•

λŒ“κΈ€