• CSS(八)-- 变形(过渡、动画、平移、旋转、缩放)


    1.过渡(transition)

    • 通过过渡可以指定一个属性发生变化时的切换方式

    1.1transition-property:指定执行过渡的属性

    • 多个属性使用“,”隔开,如果所有属性都需要过渡,则使用all关键字
    • 大部分属性都支持过渡效果
    • 注意:过渡必须是从一个有效数值向另外一个有效数值过渡

    1.2transition-duration:执行过渡需要的时间

    • 时间单位:s、ms

    1.3transition-timing-function:过得的时序函数

    • ease(默认值):慢速开始,先加速,再减速
    • liner:匀速运动
    • ease-in:加速运动
    • ease-out:减速运动
    • ease-in-out:先加速后减速

    通过贝塞尔曲线指定

    transition-timing-function:cubic-bezier(.25,.1,.25,1)
    

    贝塞尔曲线生成网址:(https://cubic-bezier.com)

    steps()分步执行过渡效果

    • 第一个值:要分步执行的个数
    • 第二个值:
      • end:在时间结束是执行过渡
      • start:在时间开始时执行过渡

    1.4 transition-delay:过渡效果的延迟,等待一段时间后再执行

    transition-delay:2s;
    

    1.5transition:可以同时设置过渡相关的所有属性

    • 只有一个要求,如果要写延迟,则两个时间中第一个是持续时间,第二个是延迟
    tansition:2s(持续时间) margin-left(执行属性) 1s(延迟时间);
    

    2.动画(animation)

    • 动画和过渡类似,都是可以实现一些动态的效果,不同的是过渡需要在某个属性发生变化时才会触发,动画可以自动触发动态效果
    • 设置动画效果必须先要设置一个关键帧,关键帧设置了动画执行每一个步骤

    2.1设置项

    @keyframes

    @keyframes test{
          /*from表示动画的开始位置 也可以使用0% */
          from{
                margin-left:0;
          }
          /*动画结束的位置,也可以使用100%*/
          to{
                margin-left:700px;
          }
    }
    

    animation-name:引用设定好的@keyframes

    animation-name:动画执行时间

    animation-delay:设置动画的延时

    animation-timing-function:设置移动类型(匀速、加速等)

    animation-iteration-count:动画执行的次数

    -infinite:无限执行

    animation-direction:改变执行的方向

    • normal:默认值,每次都是从to向from运行
    • reverse:反向,从to向from运行
    • alternate:从from向to运行 重复执行动画时反向运行(类似于碰撞效果)
    • alternate-reverse:从to到from运行 重复执行动画时反向执行

    animation-play-state:设置动画的执行状态

    可选值

    • running(默认值):动画执行
    • paused:动画暂停
      • 当鼠标移入时动画暂停
    .box1:hover div{
          animation-play-state:paused;
    }
    

    animation-fill-mode:动画的填充模式

    可选值:

    • none(默认值):动画执行完毕回到初始位置
    • forwards:执行完毕后停在终点位置
    • backwards:元素在delay时就会处于from的状态
    • both:具备forwards和backwards的特点

    animation:简写版本

    和transition一样,除了持续时间必须在延迟时间前外,其他的属性都没有顺序要求

    示例

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .box1{
                 100px;
                height: 100px;
                margin: 0 auto;
                background-image: url(./image/trump_run.png);
                animation: run 1s steps(6) infinite;
            }
    
            /*创建关键帧  */
            @keyframes run{
                form{
                    background-position: 0 0;
                }
                to{
                    background-position:-600px 0 ;
                }
            }
        </style>
    </head>
    <body>
        <div class="box1">
    
        </div>
    </body>
    </html>
    

    3.变形平移

    变形就是指通过CSS来改变元素的形状或位置,变形不会影响到页面的布局
    ,transform用来设置元素的变形效果

    3.1平移

    translateX() 沿着x轴方向平移

    transform:translateX(100px);
    transform:translateX(50%);//平移元素百分比是相对于自身计算的
    

    translateY() 沿着y轴方向平移

    让元素居中

    • 水平居中
    .box{
          background-color:black;
          position:absolute;
          left:50%;
          transform:translateX(-50%);
    }
    
    • 垂直居中
    .box{
          background-color:black;
          position:absolute;
          top:50%;
          transform:translateY(-50%);
    }
    

    3.2translateZ() 沿着z轴方向平移

    • 正常情况就是调整元素和人眼之间的距离
      距离越大,元素离人越近

    • z轴平移属于立体效果(近大远小),默认情况下网页是不支持透视,如果需要看见效果必须要设置网页的视图

    • 视距:perspective

    html:perspective:800px;
    .box1{
          200px;
          height:200px;
          background-color:#bfa;
          margin:20px auto;
          transtion:2s;
    }
    body:hover .box1{
          transform:translateZ(200px);
    }
    

    4.旋转

    • 通过旋转可以使元素沿着x、y或z轴旋转指定的角度
      rotateX()
      rotateY()
      rotateZ()
    transform:rotateZ(180deg)
    

    可选值:deg,turn

    • 30deg:30度
    • .5turn:半圈
    transform:rotateZ(.5turn)
    

    backface-visibility:设置是否显示元素的背面

    • visible:显示;
    • hidden:不显示;

    5.设计时钟

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
    
            .sec{
                height: 50%;
                4px;
                background-color: red;
                margin:0 auto;
                
            }
    
            .sec-wrapper{
                position:absolute;
                height:100%;
                100%;
                top:0;
                left:0;
                bottom:0;
                right:0;
                margin:auto;
                background-color:none;
                animation: run 60s infinite;
    
            }
            .clock{
                 500px;
                height: 500px;
                margin:0 auto;
                margin-top:100px;
                border-radius:50%;
                border:10px solid black;
                position: relative;
                
            }
            .hour-wrapper{
                position:absolute;
                height:55%;
                55%;
                top:0;
                left:0;
                bottom:0;
                right:0;
                margin:auto;
                background-color:none;
                animation: run 43200s infinite;
            }
            .hour{
                height: 50%;
                4px;
                background-color: black;
                margin:0 auto;
                z-index: 3;
              
            }
            .min-wrapper{
                position:absolute;
                height:75%;
                60%;
                top:0;
                left:0;
                bottom:0;
                right:0;
                margin:auto;
                background-color:none;
                animation:run 3600s infinite;
            }
            .min{
                height: 50%;
                4px;
                background-color: rgb(28, 224, 77);
                margin:0 auto;
                z-index: 2;
                
            }
    
            /* 旋转的关键帧 */
            @keyframes run{
                from{
                    transform:rotateZ(0);
                }
                to{
                    transform:rotateZ(360deg);
                }
            }
    
        </style>
    </head>
    <body>
        <div class="clock">
            <div class="sec-wrapper">
                <div class="sec"></div>
            </div>
            <div class="min-wrapper">
                <div class="min"></div>
            </div>
            <div class="hour-wrapper">
                <div class="hour"></div>
            </div>
        </div>
    </body>
    </html>
    

    6.缩放

    • 对元素进行缩放
      scaleX():水平方向
      scaleY():垂直方向
      scale:两方向同时

    7.设置变形的原点,默认值center

    transform-origin:20px 20px;
    解释:例如缩放,变形原点是中心,当设置为transform-origin:0px 0px;后变形原点就变为左上角
    那么缩放就只能在右和下方缩放

  • 相关阅读:
    Superwebsocket 模拟微信聊天室
    python杂记-6(time&datetime模块)
    python杂记-5(装饰器)
    python杂记-4(迭代器&生成器)
    python杂记-3(购买商品)
    python杂记-2(python之文件)
    python杂记-1(os模块)
    淘宝链接中的spm参数
    分布式Web服务器架构(转)
    asp.net网站增加虚拟目录,用来访问网站图片。
  • 原文地址:https://www.cnblogs.com/psyduck/p/14342155.html
Copyright © 2020-2023  润新知