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