Tooltip
by Imri Paloja
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
<div class="container">
<div class="tooltip">
Hover over me
<span class="tooltiptext">Upgradable from this hardware level. Upgradable from this hardware level. </span>
</div>
<div class="table-wrapper">
<table>
<caption>
<strong>
Pricing
</strong>
</caption>
<thead>
<tr>
<th>
</th>
<th>Basic</th>
<th>
Standard<br>
<strong>
Coming Soon
</strong>
</th>
<th>
Premium<br>
<strong>
Coming Soon
</strong>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="table-category">
<strong>EuroBytes</strong>
<span data-title="The platform features.">
<i class="fa-solid fa-circle-info"></i>
</span>
</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>
<strong>
Hardware Level
</strong>
</td>
<td>
<a href="/Hardware/levels.html" data-title="vCPU: 1, RAM: 2 GB, Traffic: 1 TB, Price: € 5.97" title="Hardware Levels - EuroBytes">
1 or higher
</a>
<span data-title="Upgradable from this hardware level">
<i class="fa-solid fa-circle-info"></i>
</span>
</td>
<td>
<a href="/Hardware/levels.html" data-title="vCPU: 1, RAM: 2 GB, Traffic: 1 TB, Price: € 5.97">
1 or higher
</a>
<span data-title="Upgradable...
CSS
html,body {
background: #F9F9F9;
color: #454545;
}
.table-wrapper {
width: 100%;
overflow: auto;
}
.tooltip {
position: relative;
display: inline-block;
cursor: pointer;
margin: 100px;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 140px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px;
position: absolute;
z-index: 1;
bottom: 125%;
/* Position the tooltip above the text */
left: 50%;
margin-left: -70px;
/* Use half of the tooltip width to center it */
opacity: 0;
transition: opacity 0.3s;
}
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
[data-title] {
display: inline;
position: relative;
}
[data-title]:hover:before {
background-color: var(--background-color) !important;
color: var(--text-color) !important;
border: 1px solid var(--border-color);
border-radius: 5px;
bottom: 30px;
box-shadow: 0 0 1px var(--box-shadow);
content: attr(data-title);
font-family: helvetica, serif;
font-size: 15px;
font-stretch: normal;
font-style: normal;
font-variant: normal;
font-weight: normal;
left: 20%;
letter-spacing: 0;
line-height: 22px;
margin: 0;
padding: 5px 10px;
position: absolute;
text-align: left;
text-decoration: none;
text-indent: 0;
white-space: wrap;
min-width: 25em;
width: auto;
max-width: 750px;
word-spacing: normal;
word-wrap: normal;
z-index: 9999999999999999;
/*opacity: 1;*/
}
[data-title]:hover:after {
border: solid;
border-color: var(--border-color) rgba(0, 0, 0, 0);
border-width: 6px 6px 0 6px;
bottom: 24px;
/* 20px */
content: "";
left: 50%;
position: absolute;
z-index: 9999999999999999;
}
JavaScript
document.addEventListener('DOMContentLoaded', () => {
const tooltipElements = document.querySelectorAll('.tooltip');
tooltipElements.forEach(elem => {
elem.addEventListener('mouseover', () => {
const tooltipText = elem.querySelector('.tooltiptext');
tooltipText.style.visibility = 'visible';
tooltipText.style.opacity = '1';
});
elem.addEventListener('mouseout', () => {
const tooltipText = elem.querySelector('.tooltiptext');
tooltipText.style.visibility = 'hidden';
tooltipText.style.opacity = '0';
});
});
});