CSS3过渡与transforms

2019-03-14  本文已影响0人  GoFzy

一、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坐标轴:


CSS3的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只能设置长度值
上一篇 下一篇

猜你喜欢

热点阅读