20240613每日前端-------vue3实现聊天室(二)

看效果图:

在这里插入图片描述
今天具体讲下,聊天消息框的布局:

消息框大致分为两块:

  • 别人发来的消息
  • 自己发出的消息

元素如下:

  • 头像
  • 消息
  • 发送人+发送时间
    在这里插入图片描述
    html代码设计如下:
    整体先用一个div作为外边框,观察上面元素很好判断出来,(发送人+发送时间)+(你或者我)+消息内容。共同组合成一行元素。那么我们在父级div下面可以再加一层div用来循环每一行的数据内容。
    又根据图形判断出来,发送人+发送时间室单独一行,你或者我+消息内容是单独一行。这样,就再写两个div分别用来区分上下两个小行。
    自此,整体html架构元素完成。
<div class="msg-container"><div v-for="(item,index) in msgList"><div :class="['msg-one',item.fromId == currentUser.userId ?  'message-right' : 'message-left']"><div><div class="msg-header"><!-- 时间 --><div class="msg-date msg-user" style="margin-left: 5px;margin-right: 5px">{{item.fromName}}  {{item.fromTime}}</div></div><div :class="['msg-body', item.fromId == currentUser.userId ?  'msg-body-my' : '']"><!-- 头像 --><div><n-avatar object-fit="cover":size="40"lazystyle="cursor: pointer"/></div><!-- 文本消息 --><div class="message">{{item.message}}</div></div></div></div></div></div>

基于以上代码,展开说一下样式的设计。
1、设置总体背景色,设置整体聊天框,得出高度滚动条。

  .msg-container {background: var(--midWhite);overflow-y: scroll;height: calc(100% - 240px);}

2、设置外边框div为flex布局,增加元素排版方式为align-items: flex-start;(align-items设置flex子项在每个flex行的交叉轴上的默认对齐方式。)
在这里插入图片描述
增加flex-direction:column (设置主轴的方向从上到下)
在这里插入图片描述

  .msg-one {margin: 15px 20px;display: flex;align-items: flex-start;flex-direction: column;}

3、设置右边消息,使得容器内容,flex-direction: row-reverse;(从右往走排版)

  .message-right {flex-direction: row-reverse;}

4、以上即可完成大体样式排版。
全部样式代码如下:

 .msg-body-my{flex-direction: row-reverse;}.msg-body{display: flex;align-items: flex-start;}.msg-container {background: var(--midWhite);overflow-y: scroll;height: calc(100% - 240px);}.msg-one {margin: 15px 20px;display: flex;align-items: flex-start;flex-direction: column;}.message {max-width: 50%;padding: 5px 10px;line-height: 25px;word-break: break-all;position: relative;color: var(--black);margin: 0 12px 0 12px;}.message::before {content: "";position: absolute;width: 0;height: 0;border: 3px solid;top: 0;}.message-left .message {background-color: var(--white);border-radius: 0 4px 4px 4px;}.message-left .message::before {left: -6px;border-color: var(--white) var(--white) transparent transparent;}.message-right {flex-direction: row-reverse;}.message-right .message {background-color: var(--messageColor);border-radius: 4px 0 4px 4px;}.message-right .message::before {right: -6px;border-color: var(--messageColor) transparent transparent var(--messageColor);}.msg-date, .msg-user {font-size: 12px;color: var(--greyFont);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型:分本分割模型

目录 一、文本分割 二、BERT文本分割模型 三、部署模型 3.1 下载模型 3.2 安装依赖 3.3 部署模型 3.4 运行服务 四、测试模型 一、文本分割 文本分割是自然语言处理中的一项基础任务&#xff0c;目标是将连续的文本切分成有意义的片段&#xff0c;这些片段可以是句子、…

关于dwarf 中 DW_AT_data_member_location 的理解

1、用python elftool解析结构体的成员计算偏移的时候&#xff0c;会用到如下结构体&#xff1b; 2、data member location 是可变长的&#xff08;uleb128编码&#xff09;&#xff1b;DW_OP_plus_uconst是操作码&#xff1b; uleb128编码&#xff0c;正如其名&#xff0c;是小…

160. 相交链表 (Swift版本)

题目描述 最简单直接的解法 遍历 headA 的所有节点, 看 headB 中是否有相交的节点 /*** Definition for singly-linked list.* public class ListNode {* public var val: Int* public var next: ListNode?* public init(_ val: Int) {* self.val val*…

《C++程序设计》银行管理系统

莫思身外无穷事 且尽生前有限杯 我们先来看一下项目需求&#xff1a; 【场景】 在日常生活中&#xff0c;我们普遍接触到窗口服务系统&#xff0c;如到银行柜台办理业务、景区现场购买门票等。当需要办理业务的顾客数超过窗口数量时&#xff0c;我们需遵循排队等待原则。 【需…

同三维T80005EH4 H.265 4路高清HDMI编码器

同三维T80005EH4 H.265 4路高清HDMI编码器 4路HDMI输入2路3.5音频输入&#xff0c;第1路和第2路HDMI可支持4K30&#xff0c;其它支持高清1080P60 产品简介&#xff1a; 同三维T80005EH4 4路HDMI高清H.265编码器采用最新高效H.265高清数字视频压缩技术&#xff0c;具备稳定…

使用uniapp设置tabbar的角标和移除tabbar的角标

使用场景描述 在一进入到小程序的时候就要将用户在购物车中添加的商品总数&#xff0c;要以角标的形式显示在tababr中。 代码实现 //index.vue<script setup> import { onLoad } from dcloudio/uni-apponLoad(()>{uni.setTabBarBadge({index: 1,text: 5 //为了实现…

计算机网络 —— 运输层(UDP和TCP)

计算机网络 —— 运输层&#xff08;UDP和TCP&#xff09; UDPTCPUDP和TCP的异同点相同点不同点 我们今天来看运输层的两个重要的协议——UDP和TCP UDP UDP&#xff0c;全称为用户数据报协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;是互联网中一种核心的…

预告|博睿数据将受邀出席GOPS全球运维大会北京站!

GOPS全球运维大会作为国内外运维领域最具影响力的技术盛会之一&#xff0c;旨在汇聚全球运维精英&#xff0c;分享运维领域的前沿技术、实践经验与创新理念。6月28日&#xff0c;博睿数据&#xff08;bonree.com&#xff0c;股票代码688229&#xff09;将受邀出席第二十三届 GO…

OpenCV查找图像中的轮廓并且展示

1、查找轮廓随机用不同的颜色画出 import cv2 import numpy as npdef get_contour_colors(num_contours):# 定义颜色表 (BGR 格式)colors [(255, 0, 0),(255, 50, 0),(255, 100, 0),(255, 150, 0),(255, 200, 0),(255, 255, 0),(200, 255, 0),(150, 255, 0),(100, 255, 0),(5…

App推广效果分析,Xinstall助力精准优化

App推广效果分析&#xff1a;Xinstall助力精准优化 在App推广的激烈竞争中&#xff0c;如何确保每一次推广活动都能带来最佳效果&#xff0c;是每个运营者都关心的问题。Xinstall作为一款专业的App推广工具&#xff0c;不仅提供了全方位的推广支持&#xff0c;还能通过精准的数…

毕业年薪20w起!25届最近5年南京信息工程大学自动化考研院校分析

南京信息工程大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近4年考研分数情况 四、近4年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、…

SortTable.js + vxe-table 实现多条批量排序

环境: vue3+vxe-table+sorttable.js 功能: 实现表格拖动排序,支持单条排序,多条排序 实现思路: sorttable.js官网只有单条排序的例子,网上也都是简单的使用,想要实现多条排序,就要结合着表格的复选框功能,在对其勾选的行统一计算! 最终效果: 实现代码 <template>…

PCIE的吞吐量如何计算和记忆诀窍?

简介&#xff1a; PCIe标准中的性能参数有好几个&#xff0c;比如设备的带宽和吞吐量是多少&#xff1f;传输速率&#xff1f; 百度百科上&#xff0c;PCIE标准的传输速率与带宽对应表如下&#xff08;表中速率为单向速率&#xff09;。网上有些数据是双向的&#xff0c;性能数…

2024面试自动化测试面试题【含答案+文档】

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、你做了几年的测试、自动化测试&#xff0c;说一下 selenium 的原理是什么&#xff1f; 我做了五年的测试&#xff0c;1年的自动化测试&#xff1b; selenium …

怎么把日常的文件做二维码?适用excel、word、pdf制作二维码的方法

文件转换成二维码是将文件转成一个链接&#xff0c;将链接做成二维码之后&#xff0c;扫码就可以访问该链接中的文件内容&#xff0c;通过这种方式来实现文件的快速分享。将文件生成二维码能够随时修改内容&#xff0c;可以更新替换当前文件&#xff0c;不断的通过一个二维码来…

【开发环境】PX4无人机实物使用视觉或运动捕捉系统进行位置估计

PX4无人机实物使用视觉或运动捕捉系统进行位置估计 PX4中关于外部位置信息的MAVLink话题参考坐标系EKF2调整配置参数调整EKF2_EV_DELAY参数 与ROS共同使用将OptiTrack MoCap系统提供的姿态数据导入ROSMotive MoCap软件的步骤将姿态数据导入ROS重新映射姿态数据 将姿态数据转发到…

Solr7.4.0报错org.apache.solr.common.SolrException

文章目录 org.apache.solr.common.SolrException: Exception writing document id MATERIAL-99598435990497269125316 to the index; possible analysis error: cannot change DocValues type from NUMERIC to SORTED_NUMERIC for field "opt_time"Exception writing…

无法在地址[localhost]和端口[8005]上创建服务器关闭套接字(基本端口[8005]和偏移量[0])

今天小伙伴问我一个问题&#xff0c;说是新服务器启动应用&#xff0c;报了一个错误&#xff0c;如下&#xff1a; 一开始我怀疑是端口被占用 经过排查端口没有被占用&#xff0c;然后我怀疑localhost解析有问题 经过 ping localhost 后&#xff0c;得到以下结果到这里很明…

场外期权能不能开户?场外期权在哪里开?

今天带你了解场外期权能不能开户&#xff1f;场外期权在哪里开&#xff1f;近年来&#xff0c;场外期权交易在金融市场上逐渐盛行起来。有许多人对于场外期权的开户问题感到困惑。 场外期权能不能开户&#xff1f; 资质要求&#xff1a; 个人投资者需要具备一定的金融知识和投…

(三十九)Vue之集中式的状态管理机制Vuex

目录 概念vuex的核心概念State&#xff08;状态&#xff09;Getters&#xff08;获取器&#xff09;Mutations&#xff08;突变&#xff09;Actions&#xff08;动作&#xff09; 搭建vuex环境基本使用getters的使用 上一篇&#xff1a;&#xff08;三十八&#xff09;Vue之插槽…