搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
AI学习
›
ChatGPT
›
实操演练
›
chatgpt这么火?前端如何实现类似chatgpt的对话页面
0
0
1
分享
chatgpt这么火?前端如何实现类似chatgpt的对话页面
nettman
2023-3-15 22:08:28
发表于
实操演练
[显示全部楼层]
只看大图
阅读模式
关闭右栏
0
1461
About云VIP帮助找工作和提升
本帖最后由 nettman 于 2023-3-15 22:18 编辑
前言
自从去年11月份chatgpt出圈之后,他的热度就居高不减,也出现了很多人借助接口开发的国内版本,那么本篇博客就从前端的角度来看看前端如何实现类似chatgpt的对话功能!
源码在文末获取!
因为这是我写在一个项目中的,单独提出来可能配色效果不同,但功能和做法只要我们掌握了,那么自己想怎么写就怎么写!
页面布局
这一块比较简单,分析过chatgpt的页面的就会知道,他的页面布局方式是采用flex布局的,flex布局确实好用,那么我也是基于Bootsrap+jquery+flex布局完成了简易版的对话功能!主要有两个地方用到了flex布局!
flex布局一
这里的头像和文字采用的就是flex布局,并且文字和图片顶部对齐,防止文字较多依旧和图片中间对齐的bug。
需要设置css:
其中align-items: flex-start;的作用就是让文字与图片顶部对齐!
flex布局二(重点)
第二处用到flex布局的地方就是这个搜索框:
很多人觉得这个对话框很简单,flex布局实现输入框和按钮在同一行确实简单,但你要好好看看chatgpt的官网,都是有小细节的,这里面还是有很多知识点的。
首先,我要说的是这个输入框用的textarea,而不是input,区别在于,input输入的内容是不能换行的,但textarea文本框可以,但使用textarea的问题是,参数rows设置为一行,这个文本框的高度会很低,达不到chatgpt的那个页面要求,rows设置大一点或者这个文本框的高度给高一点会有一个问题就是输入时他的光标不会在文本框的高度中间,而是在第一行,我们是没法通过其他方式让输入光标垂直居中的,因此这也不符合chatgpt页面的要求,所以这确实是个值的学习的一点!看了chatgpt页面的做法后,我悟了,下面一张图来说明chatgpt是如何做的:
如图,你只要将textarea边框取消掉,然后focus为类将边框效果也取消掉,外边再套一个div边框将textarea文本框和按钮套在里面就好了!
最后,将这个输入框定位到页面底部就好!
js部分
首先,页面部分,我们添加消息到页面,包括用户的问题以及ai的回复,添加消息到页面时需要向上滚动:
js.rar
(382 Bytes, 下载次数: 2)
2023-3-15 22:14 上传
点击文件名下载附件
这里消息添加带页面后,清空了输入框的内容,接下来还需要给输入框添加加一个键盘事件,也就是点击enter键也可以发送消息!
最后就是发送消息与获得消息的一部分了:
这些逻辑都很简单,我不再总结,需要注意的是,我在发送消息到后台等待相应的过程让按钮的状态是不可点击的,直到后台返回消息才可以进行下一次问答!但这里我没有处理键盘事件,也就是说你可以点击enter继续向后台发送消息,这也是一个bug,只不过我没有处理,你们不需要的可以去掉这个键盘事件就好了,当然也可以在发送消息到获得回答的这个时间段像禁用发送按钮一样,禁止enter键盘事件或者解绑这个键盘事件,这个你们自己去完成,这里我不在多说(总要留点东西让你们自己去思考去感悟!)
完整代码
完整代码.rar
(1.79 KB, 下载次数: 22)
2023-3-15 22:17 上传
点击文件名下载附件
这里面用到的layer.js就是一个弹窗组件,百度可以搜到,common.js是我自己对layer.js方法的封装,这个页面其实你不这两个js文件也行,因为整个页面只有下面的代码用到了弹窗:
其实简陋点,一个alert就搞定了!
————————————————
最新经典文章,欢迎关注公众号
原文链接:
https://blog.csdn.net/qq_57421630/article/details/129481145
加微信w3aboutyun,可拉入技术爱好者群
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
没找到任何评论,期待你打破沉寂
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
nettman
超级版主
关注
2849
主题
3142
帖子
477
粉丝
TA的主题
利用简历在面试中“带节奏”
2024-3-12
百度内核数据研发一面凉经
2024-3-11
大数据工程师面试 - 字节跳动 Spark 面试考点!
2024-3-11
数据开发 - 面经 - 来未来(医疗大数据)
2024-3-11
2024求职:慎填面试登记表
2024-3-5
24小时热文
华为3年涨薪6次,每次涨薪高达3万
项目管理精华
基于强化学习算法的商品推荐系统【高工资必
面试腾讯大厂必备秘籍
数据治理系统实施方案
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈