JSFiddle - React, Tailwind, and code Playground
by Torwan
HTML
<div class="icon-box">
<div class="icon">
<div class="tooltip">
This is first tooltip
</div>
<div class="square">
X
</div>
</div>
<div class="icon">
<div class="tooltip">
This is second tooltip
</div>
<div class="square">
X
</div>
</div>
<div class="icon">
<div class="tooltip">
This is third tooltip <div class="redbox">OOO</div>
</div>
<div class="square">
X
</div>
</div>
</div>
SCSS
html,
body {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: helvetica, sans-serif;
}
.icon-box {
display: flex;
flex-direction: row;
width: 200px;
justify-content: space-around;
border: 1px solid #ddd;
padding: 1em;
border-radius: 4px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.icon {
height: 24px;
width: 24px;
position: relative;
cursor: pointer;
&:hover .tooltip {
display: block;
opacity: 1;
transform: translate(-50%, 0);
}
}
.tooltip {
padding: 10px;
position: absolute;
width: auto;
white-space: nowrap;
word-wrap: no-wrap;
box-shadow: 1px 1px 20px #aaa;
border-radius: 5px;
background-color: #fff;
top: 20px;
left: 50%;
z-index: 200;
font-size: 0.9em;
//display: none;
opacity: 0;
transform: translate(-50%, 0);
transition: all .25s ease-out;
&:after {
content: '';
position: absolute;
display: block;
width: 10px;
height: 10px;
transform-origin: 50% 50%;
transform: rotate(45deg) translateX(-50%);
background-color: #fff;
left: 50%;
top: -1px;
z-index: 400;
}
&:before {
content: '';
display: block;
position: absolute;
width: 10px;
height: 10px;
transform-origin: 50% 50%;
transform: rotate(45deg) translateX(-50%) translateZ(-1px);
background-color: #fff;
left: 50%;
top: 0px;
z-index: -1;
box-shadow: -1px -1px 20px #aaa;
}
}
.redbox {
background: red;
width: 30px;
height: 30px;
}