uniapp实现聊天消息触,vue3和vue2实现聊天消息触底 scrollTop ,scrollHeight Pc端H5端都适用

news2024/11/26 20:35:10

uniapp触底SDN链接如下(本人的另一篇博客)

uniapp聊天时时触底链接
Pc端在这里插入图片描述
模拟手机端H5
在这里插入图片描述

vue3写法

<template>
  <div>
    <!-- 聊天窗体 -->
    <div class="test" id="gundong">
      <div class="text" v-for="p in chat">
        {{ p.info }}
      </div>
    </div>
    <div style="display: flex">
      <!-- 输入窗体 -->
      <el-input v-model="text"></el-input>
      <!-- 确认按钮 -->
      <el-button @click="take">发送</el-button>
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref, nextTick, onMounted, watch, HtmlHTMLAttributes } from "vue";
import { storeToRefs } from "pinia";
import { userCeshi } from "@/pinia/module/user-ceshi";
import { userInfoCeshi } from "@/pinia/module/userInfo-ceshi";
const text = ref<any>("");
const chat = ref<any[]>([
  { info: "---点赞关注---" },
  { info: "---点赞关注---" },
  { info: "---点赞关注---" },
  { info: "---点赞关注---" },
  { info: "---点赞关注---" },
]);
const take = () => {
  text.value != "" && chat.value.push({ info: ` ${text.value}` });
  text.value = "";
  // 核心代码
  // 滚动
  nextTick(() => {
    let msg = document.getElementById("gundong"); // 获取对象
    //     scrollTop是滚动条的当前高度。默认是0
    // scrollHeight是滚动条的整体高度
    // 只要动态修改滚动条到顶部的距离等于div的高度,那么久实现滚动条定位在底部了。
    (msg as any).scrollTop = (msg as any).scrollHeight; // 滚动高度
  });
};
take();
</script>

<style scoped lang="less">
.test {
  border: 1px solid red;
  padding: 10px;
  overflow: hidden;
  box-sizing: border-box;
  width: 100%;
  height: 300px;
  overflow: auto;
  .text {
    margin-left: auto;
    width: 200px;
    height: auto;
    background-color: black;
    border-radius: 10px;
    color: #fff;
    margin-top: 10px;
  }
}
</style>

vue2写法

 <template>
  <div>
    <!-- 聊天窗体 -->
    <div class="test" id="gundong">
      <div class="text" v-for="p in chat">
        {{ p.info }}
      </div>
    </div>
    <div style="display: flex">
      <!-- 输入窗体 -->
      <el-input v-model="text"></el-input>
      <!-- 确认按钮 -->
      <el-button type="primary" @click="take">发送</el-button>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      text: "",
      chat: [
        { info: "---点赞关注---" },
        { info: "---点赞关注---" },
        { info: "---点赞关注---" },
        { info: "---点赞关注---" },
        { info: "---点赞关注---" },
      ],
    };
  },
  methods: {
    task() {
      // 这段代码不好使就使用下面的if(){}代码
      this.text != "" && this.chat.push({ info: ` ${text.value}` });
      this.text = "";
      this.$nextTick(() => {
        let msg = document.getElementById("gundong"); // 获取对象
        //     scrollTop是滚动条的当前高度。默认是0
        // scrollHeight是滚动条的整体高度
        // 只要动态修改滚动条到顶部的距离等于div的高度,那么久实现滚动条定位在底部了。
        msg.scrollTop = msg.scrollHeight; // 滚动高度
      });

      // if (this.text.length > 0) {
      //   this.chat.push({ info: ` ${text.value}` });
      //   this.text = "";
      //   // 核心代码
      //   // 滚动
      //   this.$nextTick(() => {
      //     let msg = document.getElementById("gundong"); // 获取对象

      //     msg.scrollTop = msg.scrollHeight; // 滚动高度
      //   });
      // }
    },
  },
};
</script>

<style scoped lang="less">
.test {
  border: 1px solid red;
  padding: 10px;
  overflow: hidden;
  box-sizing: border-box;
  width: 100%;
  height: 300px;
  overflow: auto;
  .text {
    margin-left: auto;
    width: 200px;
    height: auto;
    background-color: black;
    border-radius: 10px;
    color: #fff;
    margin-top: 10px;
  }
}
</style>

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

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

相关文章

Html基础知识学习——兼容问题与解决方法

文章目录 1.计算一定要精确&#xff0c;不要让内容的宽高超出我们设置的宽高&#xff0c;在IE6下内容会撑开设置好的宽高2.元素浮动&#xff0c;宽度需要内容撑开&#xff0c;就给里面的块元素都加浮动3.在ie6.ie7下元素要浮动并在同一行 就给这些元素都加浮动4.注意标签嵌套规…

C# WPF实现动画渐入暗黑明亮主题切换效果

C# WPF实现动画渐入暗黑明亮主题切换效果 效果图如下最近在Bilibili的桌面端看到一个黑白主题切换的效果感觉,挺有意思。于是我使用WPF尝试实现该效果。 主要的切换效果,基本实现不过还存在一些小瑕疵,比如字体等笔刷不能跟随动画进入进行切换。因为Bilibili的客户端是用el…

【算法 -- LeetCode】(018) 四数之和

1、题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&#xff1a; …

【Hadoop 01】简介

1 Hadoop 简介 Hadoop适合海量数据分布式存储和分布式计算 Hadoop 3.x的细节优化&#xff1a; Java改为支持8及以上HDFS支持纠删码HDFS支持多NameNodeMR任务级本地优化多重服务默认端口变更 Hadoop主要包含三大组件&#xff1a;HDFSMapReduceYARN HDFS负责海量数据的分布式存…

HttpRunner自动化之跨文件传递变量值输出变量值

跨文件传递&输出变量值 output: 输出变量值,此参数在httprunner2.2版本的时候被 export 代替&#xff0c;跨文件传递参数的功能在httprunner2.2之后不生效。&#xff08;但是实际测试过程中&#xff0c;还可以使用跨文件功能&#xff09; export: 输出变量值,且可以跨文件…

(黑客)网络安全靠自学?你不要命啦?

引言⚡ ✈️网络安全&#xff0c;顾名思义&#xff0c;无安全&#xff0c;不网络。现如今&#xff0c;安全行业飞速发展&#xff0c;我们呼吁专业化的 就职人员 与 大学生 &#xff0c;而你&#xff0c;认为自己有资格当黑客吗&#xff1f; ✒️本文面向所有信息安全领域的初学…

2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同?

2023-07-14&#xff1a;讲一讲Kafka与RocketMQ中存储设计的异同&#xff1f; 答案2023-07-14&#xff1a; 在Kafka中&#xff0c;文件的布局采用了Topic/Partition的方式&#xff0c;每个分区对应一个物理文件夹&#xff0c;且在分区文件级别上实现了顺序写入。然而&#xff0…

springboot逍遥大药房管理系统

逍遥大药房管理系统的需求和管理上的不断提升&#xff0c;逍遥大药房管理的潜力将无限扩大&#xff0c;逍遥大药房管理系统在现代社会上被广泛关注&#xff0c;本系统对此进行总体分析&#xff0c;将逍遥大药房信息管理的发展提供参考。逍遥大药房管理系统对逍遥大药房管理方面…

xxl-job的简单使用

xxl-job是一个分布式任务调度框架&#xff0c;在Spring中&#xff0c;提供有任务调度的注解功能&#xff0c;在之前的项目中&#xff0c;非分布式任务都可以直接使用Spring框架提供的Scheduled注解和EnableScheduling注解来实现定时任务。 EnableScheduling注解加载项目启动类上…

Azure Kinect DK 在设备管理器找不到此设备

参考 Azure Kinect DK 在设备管理器找不到此设备_Thomas_yx的博客-CSDN博客 type-c------------------type-c 接电脑&#xff0c;数据传输 圆------------------usb 电脑线

RabbitMQ ---- 交换机

RabbitMQ ---- 交换机 1. Exchanges1.1 Exchanges 概念1.2 Exchanges 的类型1.3 无名 exchange 2. 临时队列3. 绑定&#xff08;bindings&#xff09;4. Fanout4.1 Fanout 介绍4.2 Fanout 实战 5. Direct exchange5.1 回顾5.2 Direct exchange 介绍5.3 多重绑定5.4 实战 6. Top…

svn清理时提示:没有校验和记录,因此不能从原始内容仓库中安装

1.进入官网 https://www.sqlite.org/download.html 2.找到sqlite-dll-win32-x86-3410200.zip下载 3.解压后复制sqlite3.exe到无法清理svn的那个路径地下的.svn文件夹 如果找不到.svn文件夹&#xff0c;勾选下方 4.在当前文件夹下运行cmd执行以下语句 sqlite3 wc.db &quo…

基于Python情感分析制定交易策略

大家好&#xff0c;在快速发展的金融市场环境中&#xff0c;交易者不断寻找创新的方法来获得竞争优势。情感分析已经成为一种有价值的工具&#xff0c;通过分析文本数据&#xff0c;如新闻文章和社交媒体帖子等&#xff0c;来衡量市场情绪。 通过将情感分析纳入到交易策略中&a…

使用wxPython和pillow开发拼图小游戏(四)

上一篇介绍了使用本地图片来初始化游戏的方法&#xff0c;通过前边三篇&#xff0c;该小游戏的主要内容差不多介绍完了&#xff0c;最后这一篇来介绍下游戏用时的计算、重置游戏和关闭窗口事件处理 游戏用时的计算 对于游戏用时的记录&#xff0c;看过前几篇的小伙伴可能也发现…

MS6363三通道 6 阶高清视频滤波驱动

芯片概述 MS6363 是一个 3 通道视频缓冲器&#xff0c;它内部集成 6dB 增益的轨到轨输出驱动器和 6 阶输出重建 滤波器。MS6363 的-3dB 带宽为 35MHz&#xff0c;压摆率为 160V/us。MS6363 比无源 LC 滤波器与外加驱动的 解决方案能提供更好的图像质量。它单电源供电范围为2…

2023年11月软考中级软件评测师报名考试时间-入口-条件-流程

软考中级软件评测师报名时间&#xff1a; 海南2023下半年软考中级软件评测师报名时间&#xff1a;8月14日至8月21日 四川2023下半年软考中级软件评测师报名时间&#xff1a;8月14日至8月30日 黑龙江2023下半年软考中级软件评测师报名时间&#xff1a;8月16日至8月22日 广西…

【PDF】html/dom生成pdf

1、简要描述 上一篇博客主要讲的是pdf文件转换成canvas&#xff0c;然后进行相关的操作。本篇博客主要讲html中dom如何生成pdf文件&#xff08;前端生成pdf&#xff09;&#xff0c;后端生成pdf当然也可以&#xff0c;原理也是将html网页通过后端服务导出成pdf&#xff0c;不深…

LaTex使用bib文件引用参考文献(最简单有效!!!)

引言 在写文章&#xff0c;尤其是科技类文章的时候&#xff0c;需要引用大量参考文献。如果按照本身给的模板一个个填入是十分浪费时间的&#xff0c;并且后面引用格式或者顺序有改变的话改动很大。所以我一般习惯于用Bib文件直接导入&#xff0c;接下来就是介绍使用Bib文件导…

密码学学习笔记(十一):压缩函数 - Davies–Meyer结构

密码学中压缩函数是指将输入的任意长度消息压缩为固定长度输出的函数。压缩函数以两个特定长度的数据为输入&#xff0c;产生与其中一个输入大小相同的输出。简单来说就是它接受一些较长的数据&#xff0c;输出更短的数据。 压缩函数接收长度为X和Y的两个不同输入&#xff0c;并…