前言
在网页设计中,交互效果扮演着非常重要的角色。除了html和css技术基础之外,交互体验是网站是否成功的决定性因素之一。近年来,css3 transform技术逐渐成为设计人员的新宠,具有出色的交互效果,更可以不需要js的支持直接完成动画效果,给网站设计带来了更多的可能性。
一、什么是CSS3 Transform?
在介绍CSS3 Transform之前,我们先说下改变HTML元素在一定时间内从一个状态到另一个状态的过程叫做动画。动画分为两种,一种是CSS动画,另一种是JavaScript动画。CSS3 Transform紧密联系CSS3动画技术,是指一组浏览器通过CSS3属性将一个HTML元素在页面上的位置、大小、旋转、扭曲、倾斜等进行变换的效果。实现方式主要是通过CSS3样式表属性改变DOM元素的位置、尺寸、形状等,
CSS3 Transform具有以下特点:
1. 可以改变HTML元素的位置,大小,旋转,倾斜等外观
2. 可以实现复杂的2D、3D变换效果,是Web前端的前沿技术
3. 无需使用JavaScript,也无需考虑兼容性问题
4. 可以在开发交互设计中扮演很重要的角色,实现前端的视觉效果。
二、CSS3 Transform属性介绍
Transform属性有两种类型:2D和3D,2D的变换有translate(平移)、scale(缩放)、rotate(旋转)和skew(倾斜);3D的变换属性Push、Pull、Extend、Flip、Rotate、ZoomIn和ZoomOut。
以下是2D分类下的一些CSS3 Transform的常用属性:
1. Translate:平移,只改变物体的位置,没有旋转,倾斜和缩放。
```
transform: translate(x,y);
```
2. Scale:缩放,改变物体的大小,可以缩小或放大。
```
transform: scale(x,y);
```
3. Rotate:旋转,可以让物体沿着Z轴或X,Y轴或任意轴旋转一定度数。
```
transform: rotate(deg);
```
4. Skew(倾斜):可以改变物体沿着X或者Y轴倾斜,呈斜方向。
```
transform: skew(x-angle, y-angle);
```
三、css3 transform实现效果
1. 旋转的形状
我们可以通过CSS3 transform实现简单的旋转形状,如下:
```
.shape{
width:100px;
height:100px;
background-color:blue;
transition:transform 1s;
}
.shape:hover{
transform:rotate(180deg);
}
```
如上所示,我们给元素定义了一个初始状态(蓝色):然后当鼠标悬停时,通过加入 transform:rotate(180deg),我们可以看到蓝色正方形变成了橙色正方形(180度的旋转)。
2. 翻转效果
我们可以使用CSS3 transform中的rotateX和rotateY来实现翻转效果:
```
.flip-card {
background-color: blue;
width: 300px;
height: 200px;
perspective: 1000px;
}
/* 翻转整个卡片 */
.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.6s;
transform-style: preserve-3d;
}
.flip-card:hover .flip-card-inner {
transform: rotateY(180deg);
}
/* 翻转前面的面 */
.flip-card-front, .flip-card-back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
}
/* 定义back面 */
.flip-card-back {
background-color: red;
transform: rotateY(180deg);
}
```
如上所示,翻转整个卡片我们使用了transform-style: preserve-3d;定义为3D效果。而当鼠标悬浮在上面时,通过加入:transform: rotateY(180deg);我们可以看到卡片的背面朝向我们。
3. 阴影效果
我们可以通过CSS3 transform和box-shadow属性来达到阴影效果:
```
.shadow{
height: 120px;
width: 120px;
margin-bottom: 40px;
position: relative;
transform: rotate(-6deg);
left:25%;
box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.3), 0 17px 50px 0 rgba(0, 0, 0, 0.19);
}
```
如上所示,我们通过CSS3 transform属性实现垂直偏移(left)和旋转阴影效果。同时,我们使用box-shadow属性为元素添加多个轮廓。
四、结语
总之,CSS3 Transform技术是设计人员的必备技能之一,借助它能够实现优美的网页设计效果。在实践过程中,我们还需要灵活运用,结合其他技术来生成更酷炫的效果。最后提醒,要注意设计的质量,不同的交互效果要配合不同的内容,并且应该保持随时观察学习的心态。