如何快速实现AI大模型聊天对话框的页面布局?

简介: 本文介绍了如何使用CSS的Flex布局快速实现AI聊天对话框界面。通过`align-self`控制消息气泡左右对齐,结合`max-width`等样式优化显示效果,轻松完成一问一答的对话布局,适用于前端开发中的常见聊天场景。

目录

前言

你好,我是喵喵侠。随着最近两年AI的爆火,市面上出现了各种各样的大模型,而用户和大模型最常见的交互方式就是聊天对话形式,而这个对话框的交互逻辑从IM软件诞生那一刻就已经出现了。对于前端开发来说,巧妙的利用CSS的属性,可以快速的布局一个聊天窗口。下面来一起看看吧!

需求描述

某次我接到一个开发任务,那就是要开发一个AI对话聊天窗口。由于好久没开发类似这样的需求,显得有些生疏,正好研究完成后,可以用这篇文章记录一下。

在这个任务中,需要实现一个基本的聊天界面,用户可以发送消息,并接收来自AI模型的回复。每次用户的提问和AI的回答都将组成一个对话单元,展示在页面上。

由上图可以看到,这种自己的消息在右边,对方的回复在左边的布局还蛮特别的,因为它不是固定朝向某一个方向对齐,而是先是右边后是左边这样的。知道了这个布局要求,接着就是想办法实现了。

实现思路

我的实现核心思路是用flex布局,flex布局是设置flex-direction:column实现垂直排列,然后分别设置子元素的align-self属性。,自己的消息是align-self:flex-end是靠右,AI回复的消息是align-self:flex-start是靠左。这样布局就很快实现了。

我的完整代码示例如下:

<template>
  <div class="chat-container">
    <div class="chat-item" v-for="(message, index) in messages" :key="index">
      <!-- 用户发送的消息 -->
      <div class="chat-ask">{{ message.ask }}</div>
      <!-- AI 回复的消息 -->
      <div class="chat-answer">{{ message.answer }}</div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 用于存储每组对话的数组
      messages: [
        { ask: "你好,喵喵AI!", answer: "你好!有什么我能帮助你的吗?" },
        { ask: "今天天气怎么样?", answer: "今天的天气非常好,阳光明媚。" },
      ],
    };
  },
};
</script>
<style scoped>
.chat-container {
  padding: 20px;
  background-color: #f0f4f8;
}
.chat-item {
  display: flex;
  flex-direction: column;
  margin-bottom: 16px;
}
.chat-ask {
  /* 右对齐,模拟用户的消息 */
  align-self: flex-end;
  background: #419fff;
  color: #fff;
  border-radius: 12px 2px 12px 12px;
  padding: 8px;
  max-width: 80%; /* 确保内容不超过屏幕宽度 */
  word-break: break-all; /* 长单词自动换行 */
  margin-bottom: 10px;
}
.chat-answer {
  /* 左对齐,模拟AI的回复 */
  align-self: flex-start;
  background: #daedff;
  color: #333;
  border-radius: 12px;
  padding: 8px;
  max-width: 80%; /* 确保内容不超过屏幕宽度 */
  word-break: break-all; /* 长单词自动换行 */
}
</style>

我上面写的每个对话气泡,都设置了max-width,这是为了防止消息宽度超出屏幕,同时也适配了消息长度比较小的情况。

如果要开发的不是AI聊天一问一答的形式,而是通过WebSocket的实时聊天室这样的,那么这个数组对下的结构就不太使用了。你可以给别人的消息标记一个类名是right-msg,给自己的消息标记为left-msg,这样你设置了align-self后布局还是一样的效果。

上面的案例只是实现了对话框对话部分的布局,具体的发送消息框和按钮,以及发送消息后容器滚动到指定位置等细节,可以自行完善。

总结

通过合理使用Flexbox布局,可以很轻松的实现一个AI聊天对话框的页面布局。该布局不仅直观简洁,而且易于扩展和维护。无论是开发简单的聊天应用,还是集成复杂的AI模型,这样的布局都能提供良好的用户体验。希望能对你有所帮助,如果你有别的好用的方法,可以在评论区留言。

目录
相关文章
|
移动开发 缓存 JavaScript
2021最新阿里代码规范(前端篇)
2021最新阿里代码规范(前端篇)
60703 11
2021最新阿里代码规范(前端篇)
|
9月前
|
人工智能 移动开发 数据可视化
阿里云百炼 UI 设计器:让 AI 对话秒变可交互界面
阿里云百炼 UI 设计器的使命,是以低门槛、高效率的方式,让开发者与非技术人员也能在极短时间内,完成专业级 AI 应用的构建、发布与运行,从而加速 AI 技术的业务落地与价值兑现。未来,UI 设计器将持续围绕能搭、搭好、好搭三大方向打磨能力。
2723 0
|
8月前
|
前端开发 小程序 JavaScript
A2UI 规范与 AG-UI 协议:打造高效协同的界面开发体系
A2UI规范与AG-UI协议构建“设计-开发”协同闭环:前者统一视觉与交互标准,后者定义组件通信与跨平台适配,二者融合提升协作效率、保障体验一致,推动界面开发向标准化、可复用、高效能演进。
3417 0
|
9月前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
5293 43
|
7月前
|
SQL 人工智能 Java
告别传统 Text-to-SQL:基于 Spring AI Alibaba 的数据分析智能体 DataAgent 深度解析
DataAgent是基于Spring AI Alibaba生态构建的企业级AI数据分析师,融合NL2SQL、多智能体协作与RAG技术,支持多数据源分析、自动纠错与可视化报告生成,让业务人员零代码获取深度数据洞察。
3537 42
告别传统 Text-to-SQL:基于 Spring AI Alibaba 的数据分析智能体 DataAgent 深度解析
|
11月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
3442 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
7月前
|
人工智能 前端开发 JavaScript
前端如何借助 AI 工具提升开发效率
本文介绍了前端开发中如何借助AI工具提升效率,涵盖代码生成、数据处理与UI组件自动生成等应用场景,并结合实际案例展示AI在转换复杂数据格式和生成Element-UI表单中的实践效果,帮助开发者减少重复劳动,提高开发速度与准确性。
1119 0
|
7月前
|
Linux Android开发 iOS开发
新一代的抓包神器——Reqable
本文介绍全平台抓包工具Reqable,支持Windows、Mac、Linux及Android、iOS,操作简单,无需复杂配置,可轻松抓取HTTP/HTTPS和WebSocket请求,适合开发者快速分析数据,提升调试效率。
3964 0

热门文章

最新文章