h5在线对话页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>HTML5模拟微信聊天界面</title>
    <style>
        /**重置标签默认样式*/
        * {
            margin: 0;
            padding: 0;
            list-style: none;
            font-family: '微软雅黑'
        }
        #container {
            width: 900px;
            height: 1500px;
            background: #eee;
            margin: 160px auto 0;
            position: relative;
            box-shadow: 40px 40px 110px #777;
        }
        .header {
            background: #000;
            height: 80px;
            color: #fff;
            line-height: 68px;
            font-size: 40px;
            padding: 0 20px;
        }
        .footer {
            width: 860px;
            height: 100px;
            background: #666;
            position: absolute;
            bottom: 0;
            padding: 20px;
        }
        .footer input {
            width: 550px;
            height: 90px;
            outline: none;
            font-size: 40px;
            text-indent: 10px;
            position: absolute;
            border-radius: 12px;
            right: 160px;
        }
        .footer span {
            display: inline-block;
            width: 124px;
            height: 96px;
            background: #ccc;
            font-weight: 1800;
            line-height: 90px;
            cursor: pointer;
            text-align: center;
            position: absolute;
            right: 20px;
            border-radius: 12px;
        }
        .footer span:hover {
            color: #fff;
            background: #999;
        }
        #user_face_icon {
            display: inline-block;
            background: red;
            width: 120px;
            height: 120px;
            border-radius: 60px;
            position: absolute;
            bottom: 12px;
            left: 28px;
            cursor: pointer;
            overflow: hidden;
        }
        img {
            width: 120px;
            height: 120px;
        }
        .content {
            font-size: 40px;
            width: 870px;
            height: 1324px;
            overflow: auto;
            padding: 10px;
        }
        .content li {
            margin-top: 20px;
            padding-left: 20px;
            width: 824px;
            display: block;
            clear: both;
            overflow: hidden;
        }
        .content li img {
            float: left;
        }
        .content li span{
            background: #7cfc00;
            padding: 20px;
            border-radius: 20px;
            float: left;
            margin: 12px 20px 0 20px;
            max-width: 620px;
            border: 2px solid #ccc;
            box-shadow: 0 0 6px #ccc;
        }
        .content li img.imgleft {
            float: left;
        }
        .content li img.imgright {
            float: right;
        }
        .content li span.spanleft {
            float: left;
            background: #fff;
        }
        .content li span.spanright {
            float: right;
            background: #7cfc00;
        }
    </style>
    <script>
        window.onload = function(){
            var arrIcon = ['',''];//图片
            var num = 0;     //控制头像改变
            var iNow = -1;    //用来累加改变左右浮动
            var icon = document.getElementById('user_face_icon').getElementsByTagName('img');
            var btn = document.getElementById('btn');
            var text = document.getElementById('text');
            var content = document.getElementsByTagName('ul')[0];
            var img = content.getElementsByTagName('img');
            var span = content.getElementsByTagName('span');

            icon[0].onclick = function(){
                if(num==0){
                    this.src = arrIcon[1];
                    num = 1;
                }else if(num==1){
                    this.src = arrIcon[0];
                    num = 0;
                }
            }
            btn.onclick = function(){
                if(text.value ==''){
                    alert('不能发送空消息');
                }else {
                    content.innerHTML += '<li><img src="'+arrIcon[num]+'"><span>'+text.value+'</span></li>';
                    iNow++;
                    if(num==0){
                        img[iNow].className += 'imgright';
                        span[iNow].className += 'spanright';
                    }else {
                        img[iNow].className += 'imgleft';
                        span[iNow].className += 'spanleft';
                    }
                    text.value = '';
                    // 内容过多时,将滚动条放置到最底端
                    content.scrollTop=content.scrollHeight;
                }
            }
        }
    </script>
</head>
<body>
<div id="container">
    <div class="header">
        <span style="float: left;">聊天界面</span>
        <!--<span style="float: right;">14:21</span>-->
    </div>
    <ul class="content">
        <!--欢迎-->
    </ul>
    <div class="footer">
        <div id="user_face_icon">
            <img src="" alt="">
        </div>
        <input id="text" type="text" placeholder="说点什么吧...">
        <span id="btn">发送</span>
    </div>
</div>
</body>
</html>
### 如何使用 Vue2 构建 AI 对话 H5 页面 构建基于 Vue2 的 AI 对话 H5 页面涉及前端框架的配置以及与后端 API 的集成。以下是实现这一目标的关键部分: #### 1. **项目初始化** 可以利用 `vue-cli` 初始化一个新的 Vue 项目。通过命令行工具安装并设置环境: ```bash npm install -g @vue/cli vue create ai-chat-h5-page cd ai-chat-h5-page ``` 这一步骤会创建一个基础的 Vue 项目结构,其中包含了必要的依赖项。 #### 2. **引入 UI 组件库** 为了快速开发对话界面,可以选择一些流行的组件库来简化样式设计工作。例如 Element-UI 或 Vuetify 提供了丰富的预定义组件。 ```javascript // main.js 中注册全局插件 import Vue from 'vue'; import ElementUI from 'element-ui'; // 替换为其他你喜欢的库名称 import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); ``` 上述代码片段展示了如何加载 Element-UI 并应用其默认主题[^1]。 #### 3. **搭建聊天窗口布局** 在模板文件中定义消息列表区域和输入框控件。下面是一个简单的例子展示基本架构: ```html <template> <div id="app"> <el-card class="chat-box"> <ul class="message-list"> <li v-for="(msg, index) in messages" :key="index">{{ msg }}</li> </ul> <el-input type="textarea" rows="4" placeholder="请输入内容..." v-model="inputMessage" @keyup.enter.native="sendMessage()" ></el-input> <el-button type="primary" size="small" @click="sendMessage()">发送</el-button> </el-card> </div> </template> ``` 这里采用了 ElCard 和 ElInput 来分别表示卡片容器及多行文本域,并监听回车键事件触发 send 方法[^2]。 #### 4. **处理数据交互逻辑** 编写方法用于向服务器提交请求获取响应结果并将结果显示出来。通常情况下我们会调用 RESTful 接口或者 WebSocket 实现即时通讯功能。 ```javascript export default { data() { return { inputMessage: '', messages: [] }; }, methods: { async sendMessage(){ const userInput = this.inputMessage.trim(); if (!userInput.length){ alert('不能为空'); return; } try{ let res = await fetch('/api/chat', {method:'POST', body:userInput}); let replyText = await res.text(); this.messages.push(`You: ${this.inputMessage}`); this.messages.push(`Bot: ${replyText}`); this.inputMessage=''; }catch(err){ console.error("Error during fetching:", err.message); } } } } ``` 此函数先检查是否有有效输入再发起异步 POST 请求到指定 URL 地址上;成功返回后更新本地状态变量完成渲染过程[^3]。 #### 5. **优化用户体验** 考虑加入滚动条自动定位到底部的功能以便于查看最新交流记录。同时也可以增加 loading 动画效果减少等待焦虑感等等细节改进措施提升整体感受度。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值