• 30分钟玩转css3动画, transition,animation


    其实css3动画是就是2种实现,一种是transition,另一种就是animation。transition实现的话就是只能定制开始帧,和结束2帧;而animation实现的话可以写很多关键帧。
    没有前戏,直进主题。

    transition

    包含4个值,例如:-webkit-transition:all .5s ease 1s;
     分别顺序是(m代表必须): 变换的属性(m)、变换过渡的时间(m)、变换的速率、变换延时执行的时间

    来个小demo:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <meta charset="utf-8">
        <style>
            .transition {
                width:30px;
                height: 30px;
                line-height: 30px;
                border-radius: 50%;
                text-align: center;
                display: inline-block;
                background:lightblue;
                -webkit-transition:all .5s ease;
                transition:all .5s ease;
                color:#fff;
            }
            .transition:hover {
                -webkit-transform:rotate(360deg);
                transform:rotate(360deg);
            }
        </style>
    </head>
    <body>
        <div class="transition">×</div>
    </body>
    </html>

    应用例子:
    http://skyweaver213.github.io/slide/widget/slide2/slide.html
    http://skyweaver213.github.io/slide/widget/slide3/slide.html

    animation:

    就是一个动画对应一个keyframes,然后一个keyframes 里可以有N多个关键帧。
    例如一个keyframes里我们可以这样写:
    @-webkit-keyframes go {
        0%, 100% {
            -webkit-transform: translateX(0);
        }
        50% {
            -webkit-transform: translateX(500px);
        }
    }

    然后我们需要在应用这个keyframes的元素上写一个animation,
    例如:-webkit-animation:go 2.5s ease infinite 0;  
    参数顺序分别是(m代表必须):动画名字(m)、执行的时间(m)、过渡的速率、执行多小次、延迟执行的时间

    小demo:
    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <style>
            .animation {
                width: 100px;
                height: 100px;
                display: block;
                background: pink;
                -webkit-animation: go 2.5s infinite;
                /*-webkit-animation: go 2.5s cubic-bezier(.25, -0.25, .75, 1.25) infinite;*/
            }
    
            @-webkit-keyframes go {
                0%, 100% {
                    -webkit-transform: translateX(0);
                }
                50% {
                    -webkit-transform: translateX(500px);
                }
            }
        </style>
    </head>
    <body>
    
    <div class="animation"></div>
    
    </body>
    </html>

    应用deom:loading状态、三条线变箭头。
    http://skyweaver213.github.io/slide/widget/slide1/slide.html

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <style>
            .loading {
                position: relative;
                width: 40px;
                height: 40px;
                margin: 40px auto;
                -webkit-transform:rotate(165deg);
            }
            .loading:before, .loading:after {
                content: '';
                position: absolute;
                width: 8px;
                height: 8px;
                top: 50%;
                left: 50%;
                display: inline-block;
                border-radius: 4px;
                -webkit-transform: translate(-50%, -50%);
            }
            .loading:before {
                -webkit-animation:before 2s infinite;
            }
            .loading:after {
                -webkit-animation:after 2s infinite;
            }
    
            @-webkit-keyframes before {
                0% {
                    width: 8px;
                    box-shadow: 16px -8px rgba(225, 20, 98, 0.75), -16px 8px rgba(111, 202, 220, 0.75);
                }
    
                35% {
                    width: 40px;
                    box-shadow: 0 -8px rgba(225, 20, 98, 0.75), 0 8px rgba(111, 202, 220, 0.75);
                }
    
                70% {
                    width: 8px;
                    box-shadow: -16px -8px rgba(225, 20, 98, 0.75), 16px 8px rgba(111, 202, 220, 0.75);
                }
    
                100% {
                    box-shadow: 16px -8px rgba(225, 20, 98, 0.75), -16px 8px rgba(111, 202, 220, 0.75);
                }
            }
    
            @-webkit-keyframes after {
                0% {
                    height: 8px;
                    box-shadow: 8px 16px rgba(61, 184, 143, 0.75), -8px -16px rgba(233, 169, 32, 0.75);
                }
    
                35% {
                    height: 40px;
                    box-shadow:8px 0 rgba(61, 184, 143, 0.75),-8px 0 rgba(233, 169, 32, 0.75);
                }
    
                70% {
                    height: 8px;
                    box-shadow:  8px -16px rgba(61, 184, 143, 0.75), -8px 16px rgba(233, 169, 32, 0.75);
                }
    
                100% {
                    box-shadow:  8px 16px rgba(61, 184, 143, 0.75),  -8px -16px rgba(233, 169, 32, 0.75);
                }
            }
    
        </style>
    </head>
    <body>
        <div class="loading"></div>
    </body>
    </html>


    变换成箭头:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <style>
            * {
                margin:0;
                padding:0;
            }
            .arrow_div {
                width: 100px;
                height: 100px;
                background: #000;
                position: relative;
            }
            .arrow {
                width: 33px;
                height: 4px;
                display: inline-block;
                background: #fff;
                position: absolute;
                left:0;
                right:0;
            }
    
            .arrow_body {
                margin: auto;
                top:40px;
                -webkit-animation: 2s linear body_kf infinite;
            }
    
            @-webkit-keyframes body_kf {
                0% {
    
                }
                30%, 50% {
                    -webkit-transform: rotate(180deg);
                }
                80%, 100% {
                    -webkit-transform: rotate(360deg);
                }
    
    
            }
    
            .sleft {
                width: 33px;
                height: 33px;
                border: transparent;
                position: absolute;
                top: 25px;
                margin: 0 auto;
                left: 0;
                right: 0;
                -webkit-animation: 2s linear sleft_kf infinite;
            }
            .sleft:before {
                content: '';
                width: 33px;
                height: 4px;
                display: inline-block;
                background: #fff;
                top: 0;
                position: absolute;
                -webkit-animation: 2s linear sleft_before_kf infinite;
            }
            @-webkit-keyframes sleft_kf {
                0% {}
                30%, 50% {
                    -webkit-transform: rotate(222deg);
                }
                80%,100% {
                    -webkit-transform: rotate(360deg);
                }
            }
            @-webkit-keyframes sleft_before_kf {
                0%, 100%{}
                20% {
                    width: 28px;
                    top: 1px;
                    left: 3px;
                }
                25% {
                    width: 26px;
                    top: 2px;
                    left: 6px;
                }
                30%, 40%, 50% {
                    width: 22px;
                    top: 3px;
                    left: 8px;
                }
                80% {
                    width: 33px;
                    top:0;
                    left:0;
                }
            }
            .sright {
                width: 33px;
                height: 33px;
                border: transparent;
                position: absolute;
                margin: 0 auto;
                left: 0;
                right: 0;
                top: 25px;
                position: absolute;
                -webkit-animation: 2s linear sright_kf infinite;
    
            }
    
            .sright:before {
                content: '';
                width: 33px;
                height: 4px;
                display: inline-block;
                background: #fff;
                bottom: 0;
                position: absolute;
                -webkit-animation: 2s linear sright_before_kf infinite;
            }
            @-webkit-keyframes sright_kf {
                0% {}
                30%, 50% {
                    -webkit-transform: rotate(135deg);
                }
                80%,100% {
                    -webkit-transform: rotate(360deg);
                }
            }
            @-webkit-keyframes sright_before_kf {
                0%,100% {}
                20% {
                    width: 28px;
                    bottom: 1px;
                    right: 1px;
                }
                25% {
                    width: 25px;
                    bottom: 2px;
                    right: 2px;
                }
                30%, 40%, 50% {
                    width: 22px;
                    bottom: 3px;
                    right: 3px;
                }
    
                80% {
                    width: 33px;
                    bottom: 0;
                    right:0;
                }
            }
    
        </style>
    </head>
    <body>
        <div class="arrow_div">
            <div class="sleft"></div>
            <i class="arrow arrow_body"></i>
            <div class="sright"></div>
        </div>
    </body>
    </html>




  • 相关阅读:
    正确使用SqlConnection对象,兼谈数据库连接池
    简单设计实现基于Forms认证的注册登录等用户基础服务
    简单利用Memcached进行缓存层设计
    殊途同归,ado.net快速实现MySql的CRUD
    【数据库设计】“Max加一”生成主键的注意点
    利用FastReflectionLib快速实现对象克隆
    容易遗忘的一些小代码之 Cross apply and Outer apply
    OBJECT_ID 有哪些种类
    BIWORK 分区表阅读与实践笔记
    容易遗忘的一些小代码之 Merge Operation and Output Clause
  • 原文地址:https://www.cnblogs.com/skyweaver/p/4351789.html
Copyright © 2020-2023  润新知