@roadtrip/css
Version:
CSS framework for Roadtrip Design System
209 lines (162 loc) • 3.25 kB
CSS
/*
* Tooltip
*
* Fit Tooltip for short text only.
*
* Index
* - Tooltip
* - Tooltip position
*
*/
/* TOOLTIP
-------------------- */
[tooltip] {
position: relative;
}
[tooltip]::after {
position: absolute;
top: -0.5rem;
left: 50%;
z-index: 1;
width: max-content;
min-width: 6rem;
padding: 0.5rem;
font-family: var(--road-font);
font-size: var(--road-body-small);
color: var(--road-on-surface);
text-align: center;
pointer-events: none;
content: attr(tooltip);
background: var(--road-surface);
border: 1px solid var(--road-outline-weak);
border-radius: 0.25rem;
box-shadow: var(--road-elevation-low);
opacity: 0;
transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out;
transform: translateX(-50%) translateY(-100%);
}
[tooltip].tooltip-text-left::after {
text-align: left;
}
[tooltip]:hover::after,
[tooltip]:focus-within::after {
opacity: 1;
}
/* TOOLTIP POSITION
-------------------- */
/**
* Top position
*/
[tooltip-position="top"]::after {
left: 50%;
transform: translateX(-50%) translateY(-70%);
}
[tooltip-position="top"]:hover::after {
left: 50%;
transform: translateX(-50%) translateY(-100%);
}
/**
* Top Left
*/
[tooltip-position="top-left"]::after {
left: 0%;
transform: translateY(-70%);
}
[tooltip-position="top-left"]:hover::after {
transform: translateY(-100%);
}
/**
* Top Right
*/
[tooltip-position="top-right"]::after {
left: 50%;
transform: translateY(-70%);
}
[tooltip-position="top-right"]:hover::after {
left: 100%;
transform: translateY(-100%);
}
/**
* Top end
*/
[tooltip-position="top-end"]::after {
left: auto;
right: 0%;
transform: translateY(-70%);
}
[tooltip-position="top-end"]:hover::after {
transform: translateY(-100%);
}
/**
* Left position
*/
[tooltip-position="left"]::after {
top: 50%;
left: 0%;
margin-right: 0.5rem;
transform: translateX(-94%) translateY(-55%);
}
[tooltip-position="left"]:hover::after {
transform: translateX(-103%) translateY(-55%);
}
/**
* Bottom position
*/
[tooltip-position="bottom"]::after {
top: 100%;
left: 50%;
margin-top: 0.5rem;
transform: translateX(-50%) translateY(-40%);
}
[tooltip-position="bottom"]:hover::after {
transform: translateX(-50%) translateY(-6%);
}
/**
* Bottom Left
*/
[tooltip-position="bottom-left"]::after {
top: 100%;
left: 0;
margin-top: 0.5rem;
transform: translateY(-40%);
}
[tooltip-position="bottom-left"]:hover::after {
transform: translateY(-6%);
}
/**
* Bottom Right
*/
[tooltip-position="bottom-right"]::after {
top: 100%;
left: 100%;
margin-top: 0.5rem;
transform: translateY(-40%);
}
[tooltip-position="bottom-right"]:hover::after {
transform: translateY(-6%);
}
/**
* Bottom end
*/
[tooltip-position="bottom-end"]::after {
top: 100%;
right: 0;
left: auto;
margin-top: 0.5rem;
transform: translateY(-40%);
}
[tooltip-position="bottom-end"]:hover::after {
transform: translateY(-6%);
}
/**
* Right position
*/
[tooltip-position="right"]::after {
top: 50%;
left: 100%;
margin-left: 0.5rem;
transform: translateX(-14%) translateY(-55%);
}
[tooltip-position="right"]:hover::after {
transform: translateX(-4%) translateY(-55%);
}