.tooltipped { position: relative; } // This is the tooltip bubble .tooltipped::after { position: absolute; z-index: 1000000; display: none; padding: 5px 8px; font: normal normal 11px/1.5 $body-font; -webkit-font-smoothing: subpixel-antialiased; color: $tooltip-text-color; text-align: center; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-wrap: break-word; white-space: pre; pointer-events: none; content: attr(aria-label); background: $tooltip-background-color; border-radius: 3px; opacity: 0; } // This is the tooltip arrow .tooltipped::before { position: absolute; z-index: 1000001; display: none; width: 0; height: 0; color: $tooltip-background-color; pointer-events: none; content: ""; border: 5px solid transparent; opacity: 0; } // delay animation for tooltip @keyframes tooltip-appear { from { opacity: 0; } to { opacity: 1; } } // This will indicate when we'll activate the tooltip .tooltipped:hover, .tooltipped:active, .tooltipped:focus { &::before, &::after { display: inline-block; text-decoration: none; animation-name: tooltip-appear; animation-duration: $tooltip-duration; animation-fill-mode: forwards; animation-timing-function: ease-in; animation-delay: $tooltip-delay; } } .tooltipped-no-delay:hover, .tooltipped-no-delay:active, .tooltipped-no-delay:focus { &::before, &::after { opacity: 1; animation: none; } } .tooltipped-multiline:hover, .tooltipped-multiline:active, .tooltipped-multiline:focus { &::after { display: table-cell; } } // Tooltipped south .tooltipped-s, .tooltipped-se, .tooltipped-sw { &::after { top: 100%; right: 50%; margin-top: 5px; } &::before { top: auto; right: 50%; bottom: -5px; margin-right: -5px; border-bottom-color: $tooltip-background-color; } } .tooltipped-se { &::after { right: auto; left: 50%; margin-left: -15px; } } .tooltipped-sw::after { margin-right: -15px; } // Tooltips above the object .tooltipped-n, .tooltipped-ne, .tooltipped-nw { &::after { right: 50%; bottom: 100%; margin-bottom: 5px; } &::before { top: -5px; right: 50%; bottom: auto; margin-right: -5px; border-top-color: $tooltip-background-color; } } .tooltipped-ne { &::after { right: auto; left: 50%; margin-left: -15px; } } .tooltipped-nw::after { margin-right: -15px; } // Move the tooltip body to the center of the object. .tooltipped-s::after, .tooltipped-n::after { transform: translateX(50%); } // Tooltipped to the left .tooltipped-w { &::after { right: 100%; bottom: 50%; margin-right: 5px; transform: translateY(50%); } &::before { top: 50%; bottom: 50%; left: -5px; margin-top: -5px; border-left-color: $tooltip-background-color; } } // tooltipped to the right .tooltipped-e { &::after { bottom: 50%; left: 100%; margin-left: 5px; transform: translateY(50%); } &::before { top: 50%; right: -5px; bottom: 50%; margin-top: -5px; border-right-color: $tooltip-background-color; } } // Multiline tooltips // // `.tooltipped-multiline` Add this class when you have long content. // The downside is you cannot preformat the text with newlines and `[w,e]` // are always `$tooltip-max-width` wide. .tooltipped-multiline { &::after { width: max-content; max-width: $tooltip-max-width; word-wrap: break-word; white-space: pre-line; border-collapse: separate; } &.tooltipped-s::after, &.tooltipped-n::after { right: auto; left: 50%; transform: translateX(-50%); } &.tooltipped-w::after, &.tooltipped-e::after { right: 100%; } } @media screen and (min-width: 0\0) { // IE11 .tooltipped-multiline::after { width: $tooltip-max-width; } } // Sticky tooltips // // Always show the tooltip. .tooltipped-sticky { &::before, &::after { display: inline-block; } &.tooltipped-multiline { &::after { display: table-cell; } } } // Alert tooltips // // Colors for different alert states. @mixin colorizeTooltip($text-color, $background-color) { &::after { color: $text-color; background: $background-color; } &.tooltipped-s, &.tooltipped-se, &.tooltipped-sw { &::before { border-bottom-color: $background-color; } } &.tooltipped-n, &.tooltipped-ne, &.tooltipped-nw { &::before { border-top-color: $background-color; } } &.tooltipped-e::before { border-right-color: $background-color; } &.tooltipped-w::before { border-left-color: $background-color; } } @include retina-media-query { .tooltipped-w::after { // weird bug on retina margin-right: 4.5px; } }