H5 与AI对话聊天框

 一:最终实现效果展示

 

 二:具体实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文心千帆</title><style>body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section,input,select,option,textarea{margin:0;padding:0;}* {box-sizing: border-box;			}body {background-color: #64a6ff;background-image: linear-gradient(270deg,#2a71ff,#64a6ff);font-family: "Calibri", "Roboto", sans-serif;}.chat_window {position: absolute;width: calc(100% - 20px);max-width: 800px;height: 750px;border-radius: 10px;background-color: #fff;left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);background-color: #f8f8f8;overflow: hidden;}.top_menu {background-color: #fff;width: 100%;padding: 10px 0;height: 40px;box-shadow: 0 1px 30px rgba(0, 0, 0, 0.1);}.top_menu .buttons {margin: 3px 0 0 20px;position: absolute;}.top_menu .buttons .button {width: 12px;height: 12px;border-radius: 50%;display: inline-block;margin-right: 5px;position: relative;}.top_menu .buttons .button.close {background-color: #f5886e;}.top_menu .buttons .button.minimize {background-color: #fdbf68;}.top_menu .buttons .button.maximize {background-color: #a3d063;}.top_menu .title {text-align: center;color: #333;font-size: 14px;}.messages {position: relative;list-style: none;padding: 20px 10px 0 10px;margin: 0;height: 610px;overflow: hidden;overflow-y: scroll;}.messages .message {clear: both;overflow: hidden;margin-bottom: 20px;transition: all 0.5s linear;opacity: 0;}.messages .message.left .avatar {background-color: #f5886e;background-size: 100%;float: left;}.messages .message.left .text_wrapper {background-color: #ffe6cb;margin-left: 20px;}.messages .message.left .text_wrapper::after,.messages .message.left .text_wrapper::before {right: 100%;border-right-color: #ffe6cb;}.messages .message.left .text {color: #c48843;}.messages .message.right .avatar {background-color: #fdbf68;float: right;}.messages .message.right .text_wrapper {background-color: #c7eafc;margin-right: 20px;float: right;}.messages .message.right .text_wrapper::after,.messages .message.right .text_wrapper::before {left: 100%;border-left-color: #c7eafc;}.messages .message.right .text {color: #45829b;}.messages .message.appeared {opacity: 1;}.messages .message .avatar {width: 50px;height: 50px;border-radius: 50%;display: inline-block;}.messages .message .text_wrapper {display: inline-block;padding: 20px;border-radius: 6px;width: calc(100% - 85px);min-width: 100px;position: relative;}.messages .message .text_wrapper::after,.messages .message .text_wrapper:before {top: 18px;border: solid transparent;content: " ";height: 0;width: 0;position: absolute;pointer-events: none;}.messages .message .text_wrapper::after {border-width: 13px;margin-top: 0px;}.messages .message .text_wrapper::before {border-width: 15px;margin-top: -2px;}.messages .message .text_wrapper .text {font-size: 18px;font-weight: 300;}.bottom_wrapper {position: relative;width: 100%;background-color: #fff;padding: 20px;height:100px;position: absolute;bottom: 0;}.bottom_wrapper .message_input_wrapper {display: inline-block;height: 45px;border-radius: 10px;border: 1px solid #bcbdc0;width: calc(100% - 160px);position: relative;padding: 0 20px;}.bottom_wrapper .message_input_wrapper .message_input {border: none;height: 100%;box-sizing: border-box;width: calc(100% - 40px);position: absolute;outline-width: 0;color: #333;background-color: #fff;}.bottom_wrapper .send_message {width: 140px;height: 45px;display: inline-block;border-radius: 10px;background-color: #64a6ff;border: 2px solid #64a6ff;background-image: linear-gradient(90deg,#2a71ff,#64a6ff);color: #fff;cursor: pointer;transition: all 0.2s linear;text-align: center;float: right;}.bottom_wrapper .send_message:hover {color: #fff;background-color: #64a6ff;}.bottom_wrapper .send_message .text {font-size: 18px;font-weight: 300;display: inline-block;line-height: 48px;}.message_template {display: none;}</style>
</head>
<body><div class="chat_window"><div class="top_menu"><div class="buttons"><div class="button close"></div><div class="button minimize"></div><div class="button maximize"></div></div><div class="title">文心千帆</div></div><ul class="messages"></ul><div class="bottom_wrapper clearfix"><div class="message_input_wrapper"><input class="message_input" placeholder="请输入..." /></div><div class="send_message"><div class="icon"></div><div class="text">发送</div></div></div></div><div class="message_template"><li class="message"><div class="avatar"></div><div class="text_wrapper"><div class="text"></div></div></li></div><script src="./static/js/jquery.js"></script><script>(function() {var Message;Message = function(arg) {this.text = arg.text, this.message_side = arg.message_side;this.draw = (function(_this) {return function() {var $message;$message = $($('.message_template').clone().html());$message.addClass(_this.message_side).find('.text').html(_this.text);$('.messages').append($message);return setTimeout(function() {return $message.addClass('appeared');}, 0);};})(this);return this;};$(function() {var getMessageText, message_side, sendMessage;var canInput = false;message_side = 'right';getMessageText = function() {var $message_input;$message_input = $('.message_input');return $message_input.val();};sendMessage = function(text,role) {var $messages, message;if (text.trim() === '') {return;}$('.message_input').val('');$messages = $('.messages');message_side = message_side === 'left' ? 'right' : 'left';message = new Message({text: text,message_side: message_side});message.draw();$messages.animate({scrollTop: $messages.prop('scrollHeight')}, 300);};$('.send_message').click(function(e) {var msg_url = "https://www.XXX.com/active/shop/run";var msg_content = getMessageText();if(msg_content === '' || msg_content.trim().length === 0){return;}sendMessage(msg_content,'user');$('.message_input').attr('readonly', true);// 请求Ajax$.ajax({type: 'POST',url: msg_url,data: {msg: msg_content},dataType: 'json',beforeSend:function(){$(".title").text('正在输入中...');},success: function (resp){$(".title").text('文心千帆');var datas = resp;if (datas.code == 1) {sendMessage(datas.msg,'assistant');} else {alert(datas.msg);}$('.message_input').attr('readonly', false);return false;}});});$('.message_input').keyup(function(e) {if (e.which === 13) {var msg_url = "https://www.XXX.com/active/shop/run";var msg_content = getMessageText();var canInput = true;if(msg_content === '' || msg_content.trim().length === 0){return;}sendMessage(msg_content,'user');$('.message_input').attr('readonly', true);// 请求Ajax$.ajax({type: 'POST',url: msg_url,data: {msg: msg_content},dataType: 'json',beforeSend:function(){$(".title").text('正在输入中...');},success: function (resp){$(".title").text('文心千帆');var datas = resp;if (datas.code == 1) {sendMessage(datas.msg,'assistant');}  else {alert(datas.msg);}$('.message_input').attr('readonly', false);return false;}});}});sendMessage('你好! :)','assistant');});}).call(this);</script>
</body>
</html>

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

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

相关文章

etcd的使用

什么是etcd ETCD是一个分布式、可靠的key-value存储的分布式系统&#xff0c;用于存储分布式系统中的关键数据&#xff1b;当然&#xff0c;它不仅仅用于存储&#xff0c;还提供配置共享及服务发现&#xff1b;基于Go语言实现 。 etcd的特点 完全复制&#xff1a;集群中的每…

opencv-图像处理基础-二值图像

opencv学习01_图像处理基础_二值图像 1&#xff0e;二值图像 二值图像是指仅仅包含黑色和白色两种颜色的图像。 在计算机中&#xff0c;通过一个栅格状排列的数据集&#xff08;矩阵&#xff09;来表示和处理图像。例如&#xff0c;图 2-1 是 一个字母 A 的图像&#xff0c;计算…

Git学习与使用

目录 版本控制、GIT以及SVN常见的版本控制方法本地版本控制集中式版本控制分布式版本控制 SVN与Git的区别 下载与安装Git安装&#xff1a; Git环境配置Git必要的配置 Git的基本理论&#xff08;核心&#xff09;Git项目搭建创建目录 git文件操作忽略文件 使用码云(gitee)辅助学…

RabbitMQ【笔记整理+代码案例】

1. 消息队列 1.1. MQ 的相关概念 1.1.1. 什么是 MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息…

Xcode 更新后 Version 14.3.1报错

File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a Xode版本和pod版本不一致导致&#xff0c;改成一致就可以了 放在podfile文件里,最后一个pod,和最后一个end中间 Showing Recent …

DHCP静态分配IP地址、IP-MAC绑定、静态ARP有哪些区别?

DHCP静态分配IP地址、IP-MAC绑定、静态ARP这三个功能都涉及到IP地址和MAC地址的对应关系&#xff0c;但其应用场景及实现的功能有所不同&#xff0c;如表所示&#xff1a; 原文地址https://support.huawei.com/enterprise/zh/knowledge/EKB1000052241

云计算基础教程(第2版)笔记——基础篇与技术篇介绍

文章目录 前言 第一篇 基础篇 一 绪论 1.1 云计算的概念以及特征 1.1.1云计算的基本概念 1.1.2云计算的基本特征 1.2 云计算发展简史 1.3 三种业务模式介绍 1. 基础设施即服务&#xff08;IaaS&#xff09; 2. 平台即服务&#xff08;PaaS&#xff09; 3. 软…

【高性能、高并发】页面静态化解决方案-OpenResty

OpenResty OpenResty介绍 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台&#xff0c;其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项 用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关 OpenResty通过汇聚各种设计精良的…

css 网站置灰功能

文章目录 filter 属性backdrop-filter 属性mix-blend-mode 属性css 变量低版本浏览器方案 filter 属性 html {filter: gray; /* 兼容 IE6-9 的滤镜 */filter: grayscale(.95); // 对图片进行灰度转换-webkit-filter: grayscale(.95); }backdrop-filter 属性 为一个元素后面区…

ModaHub魔搭社区:开源向量数据库的Milvus怎么读?

Milvus是一个中文词语,意为“Milvus navigate,为智慧找方向,为价值做链接,为创作者做伙伴”。在读这个词语时,可以按照以下方式发音: 首先,我们需要将Milvus这个词语分解成多个音节。根据汉语拼音的规则,可以将其分解为“mi”、“lu”、“su”。 接下来,我们需要根…

matplotlib调整图例 legend 的位置,调整标题 title 位置(像素级别调节,可以调整到图像内部,figure内部)

一、标题调整 1.使用常规方法调整标题位置 1.1常规方法使用loc只能调整标题在图中上部的左、中、右位置&#xff0c;使用的代码如&#xff1a; plt.title("title",locleft)import matplotlib.pyplot as plt x[1,2,3,4,5] y[2,4,6,8,10] loc_select[left,center,ri…

什么是HTML5?HTML5的含义、元素和好处

HTML5是超文本标记语言(HTML)的第五版&#xff0c;网络浏览器使用它来可视化代码。它在网站功能、网页内容开发等方面有一些改进。 HTML的发展 在万维网的早期&#xff0c;主要的网络浏览器创造者&#xff08;例如微软Internet Explorer和Mosaic Netscape&#xff09;开发了特…