Custom Tooltips


Top Tooltip text
Right Tooltip text
Bottom Tooltip text
Left Tooltip text

HTML
<div class="tooltip">
	<span>Top</span>
	<span class="tooltip_text || tooltip_top">Tooltip text</span>
</div>
<div class="tooltip">
	<span>Right</span>
	<span class="tooltip_text || tooltip_right">Tooltip text</span>
</div>
<div class="tooltip">
	<span>Bottom</span>
	<span class="tooltip_text || tooltip_bottom">Tooltip text</span>
</div>
<div class="tooltip">
	<span>Left</span>
	<span class="tooltip_text || tooltip_left">Tooltip text</span>
</div>
CSS
.tooltip{display:inline-block;color:#31344b;border-bottom:.1rem dotted #31344b;position:relative}
.tooltip .tooltip_text{position:absolute;opacity:0;visibility:hidden;display:inline-block;padding:.5rem 2rem;font-size:1.4rem;-webkit-border-radius:.5rem;-moz-border-radius:.5rem;border-radius:.5rem;background-color:#fff;text-align:center;z-index:1;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;transition:all .3s ease-in-out;min-width:12rem;max-width:35rem;width:-webkit-max-content;width:-moz-max-content;width:max-content;-webkit-box-shadow:-.05rem -.05rem .3rem 0 rgba(0,0,0,.2);-moz-box-shadow:-.05rem -.05rem .3rem 0 rgba(0,0,0,.2);box-shadow:-.05rem -.05rem .3rem 0 rgba(0,0,0,.2)}
.tooltip .tooltip_text::after{content:'';position:absolute;display:block;width:1rem;height:1rem;background-color:#fff;-webkit-box-shadow:.15rem .15rem 0 0 rgba(0,0,0,.1);-moz-box-shadow:.15rem .15rem 0 0 rgba(0,0,0,.1);box-shadow:.15rem .15rem 0 0 rgba(0,0,0,.1)}

.tooltip .tooltip_text.tooltip_top{bottom:100%;left:50%;-webkit-transform:translate(-50%,-2rem);-moz-transform:translate(-50%,-2rem);-ms-transform:translate(-50%,-2rem);-o-transform:translate(-50%,-2rem);transform:translate(-50%,-2rem)}
.tooltip .tooltip_text.tooltip_top::after{bottom:0;left:50%;-webkit-transform:translate(-50%,50%) rotate(45deg);-moz-transform:translate(-50%,50%) rotate(45deg);-ms-transform:translate(-50%,50%) rotate(45deg);-o-transform:translate(-50%,50%) rotate(45deg);transform:translate(-50%,50%) rotate(45deg)}

.tooltip .tooltip_text.tooltip_right{top:50%;left:100%;-webkit-transform:translate(3rem,-50%);-moz-transform:translate(3rem,-50%);-ms-transform:translate(3rem,-50%);-o-transform:translate(3rem,-50%);transform:translate(3rem,-50%)}
.tooltip .tooltip_text.tooltip_right::after{left:-.5rem;top:50%;-webkit-transform:translate(0,-50%) rotate(135deg);-moz-transform:translate(0,-50%) rotate(135deg);-ms-transform:translate(0,-50%) rotate(135deg);-o-transform:translate(0,-50%) rotate(135deg);transform:translate(0,-50%) rotate(135deg)}

.tooltip .tooltip_text.tooltip_bottom{top:100%;left:50%;-webkit-transform:translate(-50%,3rem);-moz-transform:translate(-50%,3rem);-ms-transform:translate(-50%,3rem);-o-transform:translate(-50%,3rem);transform:translate(-50%,3rem)}
.tooltip .tooltip_text.tooltip_bottom::after{top:-.5rem;left:50%;-webkit-transform:translate(-50%,0) rotate(-135deg);-moz-transform:translate(-50%,0) rotate(-135deg);-ms-transform:translate(-50%,0) rotate(-135deg);-o-transform:translate(-50%,0) rotate(-135deg);transform:translate(-50%,0) rotate(-135deg)}

.tooltip .tooltip_text.tooltip_left{top:50%;right:100%;-webkit-transform:translate(-3rem,-50%);-moz-transform:translate(-3rem,-50%);-ms-transform:translate(-3rem,-50%);-o-transform:translate(-3rem,-50%);transform:translate(-3rem,-50%)}
.tooltip .tooltip_text.tooltip_left::after{right:-.5rem;top:50%;-webkit-transform:translate(0,-50%) rotate(-45deg);-moz-transform:translate(0,-50%) rotate(-45deg);-ms-transform:translate(0,-50%) rotate(-45deg);-o-transform:translate(0,-50%) rotate(-45deg);transform:translate(0,-50%) rotate(-45deg)}

.tooltip:hover .tooltip_text{opacity:1;visibility:visible}
.tooltip:hover .tooltip_text.tooltip_top{-webkit-transform:translate(-50%,-1rem);-moz-transform:translate(-50%,-1rem);-ms-transform:translate(-50%,-1rem);-o-transform:translate(-50%,-1rem);transform:translate(-50%,-1rem)}
.tooltip:hover .tooltip_text.tooltip_right{-webkit-transform:translate(1.5rem,-50%);-moz-transform:translate(1.5rem,-50%);-ms-transform:translate(1.5rem,-50%);-o-transform:translate(1.5rem,-50%);transform:translate(1.5rem,-50%)}
.tooltip:hover .tooltip_text.tooltip_bottom{-webkit-transform:translate(-50%,1.5rem);-moz-transform:translate(-50%,1.5rem);-ms-transform:translate(-50%,1.5rem);-o-transform:translate(-50%,1.5rem);transform:translate(-50%,1.5rem)}
.tooltip:hover .tooltip_text.tooltip_left{-webkit-transform:translate(-1.5rem,-50%);-moz-transform:translate(-1.5rem,-50%);-ms-transform:translate(-1.5rem,-50%);-o-transform:translate(-1.5rem,-50%);transform:translate(-1.5rem,-50%)}
SCSS
.tooltip {
	display: inline-block;
	color: #31344b;
	border-bottom: .1rem dotted #31344b;
	position: relative;
	
	.tooltip_text {
		position: absolute;
		opacity: 0;
		visibility: hidden;
		display: inline-block;
		padding: 0.5rem 2rem;
		font-size: 1.4rem;
		border-radius: 0.5rem;
		background-color: #fff;
		text-align: center;
		z-index: 1;
		transition: all .3s ease-in-out;
		min-width: 12rem;
		max-width: 35rem;
		width: max-content;
		box-shadow: -0.05rem -0.05rem 0.3rem 0 rgba(0, 0, 0, .2);
		
		&::after {
			content: '';
			position: absolute;
			display: block;
			width: 1rem;
			height: 1rem;
			background-color: #ffffff;
			box-shadow: 0.15rem 0.15rem 0 0 rgba(0, 0, 0, .1);
		}
		
		&.tooltip_top {
			bottom: 100%;
			left: 50%;
			transform: translate(-50%, -2rem);
			
			&::after {
				bottom: 0;
				left: 50%;
				transform: translate(-50%, 50%)rotate(45deg);
			}
		}
		
		&.tooltip_right {
			top: 50%;
			left: 100%;
			transform: translate(3rem, -50%);
			
			&::after {
				left: -0.5rem;
				top: 50%;
				transform: translate(0, -50%) rotate(135deg);
			}
		}
		
		&.tooltip_bottom {
			top: 100%;
			left: 50%;
			transform: translate(-50%, 3rem);
			
			&::after {
				top: -.5rem;
				left: 50%;
				transform: translate(-50%, 0) rotate(-135deg);
			}
		}
		
		&.tooltip_left {
			top: 50%;
			right: 100%;
			transform: translate(-3rem, -50%);
			
			&::after {
				right: -0.5rem;
				top: 50%;
				transform: translate(0, -50%) rotate(-45deg);
			}
		}
	}
	
	&:hover {
		.tooltip_text {
			opacity: 1;
			visibility: visible;
			
			&.tooltip_top {
				transform: translate(-50%, -1rem);
			}
			
			&.tooltip_right {
				transform: translate(1.5rem, -50%);
			}
			
			&.tooltip_bottom {
				transform: translate(-50%, 1.5rem);
			}
			
			&.tooltip_left {
				transform: translate(-1.5rem, -50%);
			}
		}
	}
}