怎样制作CSS类似直播间点赞飘屏动画_利用keyframes随机水平位移

落婷君_8045

落婷君_8045

2026-05-15

541人浏览

原创

纯css无法实现真正随机水平位移,必须用js动态生成不同animation-name或内联animation样式;推荐fixed定位+transform位移+linear缓动+初始x偏移随机化。

怎样制作css类似直播间点赞飘屏动画_利用keyframes随机水平位移

如何用 @keyframes 实现点赞飘屏的随机水平位移

直接说结论:纯 CSS 无法在 @keyframes 中生成真正随机值,所谓“随机水平位移”必须靠 JavaScript 动态生成不同动画名或内联 animation 样式。CSS 只能预设多套固定偏移路径,再由 JS 随机选一套应用。

常见错误是试图写 transform: translateX(calc(var(--offset) * 1px)) 并指望 CSS 变量在每个动画实例里自动变——不行,var(--offset) 是静态计算的,所有实例共享同一值。

  • 每条点赞元素需独立的 animation-name(如 float-123、float-456),由 JS 动态注册 @keyframes float-123 { ... }
  • 更轻量做法:JS 不注册新动画,而是给元素加内联 style.animation,比如 element.style.animation = `float-${Math.random()} 2.5s linear forwards`,再配合全局一个带 transform: translateX(100vw) 到 translateX(-100vw) 的动画,但水平起始/终点位置仍需 JS 控制
  • 关键点:水平位移范围不能只靠 translateX 动画本身决定,得靠 JS 设置元素初始 left 或 transform: translateX() 偏移,再让动画统一向左/右移动固定距离

为什么用 position: fixed 比 absolute 更适合飘屏

直播间通常全屏滚动或切换 tab,如果用 position: absolute,点赞元素会随父容器滚动而消失;fixed 让它脱离文档流,始终相对于视口定位,飘过时不会被遮挡或错位。

但要注意:若页面有横向滚动(比如小屏横屏直播),fixed 元素的 left 值可能超出当前视口,导致一出现就不可见。解决方案是用 transform: translateX() 替代 left,并确保初始位移在 0 到 100vw 之间。

CSS婚礼策划服务机构宣传网站模板
CSS婚礼策划服务机构宣传网站模板

CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载
  • 推荐结构:<div class="like-bubble" style="transform: translateX(73vw) translateY(-20px);">?</div>
  • 动画只控制 X 方向变化:从 translateX(73vw) → translateX(-100vw),全程不改 Y
  • 避免用 top/left + fixed,因为缩放或 viewport 变化时数值易失准

@keyframes 动画中 transform 连续位移的写法要点

飘屏不是“跳到某点再动”,而是平滑划过整个屏幕。所以关键帧必须覆盖起点、中途、终点,且用 transform 而非 left/right——后者触发重排,transform 走合成层,性能好得多。

典型错误是只写 0% { transform: translateX(100vw); } 100% { transform: translateX(-100vw); },看起来没问题,但实际飘速不均:开头慢、中间快、结尾又慢(因默认 ease 缓动)。必须显式设 linear。

  • 正确声明:@keyframes like-float { 0% { transform: translateX(100vw) translateY(-20px); } 100% { transform: translateX(-100vw) translateY(-20px); } }
  • 必须加 animation-timing-function: linear,否则飘动像被拽着走
  • 不要在动画里改 opacity 或 font-size,除非明确需要淡入淡出;单纯飘屏保持这些属性不变最省性能

JS 创建飘屏元素时最容易漏掉的三个细节

多数人卡在“点了没反应”或“一堆点赞堆在左上角”,问题往往不在动画本身,而在元素注入和生命周期管理。

  • 元素插入前必须设好 style.position = 'fixed' 和初始 transform,否则会先闪现到默认位置再跳走
  • 每个元素的 animation-duration 最好带小数(如 2.37s),避免大量元素同时结束造成视觉卡顿;可用 2 + Math.random() * 1.5 生成
  • 必须手动清理已结束动画:监听 animationend 事件,el.remove() 或 el.style.display = 'none',否则 DOM 节点越积越多,内存泄漏明显

复杂点在于:移动端 touch 事件频繁触发,可能一秒几十个点赞,得加节流;另外 iOS Safari 对 transform + fixed 组合偶尔有渲染延迟,加 will-change: transform 有时有帮助,但别滥用。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

4436

6

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

977

5

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.28

1838

6

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

2023.08.01

3466

7

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

2023.08.10

6945

11

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

2023.08.10

5891

7

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

2023.08.21

1997

9

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

2023.08.22

2811

5

css禁止点击事件
css禁止点击事件

实现css禁止点击事件的方法有使用CSS的pointer-events属性和使用JavaScript禁用点击事件。本专题为大家提供点击事件相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2433

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.9万人学习

CSS教程
CSS教程

共754课时 | 96.6万人学习