zoukankan      html  css  js  c++  java
  • css过渡和2d动画详解及案例

    本文重点:

     1、在2D变化使用过程中,有些需求需要两种或两种以上的变化同时使用,

    值得注意的是尽量把位移变化放在最前面,把其他变化放在最后面,属性值中间用空格隔开;

    因为其他变化放在前面会使位移变化出现很大的误差(切记

    正确写法如下:transform:translate(100px) rotate(90deg);

     2、所有变化都是以元素自身的中心点为变化原点,如有需求需要改变变化原点,请往下继续看;

    过渡

    css3的transition允许css的属性值在一定的时间区间内平滑地过渡。

    这种效果可以在元素任何改变中触发,使元素变化以动画效果展现出来。

    1. transition-property:检索或设置对象中的参与过渡的属性

    2. transition-duration:检索或设置对象过渡的持续时间

    3. transition-delay:检索或设置对象延迟过渡的时间

    4. transition-timing-function:检索或设置对象中过渡的动画类型

    简写:transition:all/具体属性值 运动时间s/ms 延迟时间s/ms 动画类型简写形式(匀速、加速等等)

    2D

    2D变换,是在一个平面对元素进行的操作。
    可以对元素进行水平或者垂直位移、旋转或者拉伸

    2D功能函数

    1、2D位移 translate()

    • 将元素向指定的方向移动,类似于position中的relative(都占据空间)。

    • 水平移动:向右移动translate(tx,0)和向左移动translate(-tx,0);

    • 垂直移动:向上移动translate(0,-ty)和向下移动translate(0,ty);

    • 对角移动:右下角移动translate(tx,ty)、右上角移动translate(tx,-ty)、左上角移动translate(-tx,-ty)和左下角移动translate(-tx,ty)。

    2、2D缩放scale()

    • 让元素根据中心原点对对象进行缩放。默认的值1。值大于0,小于1,使一个元素缩小;值大于1,让元素显得更大。

    • 缩放scale()函数和translate()函数的语法非常相似,他可以接受一个值,也可以同时接受两个值,如果只有一个值时,其第二个值默认与第一个值相等。例如,scale(1,1)元素不会有任何变化,而scale(2,2)让元素沿X轴和Y轴放大两倍。

    • scaleX():相当于scale(sx,1)。表示元素只在X轴(水平方向)缩放元素,其默认值是1。

    • scaleY():相当于scale(1,sy)。表示元素只在Y轴(纵横方向)缩放元素,其默认值是1。

    3、2D旋转rotate()

      旋转rotate()函数通过指定的角度参数对元素根据对象原点指定一个2D旋转。单位为deg,它主要在二维空间内进行操作,接受一个角度值,用来指定旋转的幅度。如果这个值为正值,元素相对原点中心顺时针旋转;如果这个值为负值,元素相对原点中心逆时针旋转。

    rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转
    rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转

    4、2D倾斜skew()

      倾斜skew()函数能够让元素倾斜显示。它可以将一个对象以其中心位置围绕着X轴和Y轴按照一定的角度倾斜。
    一个参数时:表示水平方向的倾斜角度;
    两个参数时:第一个参数表示水平方向的倾斜角度,第二个参数表示垂直方向的倾斜角度

    变形原点的改变方法:

    transform-origin
    transform-origin是变形原点,也就是该元素围绕着那个点变形或旋转,该属性只有在设置了transform属性的时候起作用;

    默认变化的变化原点都在元素的中心点,本案例使变化原点进行了改变,案例使用了

    元素在父元素中下左右居中,具体可访问https://www.cnblogs.com/piaoyi1997/p/12580560.html

    案例效果图如下:

    实现代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            /* 元素在父元素中下左右居中,具体可访问https://www.cnblogs.com/piaoyi1997/p/12580560.html */
            .dom_center{
                position: absolute;
                left: 0;right: 0;
                top: 0;bottom: 0;
                margin: auto;
            }

            .box3{
                 300px;
                height: 200px;
                background-color: sandybrown;
                margin: 100px auto;
                position: relative;
            }
            .box3 .dom3{
                 60px;
                height: 50px;
                transition: 1s;
                background-color: slateblue;
                transform-origin:right top;
            }
            .box3 .dom{
                 100px;
                height: 80px;
                border: #000 solid;
                border- 2px 0 2px 0;
                transition: 3s;
                transform: scaleX(0);
                transform-origin: left center;
            }
            .box3 .dom2{
                 80px;
                height: 100px;
                border: #000 solid;
                border- 0 2px 0 2px ;
                transition: 3s;  
                transform: scaleY(0);
                transform-origin:  center top;
            }
            
            .box3:hover .dom{           
                transform: scaleX(1);          
            }
            .box3:hover .dom2{
                transform: scaleY(1);
            }
            .box3:hover .dom3{            
                transform:translate(100px) rotate(90deg);          
            }
        </style>
    </head>
    <body>
        <div class="box3">
            <div class="dom3"></div>
            <div class="dom dom_center"></div>
            <div class="dom2 dom_center"></div>
        </div>
    </body>
    </html>
     
    如果感觉对自己有帮助,麻烦点一下关注,会一直盒大家分享知识的,谢谢!!!
  • 相关阅读:
    HDFS的工作流程分析
    linux文本分析利器awk
    二叉树遍历
    tomcat 工作原理简析
    徐汉彬:Web系统大规模并发——电商秒杀与抢购
    牛人博客 列表
    消息队列 概念 配合SpringBoot使用Demo
    Redis 实例排除步骤
    Java分布式 一些概念理解
    消息成功失败回调demo
  • 原文地址:https://www.cnblogs.com/piaoyi1997/p/12657925.html
Copyright © 2011-2022 走看看