工具提示 data-placement="right" 不工作 [编辑]
tooltip the data-placement="right" is not working [edit]
首先,工具提示适用于所有方向,顶部、底部和左侧。但是对于右边是不行的。
所以我认为这可能是 CSS 或 HTML 结构的问题。 (但是tooltip是绝对位置,不知道为什么会这样。)
HTML
<li class="">
<div class="hover-highlight ml-2">
<a class="" href="#">
<i data-toggle="tooltip" title="Dashboard" class="icon-meter"></i>
<span>Dasboard</span>
</a>
</div>
</li>
在javascript我是这样做的:
$(function () {
$('[data-toggle="tooltip"]').tooltip({
placement: 'right'
});
});
正如我所说,对于任何其他展示位置,它都运行良好。但是右边坏了!
其实我也不知道为什么,就是用左边的属性渲染:
<div class="tooltip fade show bs-tooltip-left" role="tooltip" id="tooltip558151" style="position: absolute; transform: translate3d(125px, 207px, 0px); top: 0px; left: 0px; will-change: transform;" x-placement="left">
<div class="arrow" style="top: 8px;" />
<div class="tooltip-inner">Dashboard</div>
</div>
问题
好的,我找到问题了。看起来自动 bootstrap 根据父级 div 推送您的文本。例如,如果您的工具提示位于 window 的右侧,则不能强制将其置于右侧。
我不知道如何解决这个问题。
代码
请检查代码 here:
我认为您应该将位置放在元素的数据 属性 中:
<button data-toggle="tooltip" data-placement="left"> tooltip </button>
您应该将 text 放在元素 属性 的数据
中
$(function () {
$('[data-toggle="tooltip"]').tooltip({
placement: 'right'
});
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<li class="">
<div class="hover-highlight ml-2">
<a class="" href="#">
<i data-toggle="tooltip" title="Dashboard" class="icon-meter">
<span>Dasboard</span>
</i>
</a>
</div>
</li>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
问题出在div的边距上,看一下:
$(document).ready(function() {
$("body").tooltip({ selector: '[data-toggle=tooltip]',placement: 'top' });
});
.theproblem {
margin-left:140px;
margin-top:140px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="http://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link href="http://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<div class="row">
<div data-toggle="tooltip" title="Gestión de Usuarios" class="theproblem">
Hola mundo
</div>
</div>
</div>
还有Fiddle
最佳解决方案:
$('[data-toggle="tooltip"]').each(function() {
$(this).data('bs.tooltip').config.placement = 'right';// For dynamic position
$(this).data('bs.tooltip').config.boundary= 'right'; // Used for tooltip boundary range
});
我在 bootstrap4 使用“data-toggle”和“data-placement”与 bootstrap5 使用“data-bs-toggle”和“data-bs-placement”。
如果这有助于将来到达这里的任何人,我遇到的类似问题的解决方法是将边界设置为“window”,这样可以防止工具提示被限制在其父项内。有关其他选项,请参阅 https://getbootstrap.com/docs/4.0/components/tooltips/#options。
<button title="tooltip text" data-toggle="tooltip" data-placement="right" data-boundary="window">
首先,工具提示适用于所有方向,顶部、底部和左侧。但是对于右边是不行的。
所以我认为这可能是 CSS 或 HTML 结构的问题。 (但是tooltip是绝对位置,不知道为什么会这样。)
HTML
<li class="">
<div class="hover-highlight ml-2">
<a class="" href="#">
<i data-toggle="tooltip" title="Dashboard" class="icon-meter"></i>
<span>Dasboard</span>
</a>
</div>
</li>
在javascript我是这样做的:
$(function () {
$('[data-toggle="tooltip"]').tooltip({
placement: 'right'
});
});
正如我所说,对于任何其他展示位置,它都运行良好。但是右边坏了!
其实我也不知道为什么,就是用左边的属性渲染:
<div class="tooltip fade show bs-tooltip-left" role="tooltip" id="tooltip558151" style="position: absolute; transform: translate3d(125px, 207px, 0px); top: 0px; left: 0px; will-change: transform;" x-placement="left">
<div class="arrow" style="top: 8px;" />
<div class="tooltip-inner">Dashboard</div>
</div>
问题
好的,我找到问题了。看起来自动 bootstrap 根据父级 div 推送您的文本。例如,如果您的工具提示位于 window 的右侧,则不能强制将其置于右侧。
我不知道如何解决这个问题。
代码
请检查代码 here:
我认为您应该将位置放在元素的数据 属性 中:
<button data-toggle="tooltip" data-placement="left"> tooltip </button>
您应该将 text 放在元素 属性 的数据
中$(function () {
$('[data-toggle="tooltip"]').tooltip({
placement: 'right'
});
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<li class="">
<div class="hover-highlight ml-2">
<a class="" href="#">
<i data-toggle="tooltip" title="Dashboard" class="icon-meter">
<span>Dasboard</span>
</i>
</a>
</div>
</li>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
问题出在div的边距上,看一下:
$(document).ready(function() {
$("body").tooltip({ selector: '[data-toggle=tooltip]',placement: 'top' });
});
.theproblem {
margin-left:140px;
margin-top:140px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="http://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link href="http://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<div class="row">
<div data-toggle="tooltip" title="Gestión de Usuarios" class="theproblem">
Hola mundo
</div>
</div>
</div>
还有Fiddle
最佳解决方案:
$('[data-toggle="tooltip"]').each(function() {
$(this).data('bs.tooltip').config.placement = 'right';// For dynamic position
$(this).data('bs.tooltip').config.boundary= 'right'; // Used for tooltip boundary range
});
我在 bootstrap4 使用“data-toggle”和“data-placement”与 bootstrap5 使用“data-bs-toggle”和“data-bs-placement”。
如果这有助于将来到达这里的任何人,我遇到的类似问题的解决方法是将边界设置为“window”,这样可以防止工具提示被限制在其父项内。有关其他选项,请参阅 https://getbootstrap.com/docs/4.0/components/tooltips/#options。
<button title="tooltip text" data-toggle="tooltip" data-placement="right" data-boundary="window">