<section class="discussion">
  
  <div class="bubble sender first">Hello</div>
  <div class="bubble sender last">This is a CSS demo of the Messenger chat bubbles, that merge when stacked together.</div>
  
  <div class="bubble recipient first">Oh that's cool!</div>
  <div class="bubble recipient last">Did you use JavaScript to perform that kind of effect?</div>
  
  <div class="bubble sender first">No, that's full CSS3!</div>
  <div class="bubble sender middle">(Take a look to the 'JS' section of this Pen... it's empty! 😃</div>
  <div class="bubble sender last">And it's also really lightweight!</div>
  
  <div class="bubble recipient">Dope!</div>
  
  <div class="bubble sender first">Yeah, but I still didn't succeed to get rid of these stupid .first and .last classes.</div>
  <div class="bubble sender middle">The only solution I see is using JS, or a &lt;div&gt; to group elements together, but I don't want to ...</div>
  <div class="bubble sender last">I think it's more transparent and easier to group .bubble elements in the same parent.</div>
  
</section>
html { font-family: 'PT Sans', Georgia, serif; }

.discussion {
  max-width: 600px;
  margin: 0 auto;
  
  display: flex;
  flex-flow: column wrap;
}

.discussion > .bubble {
  border-radius: 1em;
  padding: 0.25em 0.75em;
  margin: 0.0625em;
  max-width: 50%;
}

.discussion > .bubble.sender {
  align-self: flex-start;
  background-color: cornflowerblue;
  color: #fff;
}
.discussion > .bubble.recipient {
  align-self: flex-end;
  background-color: #efefef;
}

.discussion > .bubble.sender.first { border-bottom-left-radius: 0.1em; }
.discussion > .bubble.sender.last { border-top-left-radius: 0.1em; }
.discussion > .bubble.sender.middle {
  border-bottom-left-radius: 0.1em;
  border-top-left-radius: 0.1em;
}

.discussion > .bubble.recipient.first { border-bottom-right-radius: 0.1em; }
.discussion > .bubble.recipient.last { border-top-right-radius: 0.1em; }
.discussion > .bubble.recipient.middle {
  border-bottom-right-radius: 0.1em;
  border-top-right-radius: 0.1em;
}
/* No JS! */
View Compiled

External CSS

  1. https://fonts.googleapis.com/css?family=PT+Sans

External JavaScript

This Pen doesn't use any external JavaScript resources.