移动web - 动画的实现步骤和移动页面的了解

304 阅读4分钟

动画实现步骤

第一种定义 两种状态过程

使用动画的属性 animation: change(动画名称) 3s; 需要添加才能产生播放效果

定义动画的属性 @keyframes :(动画名称) 固定属性代码 两个代码动画名称一致方能生效

.box{
            width: 200px;
            height: 200px;
            background-color: #ccc;
            /* 使用动画:动画名称 动画时长(变化的过程展示时间) */
            animation: change 3s;
        }
        /* 定义动画:取名称 从1到2的变化 */
        @keyframes change {
            from{
                width: 200px;
            }
            to{
                width: 600px;
            }
        }

动画百分比

第二种百分比定义效果

.box{
            width: 200px;
            height: 200px;
            background-color: #ccc;
            animation: change 5s;
        }
        /* 定义动画:200到500*300到800*500 */
        /* 百分比指的是动画总时长的占比 */
        @keyframes change {
            0%{
                width: 200px;
            }
            20%{
                width: 500px;
                height: 300px;
            }
            80%{
                width: 800px;
                height: 500px;
            }
        }

动画复合属性

使用动画:动画名称 动画时长 速度曲线(linear:均速)延迟时间(直接时间加s) 重复次数(数字或infinite代表无限循环)动画方向 执行完毕时的状态;

使用动画:动画名称 动画时长 速度曲线(linear:均速)

animation: change 3s linear;

速度曲线

1、设置 元素变化的时候 均速变化 还是先快后慢 先慢后快

2、均速最常用 linear

3、ease 先慢后快 默认

4、另一种方式:steps(分步数)分步动画 跳跃的速度曲线

animation: change 3s steps(3)

1647488672760.png

使用动画:

动画名称 动画时长 速度曲线 延迟时间(直接时间加s) 重复次数(数字或infinite代表无限循环)

animation: change 3s steps(3) 1s 3;

重复次数(infinite代表无限循环 动画方向:alternate{反方向})这两个比较常用

1、默认值 normal 先正再正 常用

2、alternate 先正再反 常用

3、reverse 先反再正

4、alternate-reverse 先反再正

animation: change 3s steps(3) 1s infinite alternate;

alternate-reverse 先反再正*

animation-direction:alternate-reverse;

执行完毕时的状态

默认值:backwards 停留最初状态 动画停留在结束状态:forwards

/* 执行完毕时的状态要生效不能添加重复属性和动画方向 */
animation: change 3s  1s forwards;

暂停动画 :paused为暂停,通常配合:hover使用

animation-play-state: paused;

默认值 播放:

animation-play-state: running; 基本不用管

.box:hover{
            /* 鼠标移入的时候暂停动画 */
            animation-play-state: paused;
        }

both 可以同时设置backwards 和 forwards 替换这两个词 不常用

复合属性拆分成单个代码的属性

1647151596857.png

逐帧动画 与 多组动画

.box{
            width: 140px;
            height: 140px;
            background-image: url(../day02/01-课堂案例/02-动画/images/bg.png);
            border: 1px solid #000;
            /* 12是精灵图里小人图的个数 */
            animation: move 1s steps(12) infinite,
            /* 逗号隔开可以实现多组动画效果 互不影响 */
                box 5s forwards;
        }
        @keyframes move {
            from{
                background-position: 0 0;
            }
            to{
                /* 1680是精灵小图的宽度 */
                background-position: -1680px 0;
            }
        }
			@keyframes box {
            from{
                transform: translateX(0);
            }
            to{
                transform: translateX(800px);
            }
        }

轮播图

定义动画:位移 ul 左/右侧移动使用 左负右正

ul{
            width: 4800px;
            animation: move 7s linear infinite;
        }
        /* 定义动画:位移 ul 左侧移动使用 x -2400 */
        @keyframes move {
            to{
                transform: translateX(-2400px);
            }
        }
        .box:hover ul{
            animation-play-state: paused;
        }
        .box{
            margin: 100px auto;
            width: 1200px;
            height: 210px;
            border: 5px solid #000;
            overflow: hidden;
        }
        ul li{
            float: left;
            list-style: none;
        }
        img{
            width: 600px;
        }
    </style>
</head>
<body>
    <div class="box">
        <ul>
            <li><img src="../../爱情公寓5英明3440x1440带鱼屏壁纸_彼岸图网.jpg" alt=""></li>
            <li><img src="../../爱情公寓5张伟请坐高清壁纸3440x1440_彼岸图网.jpg" alt=""></li>
            <li><img src="../../黑马开学/王者荣耀金蝉渡世行者4k壁纸_彼岸图网.jpg" alt=""></li>
            <li><img src="../../爱情公寓5张伟专业团队双屏高清壁纸5120x1440_彼岸图网.jpg" alt=""></li>
            <li><img src="../../爱情公寓5英明3440x1440带鱼屏壁纸_彼岸图网.jpg" alt=""></li>
            <li><img src="../../爱情公寓5张伟请坐高清壁纸3440x1440_彼岸图网.jpg" alt=""></li>
            <li><img src="../../黑马开学/王者荣耀金蝉渡世行者4k壁纸_彼岸图网.jpg" alt=""></li>
            <li><img src="../../爱情公寓5张伟专业团队双屏高清壁纸5120x1440_彼岸图网.jpg" alt=""></li>
        </ul>
    </div>
1 静态 html结构:

box 显示 边框 里面 大的div 存放多个小图片 后期移动的时候 只移动装着小图片的盒子就行

2 动态效果 1 inner盒子 从右往左移动

3 无缝滚动 技巧

** 1 两个大盒子**

1 外层盒子 设置 眼看宽度和高度

2 里层盒子 用来存放多张图片(里面要存放多少张图片 设置宽度为多少!! )

2 真实存放的图片张数 比实际的要多

1 多多少 看你一下的外层盒子能装几张 (浮动)

3 设置动画

1 设置内层盒子的位移 等于 真实的那几张图片的位移!

2 设置动画无线滚动!! *-->

<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      .box {
        width: 1440px;
        height: 270px;
        background-color: aqua;
        margin: 200px auto;
        overflow: hidden;
      }
      .inner {
        /* 需要加上三张图片的宽度 */
        width: 4800px;
        height: 270px;

        animation: move 3s linear infinite;
      }

      @keyframes move {
        100% {
          transform: translateX(-3360px);
        }
      }
      img {
        float: left;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="inner">
        <img src="./images/1.jpg" alt="" />
        <img src="./images/2.jpg" alt="" />
        <img src="./images/3.jpg" alt="" />
        <img src="./images/4.jpg" alt="" />
        <img src="./images/5.jpg" alt="" />
        <img src="./images/6.jpg" alt="" />
        <img src="./images/7.jpg" alt="" />

        <!-- 技巧 故意增加前面张三张图片下去 -->
        <img src="./images/1.jpg" alt="" />
        <img src="./images/2.jpg" alt="" />
        <img src="./images/3.jpg" alt="" />
      </div>
    </div>
  </body>
</html>

过渡属性扩展

过渡也有4个属性

1、想要实现过渡的 css属性名 宽width 高 全选(all) transition-property:width (单个属性名的选择) 或 all;

2、过渡的持续时间 transition-duration:3s;

3、过渡的延迟时间 transition-delay:3s;

4、过渡的速度曲线 transition-timing-function: steps(4);

5、复合写法 transition:all 3s steps(4) 2s(延迟);类似动画写法

移动端的屏幕页面

动态加载多倍图 srcset基本很少用

1、一套代码可以自动识别当前的屏幕的清晰度 自动加载对应的清晰度的图片

2、解决方案 srcset 在img里添加

如 三张图片 1倍图 2倍图 3倍图

用逗号隔开

<img srcset="./images/1.jpg 1x, ./images/2.jpg 2x, ./images/3.jpg 3x," alt="">

视口-了解

视口是指手机浏览器内显示页面的区域,一般可以认为视口的宽度等于网页的根标签html的宽度

name="viewport"
content="width=device-width,initial-scale=1.0,maximum-scale=1,minimum/> -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><!--
meta 标签 对网页设置 设置 语言、设置seo 关键字
name 告诉meta标签 要设置什么 地方 viewport 视口   
 
content 设置视口的哪些内容
1 width = device-width 视口的宽度等于屏幕的宽度
2 initial-scale=1.0 设置网页打开的时候 缩放的倍数 1.0没有缩放
有需要要缩放网页!!
3 maximum-scale=1 假如 允许缩放,最大缩放的倍数
1.04 minimum-scale=1 假如 允许缩放,最小缩放的倍数
1.0
5 user-scalable=no 控制是否允许 用户双击 手指 捏合的手势来缩放 网页1 no 不允许

6 工作的用的用法
			1直接使用 vscode 自动生成的即可
			2 自己再写一次	快捷写法 meta:vp+tab
			3 其他公司的网页 视口代码 拷贝过来即可淘宝
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1, user-scalable=no,viewport-fit=cover">京东
<meta name="viewport"content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=8":代码存在一些区别 无所谓 功能都是一样 没有必要去纠结它 直接使用即可!!!