rem은 현재 html 루트 font-size 기준으로 1rem = 16px
em은 현재 요소의 폰트사이즈의 기준으로 요소의 크기를 잡는다. (ex 현재 요소의 폰트사이즈의 기준으로 패딩을 변경한다 )
현재 켜져있는 브라우저 창의 크기
<style>
.world {
display: flex;
align-items: center;
justify-content: center;
width: 60vw;
height: 60vh;
background: #fff000;
/* perspective라는 속성을 주게되면 wrapper공간이 3D로 바뀐다. 단위 px*/
perspective: 500px;
}
.card {
display: flex;
align-items: center;
justify-content: center;
width: 100px;
height: 150px;
border-radius: 0.5em;
font-size: 1.5rem;
background: red;
transform: rotateY(45deg);
/* 요소에다가 회전되는 element자체에 perspective를 주면된다 */
/* transform: perspective(500px) rotateY(45deg); */
}
</style>
</head>
<body>
<div class="world">
<div class="card">A</div>
<div class="card">B</div>
<div class="card">C</div>
</div>
</body>
perspective 속성에서 눈에서 가까울수록 3D효과가 극적으로 표현된다.
(얼마나 내눈에 멀리있는 시점으로 바라볼꺼냐? 숫자가 작아질수록 내 눈에 앞에 있는것 처럼 보인다)
즉 가까울 수록 더 3D처럼 보이기 된다.
멀리있을때는 완만하게 보인다.
<style>
.world {
display: flex;
align-items: center;
justify-content: center;
width: 60vw;
height: 60vh;
background: #fff000;
perspective: 500px;
}
.card {
display: flex;
align-items: center;
justify-content: center;
width: 100px;
height: 150px;
border-radius: 0.5em;
font-size: 1.5rem;
margin: 1em;
background: red;
transform: rotateY(0deg);
transition: 1s;
/* transform: perspective(500px) rotateY(45deg); */
}
.world:hover .card {
transform: rotateY(180deg);
}
</style>
rotateY(0deg)라는 속성을 굳이 써주는 이유는 브라우저가 봤을때 기준을 잡아 주기 위함이다.