一、transition
过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。语法格式:
transition: 要过渡的属性 花费时间 运动曲线 何时开始;(如果有多组属性变化,还是用逗号隔开)
属性及其描述:
运动曲线示意图:
附上仿京东侧边栏写法:
<!DOCTYPE html>
<html>
<head>
<title>京东侧边栏</title>
<style>
* {
margin: 0;
padding: 0;
}
.subnav li {
list-style: none;
width: 20px;
height: 20px;
margin: 3px 0;
background-color: pink;
position: relative;
}
.subnav {
width: 20px;
margin: 100px auto;
}
.subnav div {
position: absolute;
right: 0;
top: 0;
height: 20px;
width: 0;
background-color: purple;
transition: all .6s;
z-index: -1;
}
.subnav li:hover div {
width: 100px;
}
</style>
</head>
<body>
<div class="subnav">
<ul>
<li><div></div></li>
<li><div></div></li>
<li><div></div></li>
<li><div></div></li>
<li><div></div></li>
</ul>
</div>
</body>
</html>
二、2D变形(CSS3) transform
transform同样也是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、倾斜、缩放,甚至支持矩阵方式,配合过渡和动画知识,可以取代大量之前只能靠Flash才可以实现的效果。
2.1 移动tanslate(x,y)
基本语法:
translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动)
translateX(x)仅水平方向移动(X轴移动)
translateY(Y)仅垂直方向移动(Y轴移动)
translate还有一个妙处就是实现盒子水平居中,相比于margin外边距和定位方法,translate方法适用范围更广,在不知道盒子大小或者不方便计算时就可以使用该方法:
.box {
width: 499.9999px;
height: 400px;
background: pink;
position: absolute;
left:50%;
top:50%;
transform:translate(-50%,-50%); /* 走的自己的一半 */
}
2.2 缩放scale(x,y)
基本语法:
scale(X,Y)使元素水平方向和垂直方向同时缩放(也就是X轴和Y轴同时缩放)
scaleX(x)元素仅水平方向缩放(X轴缩放)
scaleY(y)元素仅垂直方向缩放(Y轴缩放)
scale()的取值默认的值为1,当值设置为0.01到0.99之间的任何值,作用使一个元素缩小;而任何大于或等于1.01的值,作用是让元素放大
2.3 旋转rotate(deg)
基本语法:
transform:rotate(45deg);/*正值为顺时针,负值为逆时针*/
div{transform-origin: left top;transform: rotate(45deg); } /* 改变元素原点到左上角,然后进行顺时旋转45度 */
div{transform-origin: 10px 10px;transform: rotate(45deg); } /* 改变元素原点到x 为10 y 为10,然后进行顺时旋转45度 */
2.4 倾斜skew(deg,deg)
基本语法:
transform:skew(30deg,0deg);/*把元素水平方向上倾斜30度,竖直方向保持不变*/
三、3D变形(CSS3) transform
首先来看一下3D坐标轴:
其中用法与2D相类似,著不过多出了Z轴
rotateX(deg)//绕x轴旋转
rotateY(deg)//绕y轴旋转
rotateZ(deg)//绕z轴旋转
transelateX();//与2D一致水平方向移动
transelateY();//与2D一致竖直方向移动
translateZ(z);//沿Z轴方向移动
translate3d(x,y,z);//其中,x和y可以是长度值,也可以是百分比,百分比是相对于其本身元素水平方向的宽度和垂直方向的高度和;z只能设置长度值