开始

上半年小米Max发布的时候,做了一个在朋友圈传播的模仿微信的群聊界面H5页面:一群公司的大咖在群里聊小米Max,用户可以向大咖们提问,以此了解产品。

页面的主体是群聊对话,同时在对话中包含了很多交互:图片、视频、动画、翻译等。如果用户是用微信打开的链接,还会获取用户名和头像,作为页面里的“我”来聊天,效果有点逼真~

不啰嗦,先看页面效果。页面地址(手机浏览效果更好)。微信里访问这个链接 页面里有“彩蛋”,还能求红包喔~

原页面对话和交互都很多,我择出了主要逻辑和交互放在codepen上,供有兴趣的同学参考~ 同时简单分析了自己的想法和思路,也算是一个总结~

Codepen 链接

整体布局

整体布局还是很简单的:一个可以滚动的div,承载所有对话;一个固定在底部的“输入框”,包含所有选项。

人物 & 对话数据

群聊里的所有人物都保存在 js 对象 _members 里,包含人物的 id、姓名、和头像。

var _members = {lj: {id: 'lj',name: '雷军',avatar: _imgUrl + 'a-lj.png',},
}

所有的对话内容都保存在一个 js 对象 _dialog 里,_dialog 里保存了每段对话(用户不用做任何操作,自动播放的一组,几条消息),每段对话都包含若干条消息,通过给每条消息设置类型、作者、内容、特殊事件,让聊天内容作为元数据逐条展示。

每条消息都包括:

  1. 类型(五种) - plain, picture, video, system, animation;
  2. 作者 - _member 里的一个人物;
  3. 内容 - 消息内容;
  4. 停顿时间 - 消息出现后停顿多长时间继续播放下一句对话(不设置的话则随机停顿时间);
  5. 特殊标志(会触发特殊事件) - 用 flag 字段表示;
var _dialog = {d0: [{type: 'plain',author: _members.lj,content: userName + ' 你好,are you ok?',pause: 2000,}, {type: 'plain',author: _members.lwq,content: '欢迎 ' + userName + gif.welcome + gif.welcome + gif.welcome,flag: 'emoji-welcome',},]// ... more dialog
}

动起来!

有了元数据之后就很简单了~ 循环某个对话,逐条将里面的消息数据拼接成html, 然后添加到页面上。当用户点击“输入框”里的某个问题之后,触发相应的对话。如果消息里包含 flag,通过 flag 的内容来触发不同的特殊事件。

然后~ 当当当~ 到此我们的页面已经初具雏形了~

真的就这么简单?

虽然页面已经初具雏形,可是基础的对话效果还很哏.. 想象一下每隔一小会儿页面上就突然多出一条消息,效果很奇怪的。为什么微信聊天的时候就没有这种生硬的感觉呢?笔者默默的去观察了一下微信,发现每条消息出现的时候,都有一个轻轻向上冒的效果~ 同时上面的消息都会一起向上滚动。

这种简单的效果,对于能用css解决的事情,尽量不写js的笔者来说,简直不要太轻松好吧。

于是给每条消息都添加了一个css动画 goup,这样在消息的 DOM 元素被添加到页面上时,消息自动就有一个向上冒出的效果。同时,每添加一条消息,都把对话区域平滑滚动到底部(便于显示最新的消息),当然这个需要写js了.. 这样之前的消息都会一起向上滚动。

然后

接着添加各种交互,音效,完善动画,对话等等(你不会想知道这包含了多少工作量的。。)
然后当当当~ 这个H5页面就算完成了。

最后

很想说,这个页面的完成离不开我们靠谱的设计师和策划童靴,大家一次次的完善,记不清到底修改了多少次.. 看着页面慢慢从一个雏形,直到终于上线的那一刻(虽然上线后也改了hin多次..)~ 还是很开心的~

第一次做H5,有收获也有遗憾,希望下次更好~

原始链接

http://varnull.cn/h5wechat/

一个模仿微信群聊的H5页面相关推荐

  1. 模仿微信群聊管理功能(头像管理效果)

    在社交类应用开发中经常用到群管理功能,来约束访问范围. 本文讲述的是如何实现类似微信群聊时成员管理的UI效果. 先上效果图: (添加状态) (删除状态) (添加成功) UI效果概述: 1. +图标,单 ...

  2. Flutter 使用GridView模仿微信群聊UI

    先看一下效果 具体代码 https://github.com/yxwandroid/Flutter-Study-Demo/blob/master/lib/ui/grid_view_demo_scree ...

  3. Android 高仿微信群聊头像

    最近小编搞了一个仿微信群聊头像的一个功能,分享给大家... 工作中需要实现仿钉钉群头像的一个功能,就是个人的头像拼到一起显示,看了一下市场上的APP好像微信的群聊头像是组合的,QQ的头像不是,别的好像 ...

  4. python网页版_经典python学习教程:20行代码打造一个微信群聊助手,解放双手

    今天的Python学习教程教大家如何用20行Python代码实现微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的 ...

  5. Python黑科技:20行Python代码打造一个微信群聊助手

    今天要教大家一个黑科技,20行代码实现自己定制的微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的微信上有一大批好 ...

  6. python社区微信群_30行Python代码,打造一个简单的微信群聊助手,简单方便

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

  7. 30行Python代码,打造一个微信群聊助手~

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

  8. 上海python招聘微信群_如何用20行Python代码打造一个微信群聊助手?

    今天要教大家一个黑科技,20行代码实现自己定制的微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的微信上有一大批好 ...

  9. 聊天室案例,模仿QQ,微信群聊

    使用说明 这个代码是模拟一个简单的QQ,微信群聊,首先运行服务端代码,在运行客户端,每运行一次客户端,都会创建一个用户在聊天室中模拟发言.(注:服务端要一直处于开启状态,不能关闭) 客户端代码 imp ...

最新文章

  1. 【matlab】2019.5.10第一节上机课练习
  2. 揭秘!文字识别在高德地图数据生产中的演进
  3. linux不识别xfs,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  4. 计算机程序的构造和解释1构造过程抽象1.2过程与它们所产生的计算
  5. Redux的学习笔记-(一)(B站学习笔记)
  6. github 安装浏览器导航插件Octotree
  7. 松下伺服务器型号A5和A6,松下伺服电机 A6家族型号对照表.pdf
  8. Linux下线程经典问题(生产者消费者问题,哲学家问题...)
  9. Android 汇率换算对比小工具
  10. 洛谷P1510 精卫填海(简单的dp)
  11. Windows 远程桌面无法复制粘贴问题
  12. ddl是什么意思mysql,ddl是什么意思(MySQL DDL Online)
  13. 录音时分离左右声道的数据
  14. UniApp文件上传
  15. 一个帐号多设备登录的处理
  16. 循环比赛日程表(match)
  17. 国外域名注册商选择_如何在2020年选择最佳域名注册商(比较)
  18. postgresql点云las_云数据库 PostgreSQL-最先进的开源数据库-关系型数据库-价格-购买 - 阿里云...
  19. 一、网上商城推荐系统
  20. Linux sed编辑器(精讲)

热门文章

  1. 下载百度排行榜音乐的程序(Perl)
  2. 类似于 qq发说说动态 基于原生servlet 后台方案
  3. MAE同期工作!MSRA新作SimMIM收录CVPR 2022!高达87.1%准确率!掩码图像建模新框架...
  4. PPT:立体仓库详解及出入库效率计算
  5. OSChina 周六乱弹 ——对!今天全是妹子!
  6. 人机交互设计(HCI)的七原则
  7. 基于ASP.NET生成二维码详细源码
  8. linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网
  9. fabric-ca服务构建及证书生成
  10. Postman导出Api文档