JSFiddle - React, Tailwind, and code Playground
by nju33
HTML
<div id="js_tooltip" class="box" title="黒い!aaaaaaaaaaaaaaaaaaaa"></div>
SCSS
body {
position: relative;
width: 5em
}
.box {
cursor: pointer;
height: 3em;
width: inherit;
background-color: #3c3c3c;
}
.tooltip {
padding: .5em;
background-color: #9CB5BC;
margin: .5em;
&:before {
content: "";
width: 0;
height: 0;
border-width: 0 5px 5px 5px;
border-style: solid;
border-color: transparent transparent #9CB5BC transparent;
position: absolute;
top: -.3em;
left: 2em;
}
}
JavaScript
$(function() {
var $target = $("#js_tooltip");
var $tooltipDom = '<div><div class="tooltip"></div><div>';
var $tooltipElm = $(document); // 仮のセレクタ
var $parent = $("body");
$target.on("mouseover", function() {
var message = $(this).attr("title");
var targetHeight = $target.outerHeight();
$parent.append($tooltipDom);
$tooltipElm = $(document).find(".tooltip");
$tooltipElm.text(message)
.addClass("tooltip").css({
"position": "absolute",
"top": $tooltipElm.outerHeight(true)
});
$parent.css("height", targetHeight + ($tooltipElm.outerHeight(true) / 2));
$parent.on("mouseleave", function() {
$tooltipElm.remove();
$parent.css("height", targetHeight);
});
});
});