zoukankan      html  css  js  c++  java
  • CSS3 动画animation 过渡 transition 2D转换transform:translate (互相可以搭配使用-效果更炫酷)

     

    动画

    CSS3,我们可以创建动画,它可以取代许多网页动画图像,Flash 动画,和 Javascripts。

    CSS3 @keyframes 规则

    要创建CSS3动画,你将不得不了解@keyframes规则。

    @keyframes规则是用来创建动画。 @keyframes规则内指定一个 CSS样式和动画将逐步从目前的样式更改为新的样式。

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            #animated_div {
                animation: animated_div 5s infinite;
                -moz-animation: animated_div 5s infinite;
                -webkit-animation: animated_div 5s infinite;
                height: 50px;
                 100px;
                position: fixed;
            }
            @keyframes animated_div {
                0% {
                    left: 0px;
                }
                20% {
                    left: 50px;
                    background-color: green;
                }
                40% {
                    left: 140px;
                    background-color: red;
                }
                60% {
                    left: 280px;
                    background-color: yellow;
                }
                80% {
                    left: 425px;
                    background-color: blue;
                }
                100% {
                    left: 0px;
                    background-color: pink;
                }
            }
        </style>
    </head>
    <body>
        <div id="animated_div"></div>
        <script>
            /* 
            
            注意:Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。
            Chrome 和 Safari 需要前缀 -webkit-。
    
            常用属性
            属性	描述	CSS
            @keyframes	规定动画。	3
            animation	所有动画属性的简写属性,除了 animation-play-state 属性。	3
            animation-name	规定 @keyframes 动画的名称。	3
            animation-duration	规定动画完成一个周期所花费的秒或毫秒。默认是 0。	3
            animation-timing-function	规定动画的速度曲线。默认是 “ease”。	3
            animation-delay	规定动画何时开始。默认是 0。	3
            animation-iteration-count	规定动画被播放的次数。默认是 1。	3
            animation-direction	规定动画是否在下一周期逆向地播放。默认是 “normal”。	3
            animation-play-state	规定动画是否正在运行或暂停。默认是 “running”。	3
    
             */
        </script>
    </body>
    </html>
    

      

    过渡效果

    CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。

    尽管 CSS3 过渡效果是足够的过渡的一个元素,但是 text-transform 属性可以提高 CSS3 过渡效果的风格。

    主要有四个属性的CSS3转换效果,已被描述如下:

    • transition-property
    • transition-duration
    • transition-timing-function
    • transition-delay

    https://www.bookstack.cn/read/css3-tutorial/docs-Transitions%20Effect.md

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>过渡效果 | www.waylau.com</title>
        <meta name="description" content="过渡效果">
        <meta name="author" content="Way Lau, www.waylau.com"/>
        <meta name="viewport" content="width=device-width">
        <link rel="shortcut icon" href="/favicon.ico">
    
        <style>
            .example {
                 100px;
                height: 100px;
                background: red;
                transition-property: width;
                transition-duration: 1s;
                /* inear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0) */
                transition-timing-function: linear;
                /* 规定过渡效果何时开始。默认是 0。 */
                transition-delay: 2s;
                /* Safari */
                -webkit-transition-property: width;
                -webkit-transition-duration: 1s;
                -webkit-transition-timing-function: linear;
                -webkit-transition-delay: 2s;
            }
    
            .example:hover {
                 200px;
            }
    
            #example {
                position: relative;
                 530px;
                height: 530px;
                margin: 0 auto 10px;
                padding: 10px;
            }
    
            .childbox {
                font-size: 12px;
                position: relative;
                 60px;
                height: 60px;
                margin-bottom: 10px;
                background-color: #ccc;
            }
    
            .childbox p {
                text-align: center;
                padding-top: 10px;
            }
    
            #ease.childbox {
                -webkit-transition: all 4s ease;
                -moz-transition: all 4s ease;
                -o-transition: all 4s ease;
                transition: all 4s ease;
                border: 1px solid #ff0000;
            }
    
            #ease_in.childbox {
                -webkit-transition: all 4s ease-in;
                -moz-transition: all 4s ease-in;
                -o-transition: all 4s ease-in;
                transition: all 4s ease-in;
                border: 1px solid #00ffff;
            }
    
            #ease_out.childbox {
                -webkit-transition: all 4s ease-out;
                -moz-transition: all 4s ease-out;
                -o-transition: all 4s ease-out;
                transition: all 4s ease-out;
                border: 1px solid #f5f5f5;
            }
    
            #ease_in_out.childbox {
                -webkit-transition: all 4s ease-in-out;
                -moz-transition: all 4s ease-in-out;
                -o-transition: all 4s ease-in-out;
                transition: all 4s ease-in-out;
                border: 1px solid #f209f3;
            }
    
            #linear.childbox {
                -webkit-transition: all 4s linear;
                -moz-transition: all 4s linear;
                -o-transition: all 4s linear;
                transition: all 4s linear;
                border: 1px solid #ddddff;
            }
    
            #custom.childbox {
                -webkit-transition: all 4s cubic-bezier(1.000, 0.835, 0.000, 0.945);
                -moz-transition: all 4s cubic-bezier(1.000, 0.835, 0.000, 0.945);
                -o-transition: all 4s cubic-bezier(1.000, 0.835, 0.000, 0.945);
                transition: all 4s cubic-bezier(1.000, 0.835, 0.000, 0.945);
                border: 1px solid #cfdf44;
            }
    
            #negative.childbox {
                -webkit-transition: all 4s cubic-bezier(1.000, -0.530, 0.405, 1.425);
                -moz-transition: all 4s cubic-bezier(1.000, -0.530, 0.405, 1.425);
                -o-transition: all 4s cubic-bezier(1.000, -0.530, 0.405, 1.425);
                transition: all 4s cubic-bezier(1.000, -0.530, 0.405, 1.425);
                border: 1px solid #000;
            }
    
            #steps-start.childbox {
                -webkit-transition: all 4s steps(4, start);
                -moz-transition: all 4s steps(4, start);
                -o-transition: all 4s steps(4, start);
                transition: all 4s steps(4, start);
                border: 1px solid #ff0;
            }
    
            #steps-end.childbox {
                -webkit-transition: all 4s steps(4, end);
                -moz-transition: all 4s steps(4, end);
                -o-transition: all 4s steps(4, end);
                transition: all 4s steps(4, end);
                border: 1px solid #0f0;
            }
    
            #example:hover .childbox, #example.hover_effect .childbox {
                -webkit-border-radius: 30px;
                -moz-border-radius: 30px;
                border-radius: 30px;
                -webkit-transform: rotate(720deg);
                -moz-transform: rotate(720deg);
                -o-transform: rotate(720deg);
                -ms-transform: rotate(720deg);
                transform: rotate(720deg);
                margin-left: 420px;
                background-color: #fff;
            }
    
        </style>
    
    </head>
    <body>
    <p>鼠标移动到 div 元素上,查看过渡效果。</p>
    
    <p><b>注意:</b> 过渡效果需要等待两秒后才开始。</p>
    
    <div class="example"></div>
    
    <p>Hover on object to see it in action</p>
    
    <div id="example">
        <div id="ease" class="childbox"><p>CSS3</p></div>
        <div id="ease_in" class="childbox"><p>CSS3</p></div>
        <div id="ease_out" class="childbox"><p>CSS3</p></div>
        <div id="ease_in_out" class="childbox"><p>CSS3</p></div>
        <div id="linear" class="childbox"><p>CSS3</p></div>
        <div id="custom" class="childbox"><p>CSS3</p></div>
        <div id="negative" class="childbox"><p>CSS3</p></div>
        <div id="steps-start" class="childbox"><p>CSS3</p></div>
        <div id="steps-end" class="childbox"><p>CSS3</p></div>
    </div>
    
    </body>
    </html>
    

      

    2D 转换

    CSS3 2D转换,我们可以斜拉(skew),缩放(scale),旋转(rotate)以及位移(translate)元素。

    translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动

    rotate()方法,在一个给定度数沿着元素中心顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。

    scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:

    skew()方法,该元素会根据横向(X轴)和垂直(Y轴)线参数给定角度:

    matrix()方法和2D变换方法合并成一个。

    matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能。

    1. .matrix
    2. {
    3. transform:matrix(0.866,0.5,-0.5,0.866,0,0);
    4. -ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */
    5. -webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
    6. }
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>2D translate | www.waylau.com</title>
        <meta name="description" content="2D translate">
        <meta name="author" content="Way Lau, www.waylau.com"/>
        <meta name="viewport" content="width=device-width">
        <link rel="shortcut icon" href="/favicon.ico">
    
        <style>
            div {
                float:left;
                 100px;
                height: 75px;
                background-color: red;
                border: 1px solid black;
            }
    
            .translate {
                transform: translate(50px, 100px);
                -ms-transform: translate(50px, 100px); /* IE 9 */
                -webkit-transform: translate(50px, 100px); /* Safari and Chrome */
            }
    
            .rotate
            {
                transform:rotate(30deg);
                -ms-transform:rotate(30deg); /* IE 9 */
                -webkit-transform:rotate(30deg); /* Safari and Chrome */
            }
    
            .scale
            {
                transform: scale(2,4);
                -ms-transform: scale(2,4); /* IE 9 */
                -webkit-transform: scale(2,4); /* Safari and Chrome */
            }
    
            .skew
            {
                transform:skew(30deg,20deg);
                -ms-transform:skew(30deg,20deg); /* IE 9 */
                -webkit-transform:skew(30deg,20deg); /* Safari and Chrome */
            }
    
            .matrix
            {
                transform:matrix(0.866,0.5,-0.5,0.866,0,0);
                -ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */
                -webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
            }
        </style>
    </head>
    <body>
    
    <div>This is a DIV element.</div>
    
    <div class="translate">This is a translate DIV element.</div>
    
    <div class="rotate">Hello. This is a rotate DIV element.</div>
    
    <div class="scale">Hello. This is a scale DIV element.</div>
    
    <div class="skew">Hello. This is a skew DIV element.</div>
    
    <div class="matrix">Hello. This is a matrix DIV element.</div>
    </body>
    </html>
    

      

    transition基础和写法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .box {
                 100px;
                height: 100px;
                background: #000;
            }
            .demo-1 {
                /* // sass写法 */
                /* &:hover{ 
    
                } */
                /* transition: width 1s linear 0s;  */
                /* transition: width 1s ease;  */
                transition: transform 1s ease-out;
            }
            /* 相当于 */
            .demo-1:hover {
                /*  500px; */
                /* 旋转45度角 */
                transform: rotate(45deg);
            }
        </style>
    </head>
    <body>
        <div class="box demo-1">
        </div>
        <script>
            /* 
            Transition基础和写法
            --属性名称(property)
            --过度时间(duration)延迟时间(delay)
            --时间函数(timing-function)
            
            */
            /* 
            实用小帖
            1.display不能和transition一起使用
            2.transition后面尽量不要跟all
            3.常见闪动,我们可以perspective和backface-visibility
    
            
             */
        </script>
    </body>
    </html>
    
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    Codeforces Round #571 (Div. 2)-D. Vus the Cossack and Numbers
  • 原文地址:https://www.cnblogs.com/fdxjava/p/14452368.html
Copyright © 2011-2022 走看看