这次基本上是 html5/css3 最后的一部分内容了,一共h5c3分为了三讲,今天是最后一讲内容。回顾上一篇我们基本上学习了 css3 中一大部分的内容,我们学习了基于transform的移动、旋转、缩放等常用的效果,还掌握了css3 2D转换的综合写法,不仅如此还学习了 animation动画效果,这些都是为css3实现更为酷炫的效果而学习的内容,而且也为css添加了很多可扩展的技能。看知识总是比较散漫的,如果想烂熟于心还是需要多加练习。
3D在现在看来是十分普遍的存在,不管是应用到技术上来说还是应用到现实生活中的场景,都离不开3D效果的实现。在c3中也出现3D的效果,想要实现3D效果一般分为两种特点:
还有一点就是三维坐标系
transform: translateX(100px); —— 仅仅在 x 轴上移动100px
transform: translateY(100px); —— 仅仅在 y 轴上移动100px
transform: translateZ(100px); —— 仅仅在 z 轴上移动100px
transform: translate3D(x, y, z); —— 其中xyz分别指要移动的轴方向的距离
需要注意的是在 transform:translate中如果一个一个写的话,下面内容会覆盖上面的内容 例如:
transform:translateX(100px) // y 会覆盖 x transform: translateY(100px)
例如上面的代码,你肯定想的是将盒子的 x 移动100px,再将盒子的 y 轴移动 100px,实际上 y 覆盖了 x 最后的效果仅仅是将 y 轴移动了100px,如果想达到这种效果的话,需要简写形式
// 如果没有值的话可以写0代替 // 这样的效果就是 x、y轴移动了 100px,Z轴不动 transform: translate3D(100px, 100px, 0)
注意:想要实现3D效果的移动还需要将父盒子中加一个透视才能达到这样的效果。如下图
原始效果
呈现的3D效果
透视:perspective
透视需要写在被观察元素的父盒子上面
可以理解这种就是透视产生的效果 如下图
3D旋转指可以让元素在三维平面上沿着x轴、y轴、z轴或者自定义轴进行旋转
语法:
transform: rotateX(45deg); —— 沿着 X 轴正方向旋转 45 度
transform: rotateY(45deg); —— 沿着 y 轴正方向旋转 45 度
transform: rotateZ(45deg); —— 沿着 z 轴正方向旋转 45 度
transform: rotate3d(x, y, z, deg); —— 沿着自定义轴旋转 deg为旋转角度如下图所示
初始状态:
旋转之后:
3D呈现:transform-style
私有前缀:
提倡的兼容性写法:
// 兼容 -moz- 写法 -moz-border-radius: 10px; // 兼容 -ms- 写法 -ms-border-radius: 10px; // 兼容 -webkit- 写法 -webkit-border-radius: 10px; // 兼容 -o- 写法 -o-border-radius: 10px;
好了,今天 css3 中的 3D效果基本上就了解完了,下去自己可以在编辑器中写点小demo尝试一下,到现在h5c3基本上就结束了。自己可以好好的练习练习。接下里我们就要开启一些布局的内容了,例如:flex布局,rem、em布局等内容。
大鹏一日同风起,扶摇直上九万里