JSFiddle - React, Tailwind, and code Playground

by Dmitriy Shvanyk

HTML

<div class="tip left">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur quam a sapien egestas eget scelerisque lectus tempor.</div>

<div class="tip right">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur quam a sapien egestas eget scelerisque lectus tempor.</div>

<div class="tip top">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur quam a sapien egestas eget scelerisque lectus tempor.</div>

<div class="tip bottom">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur quam a sapien egestas eget scelerisque lectus tempor.</div>

CSS

* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}
.tip {
    background: #fff;
    border: 1px solid #ccc;
    padding: 10px;
    font-size: 1.2em;
    position: relative;
    width: 400px;
    margin: 30px auto;
}
.left:before, .left:after {
    content:'';
    position: absolute;
    top: 50%;
    left: -28px;
    border: 14px solid transparent;
    border-right: 14px solid #ccc;
    -webkit-transform: translate(0, -50%);
    -ms-transform: translate(0, -50%);
    transform: translate(0, -50%);
}
.left:after {
    border-right: 14px solid white;
    left: -27px;
}
.right:before, .right:after {
    content:'';
    position: absolute;
    top: 50%;
    right: -28px;
    border: 14px solid transparent;
    border-left: 14px solid #ccc;
    -webkit-transform: translate(0, -50%);
    -ms-transform: translate(0, -50%);
    transform: translate(0, -50%);
}
.right:after {
    border-left: 14px solid white;
    right: -27px;
}
.top:before, .top:after {
    content:'';
    position: absolute;
    top: -28px;
    left: 50%;
    border: 14px solid transparent;
    border-bottom: 14px solid #ccc;
    -webkit-transform: translate(-50%, 0);
    -ms-transform: translate(-50%, 0);
    transform: translate(-50%, 0);
}
.top:after {
    border-bottom: 14px solid white;
    top: -27px;
}
.bottom:before, .bottom:after {
    content:'';
    position: absolute;
    bottom: -28px;
    left: 50%;
    border: 14px solid transparent;
    border-top: 14px solid #ccc;
    -webkit-transform: translate(-50%, 0);
    -ms-transform: translate(-50%, 0);
    transform: translate(-50%, 0);
}
.bottom:after {
    border-top: 14px solid white;
    bottom: -27px;
}