CSS3 实现 60 FPS (60帧)动画效果

简介: CSS3 实现 60 FPS (60帧)动画效果

目录


FPS 全称:


常规操作


使用【will-change: transform;】


FPS 全称:

Frames per second,即 【每秒帧数】 的意思。 通常来讲,当动画的每秒帧数低于 12 (即 12 FPS 以下)时,我们的大脑就能快速从动画中区分出一些静止的图片,所以此时的动画并不是无缝动画。


一旦播放速率(每秒帧数)达到 16-24 FPS 时,大脑就会认为这些画面是连续移动的场景,看起来就是影片的效果了(大部分数字电影拍摄是每秒 24 帧)。 所以,我们可以大致了解到:FPS 越高,画面越流畅!

41.gif


常规操作

“CSS3 动画,有手就行!”


但是效果是否卡顿呢?

<!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>CSS60_FPS测试</title>
</head>
<body>
    <div class="layout">
        <div class="app-menu">菜单</div>
        <div class="header">
            <div class="menu-icon">某CMS内容管理系统</div>
            <hr/>
            <div class="menu-context">内容</div>
        </div>
    </div>
    <style>
        * {
            margin: 0px;
            padding: 0px;
            font-size: 2rem;
        }
        .app-menu {
            background-color: skyblue;
            width: 5px;
            overflow: hidden;
            height: 100vh;
            transition: all 200ms;
        }
        .app-menu:hover {
            width: 10%;
            transition: all 200ms;
        }
        .app-menu,
        .header {
            float: left;
        }
        .header {
            height: 100vh;
        }
    </style>
</body>
</html>

从性能里看,还是不太流畅。

42.png



其实不够平滑,那么就稍微装饰一下。


使用【will-change: transform;】

CSS属性will-change为web开发者提供了一种告知浏览器该元素会有哪些变化的方法,这样浏览器可以在元素属性真正发生变化之前提前做好对应的优化准备工作。这种优化可以将一部分复杂的计算工作提前准备好,使页面的反应更为快速灵敏。

<!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>CSS60_FPS测试</title>
</head>
<body>
    <div class="layout">
        <div class="app-menu">菜单</div>
        <div class="header">
            <div class="menu-icon">某CMS内容管理系统</div>
            <hr/>
            <div class="menu-context">内容</div>
        </div>
    </div>
    <style>
        * {
            margin: 0px;
            padding: 0px;
            font-size: 2rem;
        }
        .app-menu {
            background-color: skyblue;
            width: 5px;
            overflow: hidden;
            height: 100vh;
            transition: all 300ms linear;
            will-change: transform;
        }
        .app-menu:hover {
            width: 10%;
            transition: all 200ms linear;
            will-change: transform;
        }
        .app-menu,
        .header {
            float: left;
        }
        .header {
            height: 100vh;
        }
    </style>
</body>
</html>


43.png

43.png


提前告诉CSS有变化,效果会更好。

希望能对大家有所帮助。


相关文章
|
2月前
|
前端开发 内存技术
CSS动画示例(上一篇是CSS过渡…)
CSS动画示例(上一篇是CSS过渡…)
25 1
|
2月前
|
资源调度 前端开发 CDN
纯css动画库animate.css的用法
纯css动画库animate.css的用法
50 0
|
11天前
|
前端开发 UED
【专栏:CSS 进阶篇】CSS3 新特性:过渡、动画与变形
【4月更文挑战第30天】CSS3的过渡、动画和变形三大特性为网页设计注入活力,创造生动丰富的用户体验。过渡提供平滑效果,常用于按钮点击等;动画实现复杂动态效果,适用于滚动字幕等;变形允许元素几何变换,如旋转和缩放。实际应用包括动态导航菜单、图片轮播和加载动画。然而,需注意浏览器兼容性、性能优化和设计平衡。掌握这些特性,将为网页设计带来更多创新可能。
|
12天前
|
XML 前端开发 JavaScript
CSS中动画、过渡、定位、浮动的作用
CSS中动画、过渡、定位、浮动的作用
|
13天前
|
前端开发 UED 开发者
【专栏】探讨了CSS3动画卡顿的原因,包括复杂动画效果、过多元素参与、低效代码结构和硬件资源限制,并提出优化措施
【4月更文挑战第29天】本文探讨了CSS3动画卡顿的原因,包括复杂动画效果、过多元素参与、低效代码结构和硬件资源限制,并提出优化措施:简化动画路径、控制元素数量、优化代码结构、利用硬件加速及性能监测。通过实际案例展示了优化效果,强调了性能优化对提升用户体验的重要性。在开发中,应持续关注并优化动画性能,以适应网页应用的需求。
|
16天前
|
前端开发 JavaScript UED
绚丽多彩的网页世界:深入探讨CSS动画的艺术与技巧
绚丽多彩的网页世界:深入探讨CSS动画的艺术与技巧
21 3
|
19天前
|
前端开发 JavaScript 容器
JavaScript、CSS像素动画特效代码
此示例创建一个带有像素粒子的容器,每隔300毫秒就会动态添加一个新的像素粒子,然后通过CSS的关键帧动画(`@keyframes`)使它们产生上升和逐渐消失的动画效果。你可以根据需要修改像素粒子的颜色、大小、动画效果和创建速度。
14 0
|
23天前
|
前端开发 JavaScript UED
《CSS 简易速速上手小册》第5章:CSS 动画与过渡(2024 最新版)
《CSS 简易速速上手小册》第5章:CSS 动画与过渡(2024 最新版)
29 1
|
27天前
|
编解码 前端开发 iOS开发
前端开发入门笔记(八)CSS3属性详解:动画详解+Flex布局图文详解+Web字体
前端开发入门笔记(八)CSS3属性详解:动画详解+Flex布局图文详解+Web字体
61 1
|
1月前
|
前端开发
css3动画
css3动画
21 0