JSFiddle - React, Tailwind, and code Playground
by Jim_Toth
HTML
<h1>Super simple CSS tooltips</h1>
<div>
<h2>Bottom</h2>
<a class="ndx-tips" data-tip="Hello World!">Short</a>
<a class="ndx-tips" data-tip="Super simple CSS tooltips.
Hello World! not anymore Thank you.">Loooooooooooooooooong link</a>
</div>
<div>
<h2>Left</h2>
<a class="ndx-tipsL" data-tip="Hey">Short</a>
<a class="ndx-tipsL" data-tip="There!">Loooooooooooooooooong link</a>
</div>
<div>
<h2>Right</h2>
<a class="ndx-tipsR" data-tip="Super simple CSS tooltips.
Hello World! not anymore Thank you.">Short</a>
<a class="ndx-tipsR" data-tip="Hello World!">Loooooooooooooooooong link</a>
</div>
CSS
[class^="ndx-tips"] {
position: relative;
cursor: help;
user-select: none;
}
[class^="ndx-tips"]:after {
/* USE 
 for new lines */
content: attr(data-tip);
position: absolute;
z-index: 99;
opacity: 0;
visibility: hidden;
padding: 6px 8px;
top: 1.8em;
left: 50%;
white-space: pre;
transform: translateX(-50%) translateY(-25px);
background-color: rgba(39, 21, 136, 0.9);
background-image: linear-gradient(150deg, rgba(44, 11, 136, 0.9) 20%, rgba(35, 222, 216, 0.9) 160%);
color: #fff!important;
border-radius: 3px;
transition: opacity 0.3s cubic-bezier(0.7, 0.05, 0.1, 1), transform 0.3s cubic-bezier(0.7, 0.05, 0.1, 1);
}
[class^="ndx-tips"]:hover:after {
display: block;
opacity: 1;
visibility: visible;
transform: translateX(-50%) translateY(0);
}
.ndx-tipsL:after {
top: -6px;
left: 0;
transform: translateX(-120%) translateY(0);
}
.ndx-tipsL:hover:after {
transform: translateX(-115%) translateY(0);
}
.ndx-tipsR:after {
top: -6px;
left: 100%;
transform: translateX(10%) translateY(0);
}
.ndx-tipsR:hover:after {
transform: translateX(15%) translateY(0);
}