最近一个做的一个微信网页版的商城客服中心,做了个还不错的界面,稍稍模拟了微信那种样式 不过也加了自己的想法~先上效果图:
1.页面引入基本布局
<body>
<div id="leftDemo" >
基础版
<div class="topContainer"></div>
</div>
<div id="rightDemo" >
json版
<div class="topContainer"></div>
</div>
</body>
2.引入相关样式/*基础样式*/
.topContainer{
border-radius: 5px;
border: 2px solid #ccc;
height: 500px;
padding: 10px;
}
#leftDemo, #rightDemo{
width:400px;
display: inline-block;
margin: 30px auto 30px 200px;
}
#rightDemo{
float: right;
margin: 30px 200px 0 0;
}
.outContainer{
position: relative;
}
.outContainer:not(:first-child){
margin-top: 20px;
}
/* 消息框通用样式*/
.messInRight{
text-align: right;
}
.left, .right, .faceImg{
display: inline-block;
}
.left{
width: 32px;
top: 0;
}
.right{
margin-left: 15px;
}
.faceImg{
position: absolute;
top: 0;
}
.faceImgInRight{
right: -5px;
}
.messContent{
color: #fff;
font-size: 14px;
}
.contentDetail{
display: inline-block;
background-color: #00FF7F;
padding: 5px 12px;
border-radius: 15px;
}
.contentDetail:not(:first-child){
margin-top: 2px;
}
.contentDetail:first-child{
border-bottom-left-radius: 0;
}
.contentDetail:last-child{
border-bottom-left-radius: 15px;
border-top-left-radius: 0;
}
.contentDetail:not(:first-child):not(:last-child){
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
/*右侧消息框样式*/
.messInRight .contentDetail:first-child{
border-bottom-left-radius: 15px;
border-bottom-right-radius: 0;
}
.messInRight .contentDetail:last-child{
border-bottom-left-radius: 15px;
border-top-left-radius: 15px;
border-bottom-right-radius: 15px;
border-top-right-radius: 0;
}
.messInRight .contentDetail:not(:first-child):not(:last-child){
border-radius: 0;
border-top-left-radius: 15px;
border-bottom-left-radius: 15px;
}
.contentDetail:first-child:last-child{
border-radius: 15px;
}
.faceImg img{
width:32px;
border-radius:16px;
}
/*小表情样式*/
.smile1{
background:url('emoji.jpg') no-repeat;
width: 14px;
height: 16px;
display: inline-block;
vertical-align: -2px;
margin-left: 2px;
}
/*background-position 可根据小表情在大图的位置中对应做调整*/
.smile2{
background:url('emoji.jpg') no-repeat;
background-position: -32px -16px;
width: 14px;
height: 16px;
display: inline-block;
vertical-align: -2px;
margin-left: 2px;
}
.smile3{
background:url('emoji.jpg') no-repeat;
background-position: -16px 0;
width: 14px;
height: 16px;
display: inline-block;
vertical-align: -2px;
margin-left: 2px;
}
.smile4{
background:url('emoji.jpg') no-repeat;
background-position: -16px -16px;
width: 14px;
height: 16px;
display: inline-block;
vertical-align: -2px;
margin-left: 2px;
}
3.利用JavaScript脚本动态渲染页面
a. 这里先来个基础版的
// 第一版:源码(即页面左侧) function loadLeft() { var tplHtl = `<div class="outContainer"> <div class="left"> <div class="faceImg"> <img src="touxiang1.jpg"/> </div> </div> <div class="right"> <div class="messContent"> <span class="contentDetail">hello 我是大灰灰<span class="smile1"></span></span><br> <span class="contentDetail"><span class="smile2"></span>请大家多指教哇</span><br> <span class="contentDetail">嘻嘻嘻</span> </div> </div> </div> <div class="outContainer messInRight"> <div class="right"> <div class="messContent"> <span class="contentDetail">哇塞塞<span class="smile4">,欢迎欢迎~</span><br> <span class="contentDetail"><span class="smile2">我是小灰哦</span><br> <span class="contentDetail">^o^</span> </div> </div> <div class="left"> <div class="faceImg faceImgInRight"> <img src="touxiang2.jpeg"/> </div> </div> </div> <div class="outContainer"> <div class="left"> <div class="faceImg"> <img src="touxiang3.jpg"/> </div> </div> <div class="right"> <div class="messContent"> <span class="contentDetail">热烈欢迎加入越秃越强大家庭!!!</span> </div> </div> </div> <div class="outContainer messInRight"> <div class="right"> <div class="messContent"> <span class="contentDetail">哈哈哈~</span><br> <span class="contentDetail">加油干,小可爱们</span> </div> </div> <div class="left"> <div class="faceImg faceImgInRight"> <img src="touxiang2.jpeg"/> </div> </div> </div>`; $('#leftDemo .topContainer').html(tplHtl); } loadLeft();
b. 因为与后台交互时都是传的json数据的,所以为了童鞋们方便,就顺便发个json升级版,上面只是让童鞋们看看原来代码是怎么样的,也好理解啦!!
// 第二升级版:使用json(即页面右侧) function loadRight() { // touxiang 表示头像链接 // content 表示消息框内容 mess消息内容 littleEmo表示小表情对应的class // isMe 表示是否自己发的('Y' 是) 也就是消息框在右边 var jsonData = [ {"touxiang":"touxiang1.jpg", "content": [{"mess":"hello 我是大蓝", "littleEmo":"smile1"},{"mess":"请大家多指教哇", "littleEmo":"smile2"},{"mess":"嘻嘻嘻", "littleEmo":"smile4"}]}, {"touxiang":"touxiang2.jpeg", "content": [{"mess":"哇塞塞,欢迎欢迎~"}, {"mess":"我是小灰哦", "littleEmo":"smile2"}], "isMe": "Y"}, {"touxiang":"touxiang3.jpg", "content": [{"mess":"热烈欢迎加入越秃越强大家庭!!!"}]}, {"touxiang":"touxiang2.jpeg", "content": [{"mess":"哈哈哈~"},{"mess":"加油干,小可爱们"}], "isMe": "Y"} ]; var tplHtl = ``; $(jsonData).each(function(index, messEle){ if(messEle.isMe !== 'Y'){ tplHtl += `<div class="outContainer"> <div class="left"> <div class="faceImg"> <img src="${messEle.touxiang}"/> </div> </div> <div class="right"> <div class="messContent">`; $(messEle.content).each(function(ind, ele){ if(ind > 0){ tplHtl += `<br>`; } tplHtl += `<span class="contentDetail">${ele.mess}`; if(ele.littleEmo){ tplHtl += `<span class="${ele.littleEmo}"></span>`; } tplHtl += `</span>`; }); tplHtl += `</div></div></div>`; }else{ tplHtl += `<div class="outContainer messInRight"> <div class="right"> <div class="messContent">`; $(messEle.content).each(function(ind, ele){ if(ind > 0){ tplHtl += `<br>`; } tplHtl += `<span class="contentDetail">${ele.mess}`; if(ele.littleEmo){ tplHtl += `<span class="${ele.littleEmo}"></span>`; } tplHtl += `</span>`; }); tplHtl += `</div></div> <div class="left"> <div class="faceImg faceImgInRight"> <img src="${messEle.touxiang}"/> </div> </div> </div>`; } }); $('#rightDemo .topContainer').html(tplHtl); } loadRight();
4.对咯 小伙伴们图片都可以自己加 最后记得加<script type="text/javascript" src="jquery-3.2.1.min.js" ></script>
发表评论 取消回复