css3学习之3d转换
一.API函数|描述-----------------------------------matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)|定义 3D 转换,使用 16 个值的 4x4 矩阵。translate3d(x,y,z)|定义 3D 转化。translate...
·
一.API
函数 | 描述
-----------------------------------
matrix3d(n,n,n,n,n,n,
n,n,n,n,n,n,n,n,n,n) | 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate3d(x,y,z) | 定义 3D 转化。
translateX(x) | 定义 3D 转化,仅使用用于 X 轴的值。
translateY(y) | 定义 3D 转化,仅使用用于 Y 轴的值。
translateZ(z) | 定义 3D 转化,仅使用用于 Z 轴的值。
scale3d(x,y,z) | 定义 3D 缩放转换。
scaleX(x) | 定义 3D 缩放转换,通过给定一个 X 轴的值。
scaleY(y) | 定义 3D 缩放转换,通过给定一个 Y 轴的值。
scaleZ(z) | 定义 3D 缩放转换,通过给定一个 Z 轴的值。
rotate3d(x,y,z,angle) | 定义 3D 旋转。
rotateX(angle) | 定义沿 X 轴的 3D 旋转。
rotateY(angle) | 定义沿 Y 轴的 3D 旋转。
rotateZ(angle) | 定义沿 Z 轴的 3D 旋转。
perspective(n) | 定义 3D 转换元素的透视视图。
3D转换坐标轴
二.其他css3
(1)transform-origin , 改变中心点,
transform-origin: left top(左上角) | right top(右上角) | 50% 100%(底边线中间点位置)
目前我认为left top 和 right top没啥区别,left bottom 和 right bottom没啥区别,可能是应用不多的原因,还没有发现其中的奥妙
三.制作一个六面体
3D转换坐标轴会随着rotate3d转换,所以我认为应该最后完成旋转动作
chrome直接打开运行
<!DOCTYPE html>
<html>
<head>
<title>六面体</title>
<style type="text/css">
.wrapper{
width: 600px;
height: 400px;
border: 1px solid #000;
position: absolute;
left: 200px;
top: 100px;
-webkit-transform:rotateX(-20deg) rotateY(45deg);
transform:rotateX(-20deg) rotateY(45deg);
transform-style: preserve-3d;
}
.wrapper .d{
display: table-cell;
text-align: center;
vertical-align: middle;
color: white;
font-size: 30px;
width: 100px;
height: 100px;
background: #006600;
position: absolute;
}
/* 最后再做旋转 */
.wrapper .d1{
background: #33CC99;
opacity: 0.5;
transform: translateY(50px) translateZ(50px) rotateX(-90deg);
}
.wrapper .d2{
background: #33FFFF;
opacity: 0.5;
transform: translateY(-50px) translateZ(50px) rotateX(-90deg);
}
.wrapper .d3{
background: #666666;
opacity: 0.5;
transform: translateX(-50px) translateZ(50px) rotateY(90deg);
}
.wrapper .d4{
background: #66FF33;
opacity: 0.5;
transform: translateX(50px) translateZ(50px) rotateY(90deg);
}
.wrapper .d5{
background: #993366;
opacity: 0.5;
}
.wrapper .d6{
background: yellow;
opacity: 0.5;
transform: translateZ(100px);
}
</style>
</head>
<body>
<div class="wrapper">
<div class="d d1">1</div>
<div class="d d2">2</div>
<div class="d d3">3</div>
<div class="d d4">4</div>
<div class="d d5">5</div>
<div class="d d6">6</div>
</div>
</body>
</html>
制作六面体的总结
(1)3D旋转会改变3D坐标系,所以建议最后进行旋转动作
(2)父容器先进行一下旋转会更直观的展示效果,也利于制作
(3)transform-style要设置为preserve-3d
更多推荐
已为社区贡献1条内容
所有评论(0)