首页 > 其他分享 >短视频直播系统,前端比较常见的几种动画实现方式

短视频直播系统,前端比较常见的几种动画实现方式

时间:2023-12-23 11:11:08浏览次数:37  
标签:box 动画 const 前端 move 100px 直播 100 left

短视频直播系统,前端比较常见的几种动画实现方式

我整理了如下的6种方式,接下来我们以最简单的例子,一个div从左到右移动一定的距离,分别看看这几种方案的具体实现。如有不妥还望指正。

 

一、CCS animation

这里省略了html部分,我们直接看css:

.box{
    height: 100px;
    width: 100px;
    animation: move 5s linear;
    position: absolute;
    background: #409EFF;
    left: 200px;
}
@keyframes move {
    0%{
        left: 0;
    }
    100%{
        left: 200px;
    }
}

 

二、CSS transition

想到这里我们很容易想到这样去写css来实现一个动画,对的,transition使用的一般场景就是有一个如hover的状态时去改变样式。

.box{
    height: 100px;
    width: 100px;
    left: 0;
    position: absolute;
    background: #409EFF;
    transition: 5s linear;
}
.box:hover{
    left: 200px;
}

 

但是像上面的方式不能实现我们目标需求,所以稍微修改一下:

<style>
    .box{
        height: 100px;
        width: 100px;
        left: 0;
        position: absolute;
        background: #409EFF;
        transition: 5s linear;
    }
    .target{
        left: 200px;
    }
</style>
<script>
    window.onload = ()=>{
        const box = document.getElementsByClassName("box")[0];
        box.className = "target box";
    };
</script>

 

三、setInterval & setTimeout

这里把单纯使用js定时器的方式归为一类,方式如下:

setInterval(move, 10);
const box = document.getElementsByClassName("box")[0];
let n = 0;
function move() {
    if (n>=200) {
        return
    }
    box.style.left = n + 1 + "px";
    n += 1;
}

 

const box = document.getElementsByClassName("box")[0];
let n = 0;
function move() {
    if (n>=200) {
        return
    }
    box.style.left = n + 1 + "px";
    n += 1;
    setTimeout(move,10);
}
move();

 

四、requestAnimationFrame

const box = document.getElementsByClassName("box")[0];
let n = 0;
function move() {
    if (n>=200) {
        return
    }
    box.style.left = n + 1 + "px";
    n += 1;
    requestAnimationFrame(move);
}
move();

 

五、Canvas

因为canvas只能由js操控绘制,其实这种方法也是js的方式实现动画,只是动起来的不是dom元素,而是画布展示;

<body>
    <canvas id="canvas" ></canvas>
</body>
<script>
    const canvas = document.getElementById('canvas');
    const ctx = canvas.getContext('2d');
    ctx.clearRect(0,0,300,100);
    ctx.fillStyle = "#409EFF";
    ctx.fillRect(0,0,100,100);
    let n = 0;
    function move() {
        if (n >= 200) {
            return
        }
        ctx.clearRect(0, 0, 300, 100);
        ctx.fillRect(n+1, 0, 100, 100);
        n += 1;
        requestAnimationFrame(move);
    }
    move();
</script>

 

六、SVG

用svg技术来实现,你会发现代码非常少;

<svg>
    <Rect x="200" y="0" width="100" height="100" fill="#409EFF" >
        <animate attributeName="x" from="0" to="200" dur="5"/>
    </Rect>
</svg>

 

以上就是短视频直播系统,前端比较常见的几种动画实现方式, 更多内容欢迎关注之后的文章

标签:box,动画,const,前端,move,100px,直播,100,left
From: https://www.cnblogs.com/yunbaomengnan/p/17922798.html

相关文章

  • 一款基于.NET Core的快速开发框架、支持多种前端UI、内置代码生成器
    前言经常看到有小伙伴在技术群里问有没有什么好用且快速的开发框架推荐的,今天就给大家分享一款基于MITLicense协议开源、免费的.NETCore快速开发框架、支持多种前端UI、内置代码生成器、一款高效开发的利器:WalkingTec.Mvvm框架(简称WTM)。官方项目介绍WalkingTec.Mvvm框架(简称W......
  • 一个炫酷的CSS动画
    先不说是啥,直接上代码,想看效果自己复制运行。<!DOCTYPEhtml><html><head><style>html{background:black;}.container{width:300px;height:300px;}.main1{width:500px;......
  • getx路由动画
    getx默认动画配置GetMaterialApp(enableLog:true,defaultTransition:Transition.fade,//修改这里opaqueRoute:Get.isOpaqueRouteDefault,popGesture:Get.isPopGestureEnable,transitionDuration:Get.defaultDurationTransition,defaultGlobalState:Get.d......
  • Flutter 隐式动画
    通过几行代码就可以实现隐式动画,由于隐式动画背后的实现原理和繁琐的操作细节都被隐去了,所以叫隐式动画,FLutter中提供的[AnimatedContainer]、[AnimatedPadding]、[AnimatedPositioned.AnimatedOpacity]、[AnimatedDefaultTextStyle]、[AnimatedSwitcher]都属于隐式动画隐式动画......
  • 前端 - 前端项目引入外部字体
    最近前端小朋友又遇到了一个问题,就是很多时候UI设计师设计出来的效果图都包含一些特殊字体,而众所周知,显示字体的前提条件是安装字体,可我们怎么能保证用户每个人本地都安装了我们需要的字体呢?答案是把字体文件放到前端项目中。我以当前遇到的字体为例说明一下步骤。注意:我们因为......
  • 使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的
    在前面随笔《在Winform应用中增加通用的业务编码规则生成》,我介绍了基于Winform和WPF的一个通用的业务编码规则的管理功能,本篇随笔介绍基于后端WebAPI接口,实现快速的Vue3+ElementPlus前端界面的开发整合,同样是基于代码生成工具实现快速的前端代码的生成处理。1、通用的业务编码......
  • SVG动画
    一、下载SVG网站:https://undraw.co/点击“browsenow”点击“search”点击第一个点击“DownloadSVGforyourprojects”对代码进行格式化将代码拷贝到vscode中,用快捷键“Shift+Alt+F”进行格式化,格式化之后如下所示:<svgxmlns="http://www.w3.org/2000/svg"data-......
  • 前端 vue项目启动报错 spawn cmd ENOENT 的原因以及解决方案
    前端项目启动到一半的时候卡在跳转浏览器出现了这个问题 那么问题大概率就是你环境刚配置或者配置错了的问题,这个时候只需要找到我的电脑=>属性=>高级系统设置=>环境变量=>系统变量=>PATH环境=>双击进去=>添加环境变量=> 添加这俩个 C:\Windows\System......
  • 明晚直播:两小时玩转代码审计
    本次的课程的内容为:1.代码审计快速入门秘籍2.深入探析SQL注入白盒审计3.全流程解跑开源组件漏洞4.业务逻辑漏洞审计及防范5.漏洞发现中敏感信息泄露的重要性 12月23日晚20:00,我们不见不散~  Ms08067安全实验室专注于网络安全知识的普及和培训,是专业的“图书出版+培训”......
  • 前端 JS 安全对抗原理与实践
    作者:vivo互联网安全团队-LuoBingsong前端代码都是公开的,为了提高代码的破解成本、保证JS代码里的一些重要逻辑不被居心叵测的人利用,需要使用一些加密和混淆的防护手段。一、概念解析1.1什么是接口加密如今这个时代,数据已经变得越来越重要,网页和APP是主流的数据载体,如果......