通过vue.js完成聊天
- 机器人接口
- css代码
* {
margin: 0;
padding: 0;
list-style: none;
font-family: '微软雅黑';
}
#container {
width: 450px;
height: 780px;
background: #eee;
margin: 20px auto 0;
position: relative;
box-shadow: 20px 20px 55px #777;
}
.header {
background: #000;
height: 40px;
color: #fff;
line-height: 34px;
font-size: 20px;
padding: 0 10px;
}
.footer {
width: 430px;
height: 50px;
background: #666;
position: absolute;
bottom: 0;
padding: 10px;
}
.footer input {
width: 275px;
height: 45px;
outline: none;
font-size: 20px;
text-indent: 10px;
position: absolute;
border-radius: 6px;
right: 80px;
}
.footer span {
display: inline-block;
width: 62px;
height: 48px;
background: #ccc;
font-weight: 900;
line-height: 45px;
cursor: pointer;
text-align: center;
position: absolute;
right: 10px;
border-radius: 6px;
}
.footer span:hover {
color: #fff;
background: #999;
}
#user_face_icon {
display: inline-block;
background: red;
width: 60px;
height: 60px;
border-radius: 30px;
position: absolute;
bottom: 6px;
left: 14px;
cursor: pointer;
overflow: hidden;
}
img {
width: 60px;
height: 60px;
}
.content {
font-size: 20px;
width: 435px;
height: 662px;
overflow: auto;
padding: 5px;
}
.content li {
margin-top: 10px;
padding-left: 10px;
width: 412px;
display: block;
clear: both;
overflow: hidden;
}
.content li img {
float: left;
}
.content li span {
background: #7cfc00;
padding: 10px;
border-radius: 10px;
float: left;
margin: 6px 10px 0 10px;
max-width: 310px;
border: 1px solid #ccc;
box-shadow: 0 0 3px #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;
}
<div id="container">
<div class="header">
<span style="float: left;">机器人</span>
<span style="float: right;"></span>
</div>
<ul class="content">
<li>
<img src="./img/right.png" class="imgright" /><span class="spanright">你好吗?</span>
</li>
<li>
<img src="./img/left.png" class="imgleft" /><span class="spanleft">不好</span>
</li>
<li v-for='item in list'>
<img :src="item.isMe?'./img/right.png':'./img/left.png'" :class="item.isMe?'imgright':'imgleft'" /><span :class="item.isMe?'spanright':'spanleft'">{{item.text}}</span>
</li>
</ul>
<div class="footer">
<div id="user_face_icon">
<img src="./img/right.png" alt="" />
</div>
<input id="text" type="text" placeholder="说点什么吧..." v-model.trim='msg' @keyup.enter='send()' />
<span id="btn" @click='send()'>发送</span>
</div>
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 jquery.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- jQuery -->
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
var app = new Vue({
el: '#container',
data: {
msg: '',
list:[]
},
methods: {
send(){
if(this.msg==''){
alert('不能为空');
return;
}
this.list.push({
text:this.msg,
isMe:true,
});
this.msg=''
$.ajax({
type:'post',
url:'http://www.tuling123.com/openapi/api',
data:{
key:'9fbb98effab142c9bb324f804be542ba',
info:this.msg
},
success:backData=>{
console.log(backData);
this.list.push({
text:backData.text,
isMe:false
});
}
})
}
},
updated() {
$('.content').scrollTop(99999)
},
})
</script>