我正在尝试为工具提示输出各种颜色(编辑:来自Twitter Bootstrap),但似乎我不太明白。只是更改默认颜色并不难,只需更改.tooltip及其相关定义的颜色即可。
但假设我想改变身体内特定工具提示的颜色
<div id="users" class="row">
<div id="photo_stack" class="span6 photo_stack">
<img id="photo1" src="" width="400px" height="300px" alt="" rel="tooltip" data-placement="right" title="Other Color" />
像
这样的简单方法#users .tooltip { background-color: #somecolor; }
似乎不起作用。我想这是关于DOM的东西,我需要将某种类附加到特定的工具提示中?还是我完全脱了?谢谢:))
这是一个JSFiddle:http://jsfiddle.net/rZxrm/
答案 0 :(得分:16)
如果您使用的是工具提示,则可能需要使用内置主题颜色,即信息,成功,危险和警告。但是Bootstrap不支持工具提示的主题(在编写本文时在V3中),但我们可以添加几行CSS来实现这一点。
理想情况下,我们想要的是一组类tooltip-info
,tooltip-danger
,tooltip-success
等您可以应用于要调用的元素tooltip()
。我将在下面给出完全相同的代码并使用Bootstrap 3.0进行测试。
下面的代码基本上重用了alert组件的样式,因为它与工具提示非常相似。请注意,这样做的优点很少,包括不仅背景颜色会发生变化,而且文本颜色和边框颜色也会发生变化。另外,它为工具提示提供了略微透明的光泽外观。工具提示中的箭头取决于边框颜色,因此可以通过继承警报组件的边框颜色单独更改。
另请注意,这些不是全局变化。除非您应用tooltip-info
之类的类,否则您将获得默认的工具提示。
<span class="tooltip-info" title="Hello, I'm dangerous">
Hover here to see tooltip!
</span>
请注意,默认情况下不会激活Bootstrap工具提示,因此您需要像这样激活(请参阅https://stackoverflow.com/a/20877657/207661)
$(document.body).tooltip({ selector: "[title]" });
在此处使用此代码:http://jsbin.com/usIyoGUD/3/edit?html,css,output
//Import these from your own Bootstrap folder
@import "js/ext/bootstrap/less/mixins.less";
@import "js/ext/bootstrap/less/variables.less";
.tooltip-border-styles(@borderColor) {
& + .tooltip {
&.top .tooltip-arrow,
&.top-left .tooltip-arrow,
&.top-right .tooltip-arrow {
border-top-color: @borderColor;
}
&.bottom .tooltip-arrow,
&.bottom-left .tooltip-arrow,
&.bottom-right .tooltip-arrow {
border-bottom-color: @borderColor;
}
&.right .tooltip-arrow {
border-right-color: @borderColor;
}
&.left .tooltip-arrow {
border-left-color: @borderColor;
}
}
}
.tooltip-info {
& + .tooltip .tooltip-inner {
.alert-info;
}
.tooltip-border-styles(@alert-info-border);
}
.tooltip-danger {
& + .tooltip .tooltip-inner {
.alert-danger;
}
.tooltip-border-styles(@alert-danger-border);
}
.tooltip-warning {
& + .tooltip .tooltip-inner {
.alert-warning;
}
.tooltip-border-styles(@alert-warning-border);
}
.tooltip-success {
& + .tooltip .tooltip-inner {
.alert-success;
}
.tooltip-border-styles(@alert-success-border);
}
如果您没有使用LESS或者不想处理它,那么您可以直接使用以下编译的CSS:
.tooltip-info + .tooltip .tooltip-inner {
color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
background-repeat: repeat-x;
border-color: #9acfea;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
}
.tooltip-info + .tooltip.top .tooltip-arrow,
.tooltip-info + .tooltip.top-left .tooltip-arrow,
.tooltip-info + .tooltip.top-right .tooltip-arrow {
border-top-color: #bce8f1;
}
.tooltip-info + .tooltip.bottom .tooltip-arrow,
.tooltip-info + .tooltip.bottom-left .tooltip-arrow,
.tooltip-info + .tooltip.bottom-right .tooltip-arrow {
border-bottom-color: #bce8f1;
}
.tooltip-info + .tooltip.right .tooltip-arrow {
border-right-color: #bce8f1;
}
.tooltip-info + .tooltip.left .tooltip-arrow {
border-left-color: #bce8f1;
}
.tooltip-danger + .tooltip .tooltip-inner {
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
background-repeat: repeat-x;
border-color: #dca7a7;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
}
.tooltip-danger + .tooltip.top .tooltip-arrow,
.tooltip-danger + .tooltip.top-left .tooltip-arrow,
.tooltip-danger + .tooltip.top-right .tooltip-arrow {
border-top-color: #ebccd1;
}
.tooltip-danger + .tooltip.bottom .tooltip-arrow,
.tooltip-danger + .tooltip.bottom-left .tooltip-arrow,
.tooltip-danger + .tooltip.bottom-right .tooltip-arrow {
border-bottom-color: #ebccd1;
}
.tooltip-danger + .tooltip.right .tooltip-arrow {
border-right-color: #ebccd1;
}
.tooltip-danger + .tooltip.left .tooltip-arrow {
border-left-color: #ebccd1;
}
.tooltip-warning + .tooltip .tooltip-inner {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
background-repeat: repeat-x;
border-color: #f5e79e;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
}
.tooltip-warning + .tooltip.top .tooltip-arrow,
.tooltip-warning + .tooltip.top-left .tooltip-arrow,
.tooltip-warning + .tooltip.top-right .tooltip-arrow {
border-top-color: #faebcc;
}
.tooltip-warning + .tooltip.bottom .tooltip-arrow,
.tooltip-warning + .tooltip.bottom-left .tooltip-arrow,
.tooltip-warning + .tooltip.bottom-right .tooltip-arrow {
border-bottom-color: #faebcc;
}
.tooltip-warning + .tooltip.right .tooltip-arrow {
border-right-color: #faebcc;
}
.tooltip-warning + .tooltip.left .tooltip-arrow {
border-left-color: #faebcc;
}
.tooltip-success + .tooltip .tooltip-inner {
color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
background-repeat: repeat-x;
border-color: #b2dba1;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
}
.tooltip-success + .tooltip.top .tooltip-arrow,
.tooltip-success + .tooltip.top-left .tooltip-arrow,
.tooltip-success + .tooltip.top-right .tooltip-arrow {
border-top-color: #d6e9c6;
}
.tooltip-success + .tooltip.bottom .tooltip-arrow,
.tooltip-success + .tooltip.bottom-left .tooltip-arrow,
.tooltip-success + .tooltip.bottom-right .tooltip-arrow {
border-bottom-color: #d6e9c6;
}
.tooltip-success + .tooltip.right .tooltip-arrow {
border-right-color: #d6e9c6;
}
.tooltip-success + .tooltip.left .tooltip-arrow {
border-left-color: #d6e9c6;
}
答案 1 :(得分:15)
Twitter引导程序没有内置此功能,但您可以添加自己的功能来执行此操作,如下所示:
$('#photo1').hover(function() {$('.tooltip').addClass('tooltipPhoto')}, function () {$('.tooltip').removeClass('tooltipPhoto')});
然后你只需要在CSS中定义tooltipPhoto
类以获得不同的背景颜色。
编辑: 更新的解决方案:
function changeTooltipColorTo(color) {
$('.tooltip-inner').css('background-color', color)
$('.tooltip.top .tooltip-arrow').css('border-top-color', color);
$('.tooltip.right .tooltip-arrow').css('border-right-color', color);
$('.tooltip.left .tooltip-arrow').css('border-left-color', color);
$('.tooltip.bottom .tooltip-arrow').css('border-bottom-color', color);
}
$(document).ready(function () {
$("[rel=tooltip]").tooltip();
$('#photo1').hover(function() {changeTooltipColorTo('#f00')});
$('#photo2').hover(function() {changeTooltipColorTo('#0f0')});
$('#photo3').hover(function() {changeTooltipColorTo('#00f')});
});
答案 2 :(得分:14)
我找到了另一种解决方案(我试图做同样的事情)。只需更改主CSS样式表中的颜色(只要您的样式表在文档头部的引导程序后列出),它就会覆盖引导程序。
具体来说,这是您添加到主样式表的内容(作为示例):
.tooltip-inner {
background-color: #D13127;
color: #fff;
}
.tooltip.top .tooltip-arrow {
border-top-color: #D13127;
}
答案 3 :(得分:2)
请参阅Dynamically add a class to Bootstrap's 'popover' container
她的修复程序通过修改bootstrap.js一行
来允许数据类选择器答案 4 :(得分:1)
以下是我在sass中的表现
.tooltip-inner
color: #fff
background-color: #111
border: 1px solid #fff
.tooltip.in
opacity: .9
与位置相关的部分
.tooltip.bottom .tooltip-arrow
border-bottom-color: #fff
答案 5 :(得分:0)
请参阅我对类似问题的回复:Change bootstrap tooltip color
它适用于现有和动态创建的元素的样式工具提示,使用Bootstrap 3或Bootstrap 4。
Bootstrap 3:
$(document).on('inserted.bs.tooltip', function(e) {
var tooltip = $(e.target).data('bs.tooltip');
tooltip.$tip.addClass($(e.target).data('tooltip-custom-class'));
});