首页/新闻资讯/正文
微信8.0表情特效引发的探索:前端使用lottie动画库实现类似效果

 2025年02月02日  阅读 2  评论 0

摘要:本着前端工程师的职业精神,我就想看看能不能实现一个类似的特效。是聊天消息输入框,没什么特别的。对于这种带全屏特效的表情可以单独进行判断,也可以在保存表情的对象中定义相关的操作,这里为了简单起见,我们单独判断用户是否发送了炸弹表情,然后施加相应特效。就是消息元素,之后函数做了下边的这些操作:

作者|风口

生产| CSDN(ID :)

微信8.0的主要特征之一是支持动画表达式。如果只有一个构建的表达图标,则如果发送消息,则此表达式将具有一个简单的动画。炸弹的表情具有爆炸性的动画和新闻,化身也将动摇。

根据前端工程师的专业精神,我想看看是否可以实现类似的特殊效果。经过长时间的折腾,效果如下:

该项目的核心是使用动画库。它是一个生产的完整平台(Web,iOS,)动画库,其特征是能够直接播放动画。在设计师使用插头将动画导出到JSON格式之后,开发人员可以通过相应平台的SDK播放。 (项目地址和示例演示请参见本文的结尾)

完成这个项目后,我觉得我的前端保留增强了另一层。将来,在处理复杂的特殊效果时,我会有新的想法。如果您还想进一步提高前端开发技能,则可以遵循本文进行练习。除了在本文中使用库外,所有这些图书馆均使用本机HTML/ CSS/实现,以便无论您是VUE还是其他工程师,都可以快速掌握它。

写界面

我最初想跳过HTML/CSS部分,但我认为CSS可能是大多数人的弱项目,因此我决定写实现界面的想法。那些想要看到核心部分的人可以直接跳到:2。发送普通消息部分。

1。HTML部分

从渲染的角度来看,首先要查看HTML部分:

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

中间是聊天信息面板,其中包含双方发送的消息。每个消息都由发件人的头像和消息内容组成。我将其发送到右边,另一方发送给左边。

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

然后,基于此结构编写的HTML代码如下:

与每个元素相对应的接口部分是:

该元素是用于对齐聊天窗口的总体容器

它是用于聊天应用程序的容器。它用于布置标题栏,聊天面板和底部发送框。

用于显示标题栏。

这是一个消息面板,用于布置消息。

对于消息容器,使用不同的内容来区分代表我的发件人,它代表另一方。每个消息用于显示化身并使用元素显示文本。元素中的元素将用作播放表情符号的容器。

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

这是一个表情符号选择按钮。使用笑脸SVG图片表明表情符号选择框弹出了一层。内部的表达式将在JS中动态加载。目的是实现动画预览。

这是一个聊天消息输入框,没有什么特别的。

是发送按钮

这是HTML的基本结构。让我们看一下CSS风格。

2。CSS部分

在项目root目录中创建一个.css文件,并将其引入.html的标签:

2.1全球风格

首先定义一些CSS变量。 CSS变量将促进我们引用相同的属性值。如果样式更新,您可以避免多次修改:

这些变量的含义是:

,主要颜色,例如我发送的消息的蓝色背景。

,抗色调或强调色调,与主色调形成鲜明对比,例如发送按钮的背景颜色。

,大阴影,例如标题栏的阴影和底栏。

,小阴影,例如输入框和表达式选择pop -up层。

接下来是一些重置样式:

这些样式对于所有元素都有效,并且设置了框模型,因此内侧间距和框架计数在宽度和高度内。内间距和外部间距设置为0,默认字体最终设置为。

2.2主容器

主容器用于将聊天应用程序容器定位到浏览器中间,使用网格布局,并将其设置为浏览器可见区域的100%,并将背景颜色设置为黑色和灰色:

2.3聊天应用程序容器

聊天应用程序容器具有固定高度,模拟手机屏幕,并使用网格布局来控制标题栏,聊天面板和底部操作栏的位置:

在这里,聊天应用程序分为三行。第一行的标题条的高度和最后一行的底部操作栏是内容的最大高度,中间聊天面板是浮动高度。

2.4标题栏

标题栏只是用内部间距,文本的中心模式和阴影设置:

界面优化提示:内部间距用于增加空白,这在视觉上导致放松。阴影与下面的聊天面板区分开

2.5聊天面板

聊天面板使用Flex布局来排列消息,并设置方向排列列,然后将其设置为自动。当消息的总高度超出面板的高度时,出现滚动条:

接口优化提示:这里还要留出足够的空白,以将与其他元素的距离分开以避免交通拥堵。

2.6新闻

该消息分为三个部分:消息容器,头像和消息主体。消息主体和头像包含在消息容器中,首先查看消息容器的样式。消息容器使用Flex布局将消息主体和头像放入一行。最大宽度为面板宽度的80%,并设置了字体和外部距离:

这里的设置是在定位后找到完整的屏幕特殊效果。

特效聊天微信有风险吗_微信聊天有哪些特效_微信聊天特效对方能看到吗

头像只是设置为宽度,圆角和远距离消息主体的间距:

接口优化提示:在这里,您必须提及再次间距的重要性。不要安排元素太紧凑,否则会非常影响视觉效果。最直接的影响是引起视觉拥挤并引起视觉疲劳。

消息主体还设置了间距和圆角。这里的圆角和化身是一致的,可以增加和谐感。它还设置了阴影,并使用Flex布局来对齐文本或表情符号:

这些样式基于另一方的信息。如果我发送的消息需要放在右边并进行一些调整。首先,对于我发送的消息,将flex-flow更改为行列和消息位置,然后在面板的右侧使用 - self:

现在,调整头像的外部距离是距左侧消息主体的边界距离:

设置消息的背景颜色为蓝色,文字为白色:

2.7底部操作栏

首先查看底部操作栏的整体布局,然后使用网格布局将表情符号选择按钮,消息发送框和发送按钮分为3列。除消息发送框的浮动宽度外,其他两个按钮是固定宽度。 ,最后,设定阴影和间距:

表达式选择按钮与左侧对齐,并设置相对定位以找到表情符号以选择pop -up层,然后设置按钮图标的大小:

有许多CSS代码选择pop -up层,但是它们非常简单。首先查看代码:

该代码的含义是:

弹出层使用网格布局。然后将列间距设置为18px。

设置角落,背景颜色,阴影,内部距离和字体大小。

定位设置为绝对定位,并将其移动到元素高度的100%(即,..宽度的高度设置为。

消息输入框和按钮的样式相对简单,消息输入框的宽度为整列。 “发送”按钮使用它正确对齐。在这里粘贴代码:

最后,在单击表情符号按钮显示时,添加另一种样式以将此样式添加到表情符号流行图层中:

3。JS部分

在将功能添加到聊天接口之前,请编写一些基本的JS代码。在项目的根目录中创建一个.js文件,并在.html中引用。请注意它在闭合标签上方,以便在加载HTML DOM之后,将执行JS中的代码以防止元素查找:

在.js中,首先要操作DOM元素:

在:

这是消息面板元素,用于添加新新闻。

选择表情符号按钮,单击它以弹出表情符号选择框。

它是pop -up表达式框。

这是消息输入框。

对于发送按钮。

然后,可以在示例代码仓库中下载JS库的引入,也可以下载.min.js。下载后,将其放入项目根目录中,然后将其引入.html中的.js上方:

下载表情符号动画资源文件,它们都是JSON格式的文件。下载后,将其直接放入项目根目录中:

南瓜表达:

炸弹表达:

爆炸动画:

让我们看一下如何实现每个部分的功能。

发送普通消息

在发送普通消息时,用户输入输入框中的消息后,单击以发送,并将消息添加到消息列表中并清除输入框的内容。然后在此处添加单击事件到发送按钮:

如果处理功能:

确定用户是否已输入消息。

如果输入,请将其添加到消息列表中。

看一下功能的代码:

该功能接收两个参数。 MSG和类型是要添加的信息内容和类型。类型可用。它被视为普通文本消息。它。以下内容主要是在此功能中完成的:

根据消息HTML结构创建一个新的消息元素,然后添加到消息列表中。

将消息的样式设置给我。

内部元素是化身和文本消息,它们分配给了由模板字符串形式分配的属性,中间是MSG变量的值。

最后,将滚动滚到最新消息,然后在输入框中清除消息。

这可以发送普通的短信。

发送动画表达式

在发送动画表达式之前,您需要加载动画表达式。定义表情符号名称的关键值和.js顶部的表情符号动画路径。

我们将基于此密钥找到相应的动画路径。然后在POP -UP层中初始化表达式以供用户选择:

这里的代码由以下这些操作制定:

遍历存储表情符号信息的对象。

创建一个容器并使用跨度元素,因为动画播放器需要将其安装到特定的HTML元素上。

呼叫()要加载动画,它需要传递几个参数:

:应安装播放器。

:您可以选择使用SVG或渲染动画。

微信聊天有哪些特效_特效聊天微信有风险吗_微信聊天特效对方能看到吗

循环:是否要循环播放,因为这是在表达表情选择中预览动画,因此它支持循环播放。

:是否要自动播放,是否将其设置在此处,在被鼠标刮擦时播放动画。

路径:动画JSON文件路径,直接从对象获得。

()将返回的实例将保存在其中。

之后,注册了一些事件:

单击表达式时,将表达式消息发送,然后将MSG参数设置为()MSG参数到表达式的键,然后将类型参数设置为“”。

当鼠标被表达式刮擦时,动画开始了。

当鼠标不在表达式中时,动画停止。

然后将事件添加到发送表情符号按钮中。单击时,请切换pop -up层的显示状态:

此时,单击“发送表情符号”按钮以查看表情符号选择pop -up层。您还不能发送表达式,因为您尚未在()函数中处理它,现在让我们修改其中的代码。第一法官:如果是表情符号,您将不会在消息中的元素中添加任何信息:

然后在其下方调用()函数播放动画:

()该函数接收两个参数,一个是表达式的关键,另一个是消息元素。此时,MSG变量的内容是事件中传递的表达式密钥。该函数中的代码如下:

在此功能中,我主要执行以下操作:

获取消息中的跨度元素,它将是一个动画容器。

表情符号动画的宽度高度为40px。

使用加载动画,并设置圆形播放作为真实的,以便在发送表达式时自动播放动画,而仅一次播放一次。

现在,您可以发送表达消息,并且相关动画也将自动播放。接下来,查看如何实现炸弹的完整屏幕动画以及消息元素的震动效果。

发送皮带的全屏特殊效果的表达

对于具有完整屏幕特殊效果的这种表达式,可以单独判断它,也可以在保留表达式的对象中定义相关操作。在这里,我们可以判断用户是否发送炸弹表达式,然后应用相应的特殊效果。

首先,在()函数中,判断如果发送消息是表达式消息,而表达式是炸弹,则播放完整的屏幕动画并摇动消息:

800毫秒后,此处的完整屏幕动画延迟了。目的是在播放炸弹表达式到正确的时间,然后播放()函数并通过消息元素时播放完整的屏幕动画。完整的屏幕动画结束后,请致电()()消息。让我们在此处查看()函数的代码:

()该功能接收一个锚点,这意味着根据位置开始播放完整屏幕动画。由于示例中的动画格式相对较小,因此将其固定在最新消息下方。在下面执行这些操作:

添加完整的屏幕动画元素,并将其设置为最新消息元素右下角的绝对定位,宽度,高度。

加载动画,而不是自动循环或播放。

由于原始动画速度太快,因此()调用实例的方法设置为速度的0.3倍。

然后设置一个事件来监视示例:“”,该示例将在动画执行完成时会触发,示例和完整的屏幕动画元素在其中被摧毁。

实现了完整屏幕动画的效果。接下来,查看代码摇摆代码:

此功能的操作是:

使用()和()摇动最新的5条消息,您还可以更改5个并摇动更多消息。

然后在周期中,将动画添加到头像和消息中,其中的内容将在稍后引入。

应该注意的是,您需要在添加动画执行之前将其删除,因为某些消息可能以前摇晃,例如当连续发送多个炸弹表达式时。添加它时,它使用()延迟700毫秒,目的是在一定程度上执行完整屏幕动画时摇晃消息。

接下来,查看定义,将以下代码添加到.css:

使用定义的动画,执行时间为0.8,动画执行函数易于输入。内部有更多代码,但是它们都非常简单,也就是说,模拟爆炸,X轴和Y轴的偏移的效果,每个偏移量变得越来越小,越来越快。您可以看到它。您可以看到它。百分比之间的间隔越来越小。当动画达到42%时,会添加一些旋转动画,以便在降落时振动效果。由于使用()在元素的中间使用轴心心脏,因此我们可以修改消息气泡的轴以实现更现实的效果:

另一方发送的消息的轴设置在左下角,并且发送的消息本身设置在右下角。

总结

现在,实现了该模拟微信8.0动画表达式的功能。要点是:

使用库加载和播放动画。

确定完整屏幕动画的位置和游戏的时间。

CSS实现消息动画。

你学到了吗?如果您有任何疑问或建议,可以发表评论。如果您喜欢这篇文章,请喜欢或关注我。背面有越来越令人兴奋的文章。谢谢你!

作者:,简介:前端工程师以直观和专业的方式分享编程知识。向上@

本文中的所有地址:

示例地址:

代码地址:

:,下载.min.js

南瓜表达:

炸弹表达:

爆炸动画:

官方网站:

程序员如何避免被“内部卷”捕获,选择哪种技术是最有前途的技术,而中国开发人员的当前状态和技术趋势到底是什么?快来参加“ 2020年中国开发人员调查”,并获得更多丰富的奖品!

版权声明:本文为 “ 【博览广文网】阅览万文、增长见识,广阔的软文阅读网站!” 原创文章,转载请附上原文出处链接及本声明;

原文链接:http://wen.bjhwtx.com/post/614.html

标签:

发表评论:

博览广文网

请关注我们,了解广泛资讯
  • 文章61
  • 评论0
  • 浏览46
热门标签
关于我们
扫码关注
联系方式
全国服务热线:暂无电话/微信dat818
地址:北京市朝阳区
Email:80765864@qq.com
邮编:1000000
Copyright Your WebSite.Some Rights Reserved.