vue:聊天对话框的实现

这篇具有很好参考价值的文章主要介绍了vue:聊天对话框的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现效果:不知道怎么录屏 就用图片展示了,实现了聊天框的基础功能,也有一些细节考虑不完全。未输入消息时可发送图片或视频,输入消息后显示发送按钮,保持滚动条在位于底部的最新消息。

 实现方式:

1.布局:使用了弹性布局,flex-direction: row-reverse;flex-direction: row;

为了兼容混合消息类型,参考大部分聊天框,都是图片视频与文字作为两条消息发送的。

也可以使用vant的Layout布局,会更加简单一下。

 2.滚动条位于底部,展示最新消息:

scrollToBottom() {
      var itemBox = this.$refs.itemBox;
      itemBox.scrollTop = itemBox.scrollHeight;
},
updated() {
    this.$nextTick(() => {
      this.scrollToBottom();
    });
},

3.输入全为空格不能发送,一般只要不是全为空格,空格就可以保留,考虑的细一点,还可以处理空格换行的情况,这里就简单处理了,只考虑全为空格的情况:

valuet.trim().length

4:预览视频和图片:图片预览建议使用vant就可以了,视频的预览不建议同个页面使用多个video标签,建议不超过3个video,不然会造成页面卡顿,这里建议在项目中单独建一个预览视屏的页面,只使用一个video标签,预览视频直接传链接过去。

5:处理聊天信息里的链接,后端提供的聊天肯定都是字符串,如果将链接直接以字符串展示,点击是不会跳转的,可以使用正则表达式加富文本替换一下

setLinks(text) {
      if (text) {
        const Rexp =
          /(\b(https?|ftp|file):\/\/([-A-Z0-9+&@#%?=~_|!:,.;]*)([-A-Z0-9+&@#%?\/=~_|!:,.;]*)[-A-Z0-9+&@#\/%=~_|])/gi;
        return text.replace(Rexp, "<a href='$1' target='_blank'>$1</a>");
      }
    },

6:最后看几个样式的细节

 长单词换行,以及数字,英文,符号不会换行,还有浏览器默认压缩空格的问题

word-break: break-all; //允许在单词内换行
word-wrap: break-word; //在长单词或 URL 地址内部进行换行
white-space: pre-wrap; //解决浏览器空格合并

设置几个样式就可以了,大家可以去看一下这几个属性的其它用法文章来源地址https://www.toymoban.com/news/detail-400942.html

到了这里,关于vue:聊天对话框的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue中使用element-ui 给按钮绑定一个单击事件,实现点击按钮就弹出一个dialog对话框

    1.需求描述 想要实现点击一个按钮就弹出一个对话框,在对话框中可输入数据进行提交,在点击取消时对话框关闭 2.功能实现 1.创建按钮 在element中把找到按钮的代码放到div里 2.创建对话框 在element中找到dialog对话框对应的代码,把代码粘贴到对应的位置 3.对话框与按钮的绑定

    2024年01月18日
    浏览(73)
  • 小程序对话框的实现方式

    在微信小程序中,有以下几种方式可以实现对话框(Dialog)的展示: 1. wx.showModal :wx.showModal 是微信小程序提供的一个API,用于显示模态对话框。模态对话框是一种阻塞式的对话框,需要用户进行交互后才能关闭。可以通过调用 wx.showModal 方法来显示对话框,并设置标题、内

    2024年02月12日
    浏览(74)
  • vue 使用Dialog对话框使用过程中出现灰色遮罩问题

    问题描述:使用element ui 中的Dialog组件时,弹框出现灰色遮罩,点击弹出弹框按钮时,会显示弹框,但是不会高亮,还需要在点击一次弹框区域才会高亮,如下图: 官方文档解决方法如下图(官网地址:https://element.eleme.cn/#/zh-CN/component/dialog),里面提供了一个append-to-body的属性

    2024年02月14日
    浏览(44)
  • 小程序对话框的几种实现方式

    在微信小程序中,有以下几种方式可以实现对话框(Dialog)的展示: 1. wx.showModal :wx.showModal 是微信小程序提供的一个API,用于显示模态对话框。模态对话框是一种阻塞式的对话框,需要用户进行交互后才能关闭。可以通过调用 wx.showModal 方法来显示对话框,并设置标题、内

    2024年02月10日
    浏览(42)
  • QDialog实现圆角对话框的三种方式

    方式一:通过QBitMap设置控件有效绘制区域(缺点:容易产生锯齿,锯齿来自于QBitMap) Dialog继承Qdialog 设置无边框及背景透明 重写paintEvent 参考链接:https://blog.csdn.net/ajcjldd/article/details/127306630 方式二:QPainter直接绘制圆角矩形(缺点:无法使用qss方式配置背景色,需要根据主

    2024年02月06日
    浏览(48)
  • 【小程序】如何实现从底部弹出对话框

    前面两篇两篇文章介绍了如何在小程序中实现上下滑动效果以及如何用 Canvas 绘制一张图片,这一篇作为前两篇的延续,介绍 如何从底部弹出一个对话框 。 相比而言,底部弹出对话框的功能比较通用,因此非常适合定义成组件(component)。 先来看一下最终实现效果: 首先是

    2024年02月07日
    浏览(35)
  • element-ui实现一个动态布局的对话框

     我把组件上传到npm了,具体使用方法请看:https://gitee.com/zengyanfang/tablelist-way/blob/master/README.md#%E5%8F%82%E6%95%B0 前言:在工作中有各种各样的对话框,最多就是填写信息这些的,一般这样的内容都是el-input输入框,el-select选择框等等之内的,这时我们就可以封装成一个组件,想

    2024年02月01日
    浏览(46)
  • vue中使用el-dialog设置弹窗对话框在前端显示为居中

    废话不多直接上图

    2024年02月01日
    浏览(47)
  • vue3+element-plus Dialog对话框的使用 与 setup 写法的使用

    一. 传统写法不使用setup语法糖 方式一:通过 v-model 的方式实现子组件的显示与隐藏 父组件的内容 子组件内容 方式二:通过为元素绑定 ref 的方式实现子组件的显示与隐藏 父组件的内容 子组件内容 2. setup 语法糖写法 父组件 子组件 总结: 对于传统写法两种方式来看,都有

    2024年02月09日
    浏览(53)
  • 【windows编程之对话框】对话框原理,对话框的创建

    在本章节中我们来讲解Windows/Win32编程中对话框的原理和对话框的创建,我们在前几篇章节中讲解到了普通窗口中回调函数的处理,在普通窗口的窗口消息处理函数(回调函数)中,系统会首先调用我们自己写的回调函数,我们自己编写的回调函数没有处理的消息,才会交给系

    2024年02月03日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包