基于vue实现网页聊天室样式

由于近期DS非常火热,网页聊天框这个老生常谈的需求又被揪出来集成到网页中

思路:先实现大体框架,承载聊天信息的盒子与发送消息的盒子

<template>
    <div id="chat_components_box">
        <div id="msg_box">
            <div class="single_msg_box" v-for="item in msg_data" :key="item.id">
                <div :class="['avatar', item.className]" v-if="item.avatar_directions == 'left'"></div>
                <div
                    :class="item.className == 'user' ? ['message', 'right_msg', 'user_msg'] : item.avatar_directions == 'right' ? ['message', 'right_msg'] : ['message', 'left_msg']">
                    <pre>{{ item.msg }}</pre>
                    <div class="image_box" v-if="item.show_components">
                    </div>
                </div>
                <div :class="['avatar', item.className]" v-if="item.avatar_directions == 'right'"></div>
            </div>
        </div>
        <div id="send_box">
            <div id="user_avatar"></div>
            <div id="user_input"><input type="text" placeholder="输入问题或'/'获取提示词" v-model="user_input_msg"></div>
            <div id="user_send_msg" @click="user_send_msg"></div>
        </div>
    </div>
</template>

这里由于要对本人发出的消息进行单独处理,以及需要区分发送消息还是接收消息,还需要在聊天框中插入图片或其他组件,所以充斥了许多的vif判断

创建好我们的网页结构之后我们定义变量

let user_input_msg = ref("")
const msg_data = reactive([
    {
        id: 0,
        avatar_directions: 'right',
        className: "user",
        msg: "access",
        show_components: false
    }
])

定义点击发送消息事件

const user_send_msg = () => {
    msg_data.push({
        id: msg_data.length,
        avatar_directions: 'right',
        className: "user",
        msg: user_input_msg.value
    })
    user_input_msg.value = ''
}

定义完成后看成品

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值