乐趣区

关于css3动画:CSS进阶

CSS_进阶

1. 动画

1) 实现步骤

1. 定义动画帧

      @keyframes 动画名 {
        from {// 开始帧}
        to {// 完结帧}
      }

      @keyframes 动画名 {
        0% {// 开始帧}
        20% { }
        ...
        100% {// 完结帧}
      }

2. 设定动画(贺卡)

      animation-name: move; 
        动画名
      animation-duration: 2s;
        持续时间
      animation-timing-function: linear;
        工夫曲线函数(自由落体,贝塞尔曲线)animation-fill-mode:forwards;
        填充模式,动画完结后保留哪一帧规定
      animation-iteration-count: 2;  
        动画迭代次数 infinite
      animation-direction: alternate-reverse;   
        动画执行的方向 from->to , to->from
      animation-play-state: paused;
        动画状态
      animation-delay: 1s;
        延迟时间
      animation: move 2s 1s 2 linear;
        动画的速写模式 

2) 案例(呼吸灯)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hi</title>
    <style>
        *{
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
        }
        .container{
            width:226px;
            height: 330px;
            background: #343434;
            margin:0 auto ;
        }
        .circles{
            padding: 36px;/* 动画 */
            height: 226px;

            animation-name:wobble;
            animation-duration: 4.4s;   /*9s*/
            animation-timing-function: linear;
            animation-delay: 0s;
            animation-iteration-count: infinite;

        }
        .circles > .outer{
            height: 100%;
            border:5px solid #9b9b9b;
            padding: 10px;/* 动画 */

            border-radius:50%;
            border-radius:50%;


            animation-name:outer_wobble;
            animation-duration: 4.4s;  /*9s*/
            animation-timing-function: linear;
            animation-delay: 0s;
            animation-iteration-count: infinite;
        }
        .circles > .outer > .inner{
            height: 100%;
            border:15px solid #ffffff;

            border-radius:50%;
            border-radius:50%;
        }

        @keyframes outer_wobble {
            20% {padding: 20px;}
            40% {padding:10px;}
            65%{padding:22px;}
            100%{padding: 10px;}
        }

        @keyframes wobble {
            20% {padding: 26px;}
            40% {padding:36px;}
            100%{padding:36px;}
        }

        .text{
            font-size: 22px;
            color: #ffffff;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="circles">
            <!-- 内部圆 -->
            <div class="outer">
                <!-- 外部 -->
                <div class="inner">

                </div>
            </div>
        </div>
        <div class="text">
            HI!
        </div>

    </div>
</body>
</html>

3) 案例(梦幻西游)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> 梦幻西游 </title>
    <link rel="stylesheet" href="../common.css">
    <style>
        html {
            color: #333;
            font:normal 12px '微软雅黑','Microsoft YaHei';
        }
        body,ul,ol,p,h1,h2,h3 {
            margin: 0;
            padding: 0;
        }
        ul,ol {list-style: none;}
        a {
            text-decoration: none;
            color: #333;
        }

        .content {
            width: 950px;
            position: absolute;
            left: 50%;
            margin-left: -475px;
            bottom: 300px;
        }
        .content > ul::after {
            display: block;
            content: "";
            clear: both;
        }
        .content > ul > li {
            float: left;
            width: 200px;
            height: 180px;
            margin-right: 50px;
            overflow: hidden;
        }
        .content > ul > li:last-child {margin-right: 0;}
        .content > ul > li > div {
            width: 1600px;
            height: 180px;

            animation-name: dong;
            animation-duration: 1s;
            animation-timing-function: steps(8);
            animation-iteration-count: infinite;
            /*animation-direction: reverse;*/
        }
        .content > ul > li > div  img {width: 100%;}

        /* 定义动画 */
        @keyframes dong {
            from {margin-left: 0;}
            to {margin-left: -1600px;}
        }

        html,body,.main {height: 100%;}
        .main {
            width: 100%;
            overflow-x: hidden;
        }
        .main > .bg {
            width: 3920px;
            height: 100%;
            margin-left: -1920px;
            background-image: url('./images/bg.jpg');
            background-repeat: repeat-x;

            animation-name: bg;
            animation-duration: 30s;
            animation-timing-function: linear;
            animation-iteration-count: infinite;
        }

        @keyframes bg {
            from {margin-left: -1920px}
            to {margin-left: 0;}
        }
    </style>
</head>
<body>
    <div class="main">
        <div class="bg"></div>
    </div>
    <!-- 屏幕两头 宽 200 * 4 + 50*3 = 950 -->
    <div class="content">
        <ul>
            <li>
                <div><img src="./images/wk.png" alt=""></div>
            </li>
            <li>
                <div><img src="./images/bj.png" alt=""></div>
            </li>
            <li>
                <div><img src="./images/ts.png" alt=""></div>
            </li>
            <li>
                <div><img src="./images/ss.png" alt=""></div>
            </li>
        </ul>
    </div>
</body>
</html>

2. 动画库 animate.css

动画帧、动画设定规定都有第三方实现,咱们间接应用 class 即可

1) 引入动画库

<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.css">

2) 应用

1. 间接调用动画设定类

      <div class="box animate__animated animate__infinite animate__bounce"></div>

2. 援用关键帧

      <style>
        .bounce {animation: flash 10s linear infinite;}
      </style>
      <div class="box bounce"></div>

3. 过渡

过渡是轻量级的动画,过渡中无需定义关键帧,它解决的问题是当属性扭转的时候履行缓缓扭转。个别通过伪类来触发。过渡肯定产生在属性值扭转上(状态发生变化的时候)

  transition-property: width;
    过渡属性,取值能够为多个,多个值通过逗号宰割;关键字:all 所有属性
  transition-duration: 2s;
    过渡持续时间
  transition-delay: 0; 
    过渡延迟时间
  transition-timing-function: linear; 
    工夫曲线函数
  transition:transform,background-color 2s,2s 0s linear;
    速写模式 

4. 变形

transform: 变形函数

  1. 缩放
    scale(2)
  2. 平移
    translate(100px,50px)
  3. 旋转
    rotate(360deg)
  4. 拉伸
    skew(45deg)

5. 媒体查问(响应式布局)



1. 动画题目:

1. 成果要求

(1. 定义:目前两圈的大小为惯例大小
(2. 失常静止轨迹:两圈惯例大小 -> 外圈向外扩充 10px(2000ms)-> 外圈向内回归失常大小(2000ms)-> 内圈向内放大 12px(2500ms) -> 内圈放大至惯例大小(2500ms) -> 循环
(3. 加速运动轨迹:两圈惯例大小 -> 外圈向外扩充 10px(1000ms)-> 外圈向内回归失常大小(1000ms)-> 内圈向内放大 12px(1200ms) -> 内圈放大至惯例大小(1200ms) -> 循环
(4. 加速运动轨迹下,当文字显示为:“我很怄气”时,内圈的色彩变为红色
(5. 加速运动轨迹下,当文字显示为:“我很快乐”时,内圈的色彩变为绿色

2. 第三方库 (职业技能)

(1.iconfont
字体图标库,原理:网络字体 @font-face() font-family
(2.bootstrap
栅格布局(grid layout,原理:flex、float
(3.animate.css
动画库,原理:animation

退出移动版