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*…

Redis宣布商用后,Redis国产化替代方案有那些?

一、背景 Redis作为使用最为广泛的开源缓存中间件&#xff0c;现已成为IT开发中必不可少的核心组件。官方修改协议印证了“开源”不意味着“无偿使用”&#xff0c;相关限制或将对基于开源Redis提供中间件产品的厂商&#xff0c;及提供Redis服务的云厂商产生一定影响。 二、国…

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

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

2024年深圳市工业和信息化局智能传感器扶持计划项目申报指南

一、资助的项目类别 &#xff08;一&#xff09;标准体系认证补贴项目&#xff1a;支持智能传感器相关企业开展包括但不限于AEC-Q100&#xff08;IC&#xff09;、101&#xff08;分立器件&#xff09;、102&#xff08;光电分立器件&#xff09;、103&#xff08;传感器&…

同三维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…

【VUE】VUE安装包,怎么检查全部依赖包版本?

VUE安装包&#xff0c;怎么检查全部依赖包版本 edit 显示草稿 volume_up 检查Vue项目中所有依赖包的版本&#xff0c;可以使用以下工具和方法&#xff1a; 1. 使用npm命令 使用 npm ls 命令可以列出项目中所有已安装的依赖包及其版本。使用 npm list --depth1 命令可以列…

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…

【笔记】APN设置中ApnEditor在新建和编辑的代码实现差异

问题 新增和编辑APN都是使用ApnEditorActivity&#xff0c;但是进入的方式不同&#xff0c;如果APN做成插件的话&#xff0c;点击添加按钮的时候会提示“选择要使用的应用”&#xff0c;因为Settings本身也有这个界面被安装进去了 。 新增功能通过Intent.ACTION_INSERT跳转界…

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>…

机器学习的分类

机器学习分类 ​ 机器学习是人工智能的一个分支&#xff0c;它使计算机系统能够从数据中学习并做出决策或预测。机器学习&#xff08;Machine Learning&#xff09;是一种基于数据驱动的方法&#xff0c;旨在通过自动化的统计模型和算法从数据中学习和提取模式&#xff0c;以进…

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;不断的通过一个二维码来…