关于CSS:transform、transition的运用

  这3个属性是CSS3新增的属性,功能极其强大,能完成许多以往JS才能完成的页面动态效果,而且运行效率非常高,考虑到浏览器兼容性问题,应在3个属性前面加上各浏览器的前缀。以下思维导图介绍了3个属性的各属性值及其代表的意义,请仔细阅读。

一、transform 变换样式

  1.transform:translate(x,y)  2D平移

  2.transform:translateX(x)  水平方向上的平移

  3.transform:translateY(y)  垂直方向上的平移

    取值:x,y=px 或%

  当translate中的x或y=0时,也能有水平或垂直方向上的平移,0不可省略。  

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: #ccc;
            transform:translate(100px,50%);/* 水平方向上平移100px,垂直方向上平移元素的50%,即50px */
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

效果演示

  

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: #ccc;
            transform:translateX(100px);/* 水平方向上平移100px*/
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

效果演示

  

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: #ccc;
            transform:translateY(50%);/*垂直方向上平移元素的50%,即50px */
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

演示结果

  

  2.transform-origin  设置元素中心点

     如元素rotate时需要参考一个基点,而origin就是用来设置这个点,若不设置,默认中心点在x和y方向上的50%处。

  3.transform-rotate  设置元素2D旋转

    取值:角度值(deg),可为负值

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: #ccc;
            -webkit-transform-origin:0,0;
            -webkit-transform:rotate(45deg);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

演示结果

  初始状态            设置rotate后的状态

          

3.transform:slace(x,y)  设置元素2D缩放

  取值:可保留一位小数点的整数,可为负值,结果取其绝对值。若只填一个参数,默认y=x。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: #ccc;
            -webkit-transform:scale(1);
            /*-webkit-transform:scale(2);*/    /*放大两倍*/
            /*-webkit-transform:scale(-0.5);*/    /*缩小0.5倍*/
       /*-webkit-transform:scale(1,2)*/  /*x方向不缩放,y方向放大两倍*/
} </style> </head> <body> <div></div> </body> </html>

演示结果

    scale(1)                scale(2)             scale(-0.5)          scale(1,2)

                 

4.transform:skew(x,y)  斜切扭曲

  transform:skewX()

  transform:skewY()

  取值:角度在(deg),与scale一样,可在x,y方向上进行变化,不同的是,若只填一个参数,默认y=0。先上两张原理图,注意角度的起始边和终止边。                      

     skew(10deg) / skewX(10deg)           skew(0,10deg) / skewY(10deg)

                

5.transform:translate3d(x,y,z)  控制元素3D平移

  取值:px,%

二、transition 过渡效果

  1.用法介绍:

    a.定义元素默认样式

    b.定义元素最终样式及触发条件

    c.在默认样式中添加transition属性和方法

  2.transition-porperty  需要过渡的属性

    取值:porperty(属性名) 或 all(全部属性)

  3.transition-duration  过渡时间

    取值:number(s)

  4.transition-timing-function  过渡速度(也称作过渡函数)

    取值:ease            默认值,逐渐变慢

       linear           匀速

       ease-in           加速过渡

       ease-out           减速过渡

         ease-in-out        先加速然后减速

         cubic-bezier(n,n,n,n)   自定义,n=[0,1]

  5.transition-delay  过渡延迟

    取值:number(s),无延时可省略

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: #f00;
            margin:200px;
            transform-origin:0px,0px;
            -webkit-transform:rotate(0deg);    /*以上为设置初始状态*/
            -webkit-transition-property:all;    /*选定全部属性*/
            -webkit-transition-duration:0.8s;    /*过渡时间为0.8s*/
            -webkit-transition-timing-function:linear;   /*匀速过渡*/
            -webkit-transition-delay:0.2s;        /*延迟0.2s后执行*/
        }
        div:hover{        /*设置鼠标经过时触发过渡效果,以下为元素最终状态*/
            width: 200px;
            height: 150px;
            -webkit-transform:rotate(30deg);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

演示结果

 

6.语法缩写:

  transition:property | duration | timing-function | delay;

以上代码可缩写为  eg:  transition:all .8s linear .2;

原文地址:https://www.cnblogs.com/zona/p/5769679.html