最近做一个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; }
摘自:https://www.cnblogs.com/felixnet/p/8019446.html