2D轉(zhuǎn)換模塊
-
transform: translate(50px,50px);
平移屬性- 平移屬性,第一個參數(shù)代表水平,第二個參數(shù)代表垂直方向只寫一個參數(shù)代表水平方向
-
transform: rotate(45deg);
旋轉(zhuǎn)屬性- 注意點: 旋轉(zhuǎn)屬性需要加上度數(shù)單位deg
-
transform: scale(1,0.5);
縮放屬性- 第一個參數(shù):水平方向
第二個參數(shù):垂直方向 - 注意點:
如果取值是1, 代表不變
如果取值大于1, 代表需要放大
如果取值小于1, 代表需要縮小
如果水平和垂直縮放都一樣, 那么可以簡寫為一個參數(shù)
- 第一個參數(shù):水平方向
注意點:
1.如果需要進行多個轉(zhuǎn)換, 那么用空格隔開
2.2D的轉(zhuǎn)換模塊會修改元素的坐標(biāo)系, 所以旋轉(zhuǎn)之后再平移就不是水平平移的
transform: translate(50px) rotate(45deg) scale(2);
2D轉(zhuǎn)換形變中心點
- 通過設(shè)置
transform-origin
屬性來修改形變中心點 - 默認(rèn)情況下所有的元素都是以自己的中心點作為參考來旋轉(zhuǎn)的/縮放, 我們可以通過形變中心點屬性來修改它的參考點
- transform-origin屬性取值
- 第一個參數(shù):水平方向
第二個參數(shù):垂直方向 - 取值有三種形式
具體像素
百分比
特殊關(guān)鍵字
- 第一個參數(shù):水平方向
transform-origin: 30px 30px;
transform-origin: 50% 30%;
transform-origin: bottom right;
3D轉(zhuǎn)換模塊
什么是2D和3D
2D就是一個平面, 只有寬度和高度, 沒有厚度
3D就是一個立體, 有寬度和高度, 還有厚度
默認(rèn)情況下所有的元素都是呈2D展現(xiàn)的如何讓某個元素呈3D展現(xiàn)
和透視一樣, 想看到某個元素的3d效果, 只需要給他的父元素
添加一個transform-style
屬性, 然后設(shè)置為preserve-3d
即可
注意點:
transform-style: preserve-3d 需要給父元素添加
<style>
*{
margin: 0;
padding: 0;
}
.father {
width: 200px;
height: 200px;
background-color: red;
border: 1px solid #000;
margin: 100px auto;
perspective: 500px;
transform-style: preserve-3d;
transform: rotateY(0deg);
}
.son{
width: 100px;
height: 100px;
background-color: blue;
border: 1px solid #000;
margin: 0 auto;
margin-top: 50px;
transform: rotateY(45deg);
}
</style>
<div class="father">
<div class="son"></div>
</div>
- 3D立方體
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin: 0;
padding: 0;
}
ul{
width: 200px;
height: 200px;
border: 1px solid #000;
box-sizing: border-box;
margin: 100px auto;
position: relative;
transform: rotateX(0deg) rotateY(0deg);
transform-style: preserve-3d;
animation: sport 8s alternate linear;
perspective: 500px;
}
ul li{
list-style: none;
width: 200px;
height: 200px;
font-size: 60px;
text-align: center;
line-height: 200px;
position: absolute;
left: 0;
top: 0;
}
ul li:nth-child(1){
background-color: red;
transform: translateX(-50%) rotateY(90deg);
}
ul li:nth-child(2){
background-color: yellow;
transform: translateX(50%) rotateY(90deg);
}
ul li:nth-child(3){
background-color: green;
transform: translateY(-50%) rotateX(90deg);
}
ul li:nth-child(4){
background-color: blueviolet;
transform: translateY(50%) rotateX(270deg);
}
ul li:nth-child(5){
background-color: blue;
transform: translateZ(-100px) rotateX(180deg);
}
ul li:nth-child(6){
background-color: pink;
transform: translateZ(100px);
}
@keyframes sport {
from{
transform: rotateX(0deg);
}
to{
transform: rotateX(360deg);
}
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</body>
</html>