基于uniapp写一个优美的多人聊天页面
时间: 2024-02-10 17:10:36 浏览: 83
好的,以下是基于uniapp写一个优美的多人聊天页面的示例代码:
template:
```
<template>
<view class="chat-page">
<view class="chat-window" ref="chatWindow">
<view v-for="(message, index) in messages" :key="index" class="message" :class="{'my-message': message.isMe}">
<view class="avatar">
<image :src="message.avatarUrl" mode="aspectFill"></image>
</view>
<view class="bubble">
<view class="content">{{ message.content }}</view>
<view class="time">{{ message.time }}</view>
</view>
</view>
<view ref="bottom"></view>
</view>
<view class="input-box">
<input type="text" placeholder="请输入消息" @confirm="sendMessage" v-model="inputValue"></input>
<button type="primary" @click="sendMessage">发送</button>
</view>
</view>
</template>
```
script:
```
<script>
export default {
data() {
return {
inputValue: '',
messages: [
{
id: '1',
avatarUrl: '/static/avatar1.png',
content: '你好啊',
time: '2021-01-01 12:00:00',
isMe: false
},
{
id: '2',
avatarUrl: '/static/avatar2.png',
content: '你好,有什么需要帮忙的吗?',
time: '2021-01-01 12:01:00',
isMe: true
}
]
}
},
methods: {
sendMessage() {
if (!this.inputValue) {
return;
}
const message = {
id: Math.random().toString(16).slice(2),
avatarUrl: '/static/avatar3.png',
content: this.inputValue,
time: new Date().toLocaleString(),
isMe: true
}
this.messages.push(message);
this.inputValue = '';
this.$nextTick(() => {
const bottom = this.$refs.bottom;
uni.pageScrollTo({
scrollTop: bottom.offsetTop
});
});
}
}
}
</script>
```
style:
```
<style>
.chat-page {
height: 100%;
display: flex;
flex-direction: column;
}
.chat-window {
flex: 1;
overflow-y: scroll;
padding: 20rpx;
}
.message {
display: flex;
margin-bottom: 20rpx;
}
.message .avatar {
width: 80rpx;
height: 80rpx;
margin-right: 20rpx;
}
.message .avatar image {
width: 100%;
height: 100%;
border-radius: 50%;
}
.message .bubble {
flex: 1;
background-color: #f5f5f5;
border-radius: 20rpx;
padding: 20rpx;
}
.message .content {
font-size: 32rpx;
}
.message .time {
font-size: 26rpx;
color: #999;
margin-top: 10rpx;
}
.my-message .avatar {
margin-left: auto;
margin-right: 0;
}
.my-message .bubble {
background-color: #4caf50;
color: #fff;
}
.my-message .time {
color: #eee;
}
.input-box {
display: flex;
align-items: center;
padding: 20rpx;
}
.input-box input {
flex: 1;
height: 60rpx;
margin-right: 20rpx;
border-radius: 30rpx;
padding-left: 20rpx;
font-size: 32rpx;
}
.input-box button {
width: 180rpx;
height: 60rpx;
border-radius: 30rpx;
font-size: 32rpx;
color: #fff;
background-color: #4caf50;
}
</style>
```
这个示例代码实现了一个简单的多人聊天页面,包括聊天窗口和输入框。在聊天窗口中,可以显示发送和接收的消息,每个消息包括头像、内容和时间。在输入框中,用户可以输入消息并发送,发送后页面会自动滚动到最新的消息。
您可以根据自己的需求修改样式和功能,例如添加用户名、消息类型等。
阅读全文