'How to make a speech bubble with css?

Is it possible to style the following HTML structure to the image shown below with CSS only?

<div class="xyz-dialog">
 <div class="title"><span> Tip Title</span></div>
 <div class="body"> <span>Description</span></div>
</div>

Required design:

enter image description here



Solution 1:[1]

You can use after and border.

.xyz-dialog::after{
    content: "";
    border-top: 12px solid #f1f1f1;
    border-right: 8px solid transparent;
    border-left: 8px solid transparent;
    position: absolute;
    bottom: -12px;
    left: 4%;  
}

.xyz-dialog{
    width: 50%;
    background: #f1f1f1;
    border-radius: 0.3em;
    padding: 5px 30px;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    box-sizing: border-box;
    flex-direction: column;
}
<div class="xyz-dialog">
 <div class="title"><span> Tip Title</span></div>
 <div class="body"> <span>Description</span></div>
</div>

Solution 2:[2]

Little late. Two Boxes. For the small noise you use the css pseudo class after.

body {
  background-color: #999;
}
.wrapper {
  padding:20px;  
}
h3 {
  margin:0;
  color: #000;
}
.bubble {
    position: relative;
    background: white;
    color: #999;
    font-family: Arial;
    font-size: 16px;    
    text-align: left;
    width: 250px;
    height: 120px;
    border-radius: 10px;
    padding: 0px;
}
.bubble:after {
    content: '';
    position: absolute;
    display: block;
    width: 0;
    z-index: 1;
    border-style: solid;
    border-width: 0 20px 20px 0;
    border-color: transparent #fff transparent transparent;
    bottom: -16px;
    left: 17%;
    margin-left: -10px;
}
<div class="bubble">
  <div class="wrapper">
    <h3>title</h3>
    <div>content</div>
  </div>
</div>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2