当前位置: 首页 > news >正文

CSS浅谈动画性能

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 目的
  • 一、举个栗子
  • 二、性能分析
    • 1.从图层分析
    • 2.性能分析
  • 总结


目的

为了探究使用动画时,『transform』和『width、height、margin等』的差异


一、举个栗子

示例代码:使用width、height & 使用transform的scale缩放

<template><div class="container"><div class="content"><div :class="['box', { 'isCurrent': item === current }]" v-for="item in 10">{{ item }}</div></div><div class="content"><div :class="['box', { 'isBCurrent': item === bCurrent }]" v-for="item in 10">{{ item }}</div></div><div class="btn-box"><button @click="toScroll">宽高启动</button><button @click="toBScroll" style="margin:0 10px;">缩放启动</button></div></div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
let current = ref(0)
const toScroll = () => {let timer = setIntervalÏ(() => {if (current.value < 11) {current.value++} else {clearInterval(timer)current.value = 0}}, 500)
}let bCurrent = ref(0)
const toBScroll = () => {let timer = setInterval(() => {if (bCurrent.value < 11) {bCurrent.value++} else {clearInterval(timer)bCurrent.value = 0}}, 500)
}</script>
<style lang="scss">
.container {.content {display: flex;justify-content: center;align-items: center;height: 100px;.box {display: flex;justify-content: center;align-items: center;width: 50px;height: 50px;margin: 50px;}.isCurrent {width: 100px;height: 100px;transition: all 10s ease;background-color: red;}.isBCurrent {transform: scale(2);transition: all 10s ease;background-color: blue;}}.btn-box {display: flex;justify-content: flex-end;}
}
</style>

二、性能分析

1.从图层分析

下面是从图层的绘制次数可清楚看到区别:
在这里插入图片描述
在这里插入图片描述
从图层的角度来看,使用CSS的transition属性来改变元素的宽高与直接改变元素的宽高(不使用transition)有以下区别:

  1. 图层动画与重绘:
    ○ 使用transition的动画效果可以触发硬件加速(在支持的浏览器上),将动画过程中的元素提升到一个单独的复合图层(compositing layer)。这意味着浏览器可以使用GPU加速动画的渲染,从而提高性能。
    ○ 直接改变宽高,尤其是在没有使用transition的情况下,可能会导致频繁的重绘(repaint)和重排(reflow)。每次元素的尺寸改变,浏览器都必须重新计算元素的几何位置和其余页面布局,然后重新绘制影响的部分,这可能导致性能问题。
  2. 渲染管线:
    ○ 使用transition时,浏览器可以优化渲染管线,预先知道会有一个持续的变化,因此可以更好地调度资源和时间。
    ○ 没有transition的直接宽高调整,则是立即生效的,浏览器需要即时处理这些变更,没有过渡效果,可能导致用户体验不够平滑。
  3. 图层创建与管理:
    ○ transition动画在进行时,如果触发了图层的创建,那么在动画结束后,浏览器可能会将该图层合并回主图层以节省资源,这个过程是自动且对用户透明的。
    ○ 直接改变宽高,不涉及图层的额外管理,也就没有额外的图层优化机会。
  4. 渲染后的页面复杂性:
    ○ 使用transition可能会临时增加页面的复杂性,因为它添加了动态变化的图层。但这通常是短暂的,并且在动画结束后,页面可能会恢复到较少的图层。
    ○ 直接改变宽高对页面的图层复杂性影响较小,因为它不会引入额外的动态变化。

2.性能分析

性能分析总耗时:

性能比较
在这里插入图片描述

总结

优先使用transform,而不是使用width&height

推荐文章: https://mp.weixin.qq.com/s?__biz=Mzk0NTI2NDgxNQ==&mid=2247484939&idx=1&sn=229467c549cec5e3980671f488a4d89e&chksm=c31947cbf46ecedd13f930b44e9bc2a25ce706a8d30fce56c54584598015640338a6e075b8ff#rd

相关文章:

CSS浅谈动画性能

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目的一、举个栗子二、性能分析1.从图层分析2.性能分析 总结 目的 为了探究使用动画时&#xff0c;『transform』和『width、height、margin等』的差异 一、举个栗子…...

万能的视频格式播放器

今天博主给大家带来一款“万能”的视频播放器——VLC Media Player&#xff0c;支持的文件格式非常多&#xff0c;大家快来一起看看吧&#xff01; VLC Media Player 是一款可播放大多数格式&#xff0c;而无需安装编解码器包的媒体播放器。可以播放 MPEG-1、MPEG-2、MPEG-4、D…...

设计模式---第五篇

系列文章目录 文章目录 系列文章目录前言一、知道观察者模式吗?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、知道观察者模式吗? 答:观察者模式是定义对…...

.NET8构建统计Extreme Optimization Numerical Libraries

为 .NET 8 构建统计应用程序 Extreme Optimization Numerical Libraries for .NET V8.1.22 添加了对 .NET 8 的支持&#xff0c;使您可以使用最新版本的 Microsoft 平台。 Extreme Optimization Numerical Libraries for .NET 是通用数学和统计类的集合&#xff0c;为技术和统计…...

07-原型模式-C语言实现

原型模式&#xff1a; Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype.&#xff08;用原型实例指定创建对象的种类&#xff0c; 并且通过拷贝这些原型创建新的对象。 &#xff09; UML图&#xff1…...

深度学习与深度迁移学习有什么区别?

深度学习包含深度迁移学习&#xff0c;它们都利用了深层神经网络&#xff08;Deep Neural Network&#xff0c;DNN&#xff09;来处理数据&#xff0c;并从中学习特征。但是&#xff0c;它们也有一些区别。 深度学习是一种机器学习方法&#xff0c;它通过多层神经网络来自动学…...

创建Asp.net MVC项目Ajax实现视图页面数据与后端Json传值显示

简述回顾 继上篇文章创建的mvc传值这里说明一下Json传值。在mvc框架中&#xff0c;不可避免地会遇到前台传值到后台&#xff0c;前台接收后台的值的情况&#xff08;前台指view&#xff0c;后台指controller&#xff09;&#xff0c;有时只需要从控制器中返回一个处理的结果&a…...

1089 Insert or Merge (插入排序,相邻归并排序,附模拟实现)

注意点1&#xff1a;判断插入排序不能从头开始判断是否为目标数组&#xff0c; 比如&#xff1a;初始为1 2 3 4 3&#xff0c;目标数组也为1 2 3 4 3&#xff0c;则如果是从头开始推的&#xff0c;则下一步会变成1 2 3 4 3&#xff0c;而下一步应该是 1 2 3 3 4。所以我们应该…...

基于算能的国产AI边缘计算盒子8核心A53丨17.6Tops算力

边缘计算盒子 8核心A53丨17.6Tops算力 ● 可提供17.6TOPS&#xff08;INT8&#xff09;的峰值计算能力、2.2TFLOPS&#xff08;FP32&#xff09;的高精度算力&#xff0c;单芯片最高支持32路H.264 & H.265的实时解码能力。 ● 适配Caffe/TensorFlow/MxNet/PyTorch/ ONNX/…...

Eaxyx 让圆球跟随鼠标移动

如果出现2023&#xff0c;代表配置成功: 进入Eaxy官方网站&#xff0c;点击文档&#xff1a; 选择 函数->绘图函数->initgraph: 可以看见initgraph&#xff08;&#xff09;函数有如下三个参数: 现在我们想生成一个1280*720大小的窗口&#xff1a; 我们需写如下代码: 但…...

Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

陪诊系统:基于自然语言处理的患者沟通创新

医疗领域的数字化转型正日益引入创新技术&#xff0c;其中基于自然语言处理&#xff08;NLP&#xff09;的陪诊系统成为提升患者沟通的一项关键技术。本文将深入研究这一领域&#xff0c;介绍陪诊系统如何借助NLP实现患者沟通的创新&#xff0c;并提供一个简单的Python代码示例…...

实用攻略——SD-WAN网络配置步骤详解

SD-WAN&#xff08;软件定义广域网&#xff09;作为一种新兴的网络技术&#xff0c;被广泛应用于构建高效、可靠的企业组网。 本文将详细介绍企业组网中SD-WAN涉及的配置过程&#xff0c;并提供一些配置技巧&#xff0c;以帮助企业快速了解企业组网的配置。通过使用SD-WAN技术&…...

​无人机摄影测量

无人机摄影测量技术是传统航空摄影测量手段的有力补充&#xff0c;具有机动灵活、高效快速、精细准确、作业成本低、生产周期短、影像获取空间分辨率高、高危地区探测等优势。无人机与航空摄影测量相结合使得“无人机数字低空遥感”成为航空遥感领域的一个崭新发展方向。无人机…...

对el-select封装成组件使用

效果与直接使用el-select一样&#xff0c;多处用el-select显得代码冗余就进行了封装 效果图&#xff1a; el-select封装&#xff1a; <template><div class"my-select"><el-selectv-model"person.modelValue":placeholder"placehold…...

pytorch 多卡并行训练

目录 设置参数&#xff1a; 训练时参数&#xff1a; 调用命令&#xff1a; 设置参数&#xff1a; import argparseparser argparse.ArgumentParser()parser.add_argument(--batch_size, typeint, default64, helpBatch size for training)parser.add_argument(--local_rank…...

C# Bin、XML、Json的序列化和反序列化

1&#xff09;序列化前的准备 声明类&#xff1a; [Serializable]public class BandItem{//JsonIgnore&#xff1a;当不想把某字段值序列化到Json时使用//[JsonIgnore]public string Name { get; set; }public string MusicStyle { get; set; }public string Masterpiece { ge…...

mediapipe+opencv实现保存图像中的人脸,抹去其他信息

mediapipeopencv MediaPipe本身不提供图像处理功能&#xff0c;它主要用于检测和跟踪人脸、手势、姿势等。如果您想要从图像中仅提取人脸主要信息并去除其他信息. # codingutf-8 """project: teatAuthor&#xff1a;念卿 刘file&#xff1a; test.pydate&…...

clickhouse的向量化执行

背景 clickhouse快的很大一部分原因来源于数据的向量化执行&#xff0c;本文就来看一下向量化执行和正常标量执行的区别 SIMD的向量化执行 从上图可知&#xff0c;clickhouse通过SIMD指令可以做到一个cpu周期操作两个向量的运算操作&#xff0c;比起普通的cpu指令效率提高了N…...

R语言实验三

1、读取一个文件并进行如下操作。 ①使用命令清空工作空间&#xff0c;使用read.table读取exam_1.txt文件&#xff0c;将文件保存到data变量中&#xff0c;数据第一行设置为列名&#xff0c;第一列是行名。 ②判断对象data是否为矩阵。 ③将对象转换为矩阵&#xff0c;记为d…...

SuperDuper框架:AI应用开发的组件化与数据库原生集成实践

1. 项目概述&#xff1a;一个颠覆传统AI应用构建的“超级”框架如果你正在为构建一个集成了多种AI模型、数据库和前后端逻辑的复杂应用而感到头疼&#xff0c;那么superduper-io/superduper这个项目&#xff0c;很可能就是你一直在寻找的“瑞士军刀”。简单来说&#xff0c;它不…...

【Midjourney极简艺术风格终极指南】:20年视觉设计专家亲授3大构图法则、5类禁用提示词与1套可复用Prompt模板

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;极简艺术风格的本质与Midjourney适配原理 极简艺术风格并非简单地“减少元素”&#xff0c;而是通过精准的留白、克制的色彩、几何化的形态与高度凝练的视觉语法&#xff0c;实现信息密度与情绪张力的平…...

从实验设计到代理模型:我是如何用拉丁超立方抽样节省了80%的仿真成本

从实验设计到代理模型&#xff1a;我是如何用拉丁超立方抽样节省了80%的仿真成本 去年夏天&#xff0c;当我接手某新型电动汽车外形的空气动力学优化项目时&#xff0c;团队正面临一个典型的多参数优化困境&#xff1a;每次计算流体力学&#xff08;CFD&#xff09;仿真需要6小…...

3分钟快速上手:m4s-converter让B站缓存视频秒变MP4格式

3分钟快速上手&#xff1a;m4s-converter让B站缓存视频秒变MP4格式 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在当今数字内容时代&#xff…...

从技巧到工程:构建可维护的Prompt设计体系与实战指南

1. 项目概述&#xff1a;Prompt Engineering 的实战价值最近在 GitHub 上看到一个名为 “imJunaidAfzal/Prompt-Engineering” 的项目&#xff0c;这让我想起了过去一年里&#xff0c;和团队一起从零开始摸索大语言模型应用落地的经历。Prompt Engineering&#xff0c;中文常译…...

扩展卡尔曼滤波锂电池SOC估算【附代码】

✨ 长期致力于锂离子电池、SOC估算、锂离子电池建模、EKF算法研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;二阶RC等效电路建模与温度自适应参数修正…...

别再为FluidSIM 3.6安装报错头疼了!WinHEX找不到进程?看这篇保姆级图文教程就够了

FluidSIM 3.6安装疑难全解析&#xff1a;从报错修复到高效使用指南 当工科实验室的电脑屏幕再次弹出那个令人窒息的错误提示——"WinHEX找不到进程"&#xff0c;许多初次接触FluidSIM的师生都会陷入束手无策的困境。这款由德国Festo公司与帕德博恩大学联合开发的液压…...

【Appium 系列】第09节-数据驱动测试 — YAML 数据 + parametrize

对应代码&#xff1a;core/data_driver.py&#xff08;206行&#xff09;、testcases/data/login_users.yaml、testcases/yaml/login_test_cases.yaml说明&#xff1a;本节代码示例来自一个真实的移动端自动化测试项目&#xff0c;业务名称和API路径已做模糊化处理。登录测试少…...

layerJS与现代前端框架集成:Vue、React、Angular中的最佳实践指南 [特殊字符]

layerJS与现代前端框架集成&#xff1a;Vue、React、Angular中的最佳实践指南 &#x1f680; 【免费下载链接】layerJS layerJS: Javascript UI composition framework 项目地址: https://gitcode.com/gh_mirrors/la/layerJS layerJS是一个创新的JavaScript UI组合框架&…...

AI应用统一管理:aiclublight轻量级启动器部署与配置指南

1. 项目概述与核心价值最近在折腾一些AI相关的本地化应用&#xff0c;发现了一个挺有意思的项目&#xff0c;叫aiclublight。这名字听起来有点“俱乐部之光”的意思&#xff0c;但它的核心其实是一个轻量级的AI应用启动器。简单来说&#xff0c;它就像是一个为你电脑上各种AI模…...