zoukankan      html  css  js  c++  java
  • 关于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;

  • 相关阅读:
    maven工程目录结构&常用命令
    slf4j 与 log4j2 实战讲解与日志分割
    跟着大神学zookeeper分布式锁实现-----来自Ruthless
    redis分布式锁Redisson扩展
    Redis分布式锁---完美实现
    redis异常Redis:java.util.NoSuchElementException: Unable to validate object at
    boot中 Quartz注入spring管理类失败
    转载一篇必须超级好的JVM配置实战
    uoj#422. 【集训队作业2018】小Z的礼物(MIn-Max容斥+插头dp)
    uoj#420. 【集训队作业2018】矩形(组合数学)
  • 原文地址:https://www.cnblogs.com/zona/p/5769679.html
Copyright © 2011-2022 走看看