最近做一个HybridApp,前端有一个群聊的功能,于是就想模仿微信的聊天界面,先看效果图:
HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HTML5实现微信聊天气泡效果</title>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<link rel="stylesheet" href="chatbox.css">
</head>
<body> <!-- Left -->
<div class="chat-sender">
<div><img src="img/ben.png"></div>
<div>阿奔 Ben</div>
<div>
<div class="chat-left_triangle"></div>
<span> 苹果增加三款配件的颜色选项</span>
</div>
</div>
<!-- Right -->
<div class="chat-receiver">
<div><img src="img/max.png"></div>
<div>好人·马克思</div>
<div>
<div class="chat-right_triangle"></div>
<span> 但是如果你正在再发新的APP跨平台项目,我建议你考虑一下Ionic2/Ionic3。 ionic2/Ionic3的架构使得“单一职责原则”得到了体现,组件、页面之间相互独立,有利于内聚和解耦。</span>
</div>
</div>
<!-- Right -->
<div class="chat-sender">
<div><img src="img/adam.jpg"></div>
<div>阿达姆 Adam</div>
<div>
<div class="chat-left_triangle"></div>
<span> 一款接近原生的Html5移动App开发框架</span>
</div>
</div>
<!-- Notice/Center -->
<div class="chat-notice">
<span>2017年12月10日 23:13</span>
</div>
<!-- Left -->
<div class="chat-sender">
<div><img src="img/perry.png"/></div>
<div>佩里 Perry</div>
<div>
<div class="chat-left_triangle"></div>
<span> Ionic遵循视图控制模式,通俗的理解和 Cocoa 触摸框架相似。在视图控制模式中,我们将界面的不同部分分为子视图或包含其他视图的子视图控制器。</span>
</div>
</div>
<!-- Left -->
<div class="chat-sender">
<div><img src="img/mike.png"></div>
<div>麦克</div>
<div>
<div class="chat-left_triangle"></div>
<span> 你可以用ionRefresher指令实现拉动刷新,并可以用ionInfiniteScroll指令实现无限滚动。</span>
</div>
</div>
<!-- Right -->
<div class="chat-receiver">
<div><img src="img/max.png"></div>
<div>好人·马克思</div>
<div>
<div class="chat-right_triangle"></div>
<span> 最后但并非最不重要的是</span>
</div>
</div>
<!-- Notice/Center -->
<div class="chat-notice">
<span>你被群主移除群聊</span>
</div> </body>
</html>
CSS样式代码 chatbox.css
body{
background-color: #ebebeb;
font-family: -apple-system;
font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif;
}
.chat-sender{
clear:both;
font-size: 80%;
}
.chat-sender div:nth-of-type(1){
float: left;
}
.chat-sender div:nth-of-type(2){
margin: 0 50px 2px 50px;
padding: 0px;
color: #848484;
font-size: 70%;
text-align: left;
}
.chat-sender div:nth-of-type(3){
background-color: white;
/*float: left;*/
margin: 0 50px 10px 50px;
padding: 10px 10px 10px 10px;
border-radius:7px;
text-indent: -12px;
} .chat-receiver{
clear:both;
font-size: 80%;
}
.chat-receiver div:nth-of-type(1){
float: right;
}
.chat-receiver div:nth-of-type(2){
margin: 0px 50px 2px 50px;
padding: 0px;
color: #848484;
font-size: 70%;
text-align: right;
}
.chat-receiver div:nth-of-type(3){
/*float:right;*/
background-color: #b2e281;
margin: 0px 50px 10px 50px;
padding: 10px 10px 10px 10px;
border-radius:7px;
} .chat-receiver div:first-child img,
.chat-sender div:first-child img{
width: 40px;
height: 40px;
/*border-radius: 10%;*/
} .chat-left_triangle{
height: 0px;
width: 0px;
border-width: 6px;
border-style: solid;
border-color: transparent white transparent transparent;
position: relative;
left: -22px;
top: 3px;
}
.chat-right_triangle{
height: 0px;
width: 0px;
border-width: 6px;
border-style: solid;
border-color: transparent transparent transparent #b2e281;
position: relative;
right:-22px;
top:3px;
} .chat-notice{
clear: both;
font-size: 70%;
color: white;
text-align: center;
margin-top: 15px;
margin-bottom: 15px;
}
.chat-notice span{
background-color: #cecece;
line-height: 25px;
border-radius: 5px;
padding: 5px 10px;
}