【问题标题】:Using Bootstrap 5 to create custom tooltips使用 Bootstrap 5 创建自定义工具提示
【发布时间】:2021-02-17 06:21:21
【问题描述】:

我正在使用 Bootstrap 5 并尝试创建自定义工具提示。我在这里看到了 Bootstrap 5 文档中使用的标记。

Bootstap 5 Tooltips Markup

我收集(并在网上查看)工具提示不在调用元素中并且是兄弟元素。我正在尝试使用带有以下标记的自定义类。

// CSS test option #1
.custom-tooltip + .tooltip > .tooltip-inner
{
    text-align: left;
    max-width: 500px;
}

// CSS test option #2
.custom-tooltip ~ .tooltip > .tooltip-inner
{
    text-align: left;
    max-width: 500px;
}

<span class="custom-tooltip" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-html="true" title="The tooltip text<br/>Extra textC">
    <svg ... ></svg>
</span>

所以如果你只使用.tooltip-inner,显然它可以正常工作,但我不想要一个全局工具提示,需要有不同的自定义工具提示。

【问题讨论】:

  • 你能在某处上传代码吗,我的意思是codesandbox或jsfiddle

标签: css twitter-bootstrap twitter-bootstrap-tooltip bootstrap-5


【解决方案1】:

(这个需要一些时间来弄清楚,因为规范答案不起作用 --- 这很可能是 JSFiddle 的事情,或者是 BS5 错误.. 不确定。)

记录的方法是将您的自定义类添加到 customClass 选项,如下所示:

<span data-bs-customClass="custom-tooltip" data-bs-toggle="tooltip" data-bs-html="true" title="The tooltip text<br/>Extra text">
  STUFF
</span>

但我无法让它在这个JSFiddle 上工作。这是因为 html 以全部小写的形式呈现 (在 Chrome 上) 并且“customClass”中的“C”呈现“customclass” .. 所以 BS5 JS 永远不会选择它。解决方法是在工具提示初始化程序中传递该选项,如下所示:

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  return new bootstrap.Tooltip(tooltipTriggerEl, {
    'customClass': 'custom-tooltip'
  })
})

然后你的 CSS 应该可以正常工作了:

.custom-tooltip.tooltip > .tooltip-inner
{
    text-align: left;
    max-width: 500px;
}

编辑:

事实证明这是固定的......正确的方法是在大写选项之前添加一个连字符“-”并使用小写形式,如下所示:

<span data-bs-custom-class="custom-tooltip" data-bs-toggle="tooltip" data-bs-html="true" title="The tooltip text<br/>Extra text">
  STUFF
</span>

然后初始化程序也应该排除该选项(添加它会覆盖数据属性)。初始化程序是按照文档:

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  return new bootstrap.Tooltip(tooltipTriggerEl)
})

【讨论】:

  • 这太棒了。您是对的,记录的方法在我的本地(JSFiddle 之外)中不起作用,但使用 Chrome。您的解决方法效果很好。赏金是你的,当它可以被授予时。谢谢。我同意这是一个 BS5 错误。在处理 SVG 的错误跟踪器(带有变通方法)中也存在其他问题。
  • 嗯...一直在看这个。这是 #32935 中的一个错误,然后由 XhmikosR 关闭,并由提交 #32995 修复。根据那个需要使用data-bs-custom-class*但是... 这也不起作用。 :(
  • 哦!傻我! data-bs-custom-class 确实有效!在 JSFiddle 中不起作用,因为 JS 初始化程序覆盖了数据属性。删除 JS 选项和数据属性工作。规则是在大写选项名称前添加连字符“-”并使用小写形式。编辑答案以表达此更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 2020-05-14
  • 2014-10-02
  • 2019-11-20
  • 2018-09-16
  • 1970-01-01
相关资源
最近更新 更多