console
var tip = document.querySelector('div.tooltip');
var btn = document.querySelector('button.btn');
var popper = new Popper(btn, tip, {
placement : 'top',
});
$(btn).hover(function(){
tip.classList.add('show');
},function(){
tip.classList.remove('show');
});
<body style="padding-top: 5em;">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
Tooltip on top
</button>
<div class="tooltip fade bs-tooltip-top">
<div class="arrow"></div>
<div class="tooltip-inner">tooltip on top</div>
</div>
<div class="tooltip">tooltip on top</div>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://unpkg.com/popper.js@1.12.9/dist/umd/popper.min.js"></script>
</body>
.btn{
display: inline-block;
background:#007bff;
color: #fff;
padding: .5rem 1rem;
font-size: 1rem;
border-radius: .25rem;
outline: 0;
&:not(.disabled):not(:disabled){
cursor: pointer;
}
&:active{
outline: 0;
box-shadow: inset 0px 3px 3px rgba(#000, .2);
&:focus{
box-shadow: 0 0 0 3px rgba(#007bff, .25)
}
}
}
// 过渡
.fade{
transition: opacity .5s ease;
}
.tooltip{
position: absolute;
z-index: 1;
display: block;
margin: 0;
opacity: 0;
pointer-events: none;
&.show{
opacity: .9;
pointer-events: auto;
}
.arrow{
position: absolute;
display: block;
width: .8rem;
height: .4rem;
&::before{
position: absolute;
content: "";
border-color: transparent;
border-style: solid;
}
}
}
.bs-tooltip-top{
padding: .4rem 0;
.arrow{
bottom: 0;
left:0 ; right:0;
margin:0 auto;
&::before{
width: 0;
height: 0;
border-width: .4rem .4rem 0 .4rem ;
border-top-color: #000;
}
}
}
.tooltip-inner{
max-width: 200px;
padding: .25rem .5rem;
color: #fff;
background: #000;
border-radius: .25rem;
text-align: center;
}