领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

300 多行代码搞定微信 8.0 的「炸」「裂」特效!

nixiaole 2025-04-11 03:38:58 知识剖析 13 ℃

微信 8.0 更新的一大特色就是支持动画表情,如果发送的消息只有一个内置的表情图标,这个表情会有一段简单的动画,一些特殊的表情还有全屏特效,例如烟花表情有全屏放烟花的特效,炸弹表情有爆炸动画并且消息和头像也会随之震动。

本着前端工程师的职业精神,我就想看看能不能实现一个类似的特效。折腾许久之后,做出来的效果如下:

项目的核心是使用到了 lottie 动画库。lottie 是 Airbnb 出品的、全平台(Web、Android、IOS、React Native)的动画库,它的特点在于能够直接播放使用 Adobe After Effects 制作的动画。设计师在 After Effects 中,利用 Bodymovin 插件把动画导出为 JSON 格式之后,开发者就能够通过相应平台的 SDK 进行播放。(项目地址及示例演示见文末)

在做完这个项目之后我感觉到自己的前端储备又丰富了一层,在以后应对复杂特效时又有了新的思路,如果你也想进一步提升前端开发技能,可以跟着这篇文章实践一下。本篇文章除了使用 Lottie 库之外,全部都是使用原生 HTML/CSS/JavaScript 实现的,这样无论你是 React、Vue 还是其它工程师,都可以快速掌握。


编写界面



本来想跳过 HTML/CSS 部分,但是想到 CSS 可能是大部分人的弱项,所以我决定还是把实现界面的思路写一下,想看核心部分的可以直接跳到:二、发送普通消息部分。

1. HTML 部分

首先看 HTML 部分,从效果图来看:

上边有一个标题栏,显示与 XXX 聊天。

中间是聊天信息面板,包含着双方发送的消息,每条消息由发送者头像和消息内容组成,我发送的在右侧,对方发送的在左侧。

下方是底部信息,有表情选择按钮、编辑消息文本框和发送按钮。

那么根据这个结构编写的 HTML 代码如下所示:

与 XXX 聊天

你好

Hi

各个元素所对应的界面部分为:

元素是一个整体的容器,用于把聊天窗口居中对齐

是聊天应用的容器,用于布局标题栏、聊天面板和底部发送框。

用于显示标题栏。

是消息面板,用于布局其中的消息。

为消息容器,使用不同的 class 来区分发送方, mine 代表我发送的, yours 代表对方发送的。每条消息里边使用 来展示头像,使用

元素来显示文本,

元素里边的 元素将会作为 lottie 的容器来播放表情动画。

用于布局底部操作按钮和消息发送框。其中:

最近发表
标签列表