Tailwind tooltip (CSS Only)
There’s a plenty of libraries (mostly JavaScript) to enable the classic tooltip design pattern. You can easily add tooltips to your elements without JavaScript and in just a few lines of Tailwind code and HTML.
Lets starts with HTML code:
<div class="mx-auto my-20 max-w-prose divide-y rounded-2xl border shadow-sm"> <div class="py-20 text-center"> <span aria-label="Content extra long">Hover this</span> </div>
<div class="dark"> <div class="py-20 text-center dark:bg-gray-800 dark:text-white"> <a aria-label="Tooltip content">Hover this</a> </div> </div>
<div class="py-20 text-center"> <a aria-label="Multi lines tooltip
are also possible">Hover this</a> </div>
<div class="py-20 text-center"> <a aria-label="Extra ultra giga wide comments are posssible" class="after:max-w-[120px]" >Hover this</a > </div>
<div class="py-20 text-center"> <a aria-label="Sky blue variant" class="before:bg-sky-500 after:bg-sky-500" >Hover blue</a > </div></div>
Then you have to add follow code to your tailwind.css
file:
@tailwind base;@tailwind components;@tailwind utilities;
@layer components { /* after is label */
[aria-label] { @apply relative; @apply after:font-semibold; @apply after:content-[attr(aria-label)]; @apply after:pointer-events-none after:absolute after:z-50; @apply after:opacity-0 hover:after:opacity-100; @apply after:rounded-md after:text-center after:text-xs; @apply after:bg-black after:text-white; @apply dark:after:bg-white dark:after:text-gray-900; @apply after:py-2 after:px-3; @apply after:w-max after:min-w-fit after:whitespace-pre-wrap; @apply after:bottom-full after:left-1/2 after:-translate-x-1/2; @apply after:-translate-y-2; }
/* before is arrow*/
[aria-label] { @apply before:pointer-events-none before:absolute before:z-40; @apply before:opacity-0 hover:before:opacity-100; @apply before:bottom-full before:left-1/2 before:-translate-x-1/2; @apply before:h-2 before:w-4; @apply before:transition-opacity after:transition-opacity; @apply before:bg-black dark:before:bg-white; }
[aria-label]::before { mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 500 250"><polygon points="0,0 250,250 500,0"/></svg>'); }}
You can easily change tooltip color from default black to something else like follow:
<a aria-label="Sky blue variant" class="before:bg-sky-500 after:bg-sky-500" >Hover blue</a>
Width of the tooltip can be limited with after:max-w-[120px]
class.
<a aria-label="Extra ultra giga wide comments are posssible" class="after:max-w-[120px]" >Hover this</a>
You can decide where will be break by including 

HTML Encoded Line Feed character - new line to the aria-label
.
<a aria-label="Multi lines tooltip
are also possible">Hover this</a>