例子:
<a href="example.com" title="My site"> Link </a>
我如何改变“标题”属性在浏览器中的表示?默认情况下,它只有黄色背景和小字体。我想把它做大一点,并改变背景颜色。
是否有CSS方法来样式标题属性?
例子:
<a href="example.com" title="My site"> Link </a>
我如何改变“标题”属性在浏览器中的表示?默认情况下,它只有黄色背景和小字体。我想把它做大一点,并改变背景颜色。
是否有CSS方法来样式标题属性?
当前回答
下面是一个如何做到这一点的例子:
a.tip { border-bottom: 1px dashed; text-decoration: none } a.tip:hover { cursor: help; position: relative } a.tip span { display: none } a.tip:hover span { border: #c0c0c0 1px dotted; padding: 5px 20px 5px 5px; display: block; z-index: 100; background: url(../images/status-info.png) #f0f0f0 no-repeat 100% 5%; left: 0px; margin: 10px; width: 250px; position: absolute; top: 10px; text-decoration: none } <a href="#" class="tip">Link<span>This is the CSS tooltip showing up when you mouse over the link</span></a>
其他回答
CSS不能改变工具提示的外观。它依赖于浏览器/操作系统。如果你想要一些不同的东西,你必须使用Javascript来生成标记,当你把鼠标悬停在元素上,而不是默认的工具提示。
下面是一个如何做到这一点的例子:
a.tip { border-bottom: 1px dashed; text-decoration: none } a.tip:hover { cursor: help; position: relative } a.tip span { display: none } a.tip:hover span { border: #c0c0c0 1px dotted; padding: 5px 20px 5px 5px; display: block; z-index: 100; background: url(../images/status-info.png) #f0f0f0 no-repeat 100% 5%; left: 0px; margin: 10px; width: 250px; position: absolute; top: 10px; text-decoration: none } <a href="#" class="tip">Link<span>This is the CSS tooltip showing up when you mouse over the link</span></a>
我想我应该在这里发布我的20行JavaScript解决方案。这不是完美的,但可能是有用的,这取决于你需要从你的工具提示。
什么时候使用
自动为定义了TITLE属性的所有HTML元素设置工具提示的样式(这包括将来动态添加到文档中的元素) 无需对每个工具提示进行Javascript/HTML更改或hack(只需TITLE属性,语义清晰) 非常轻(增加了大约300字节的压缩和压缩) 您只需要一个非常基本的可设置样式的工具提示
什么时候不使用
需要jQuery,所以如果你不使用jQuery就不要使用 对嵌套元素都有工具提示的不支持 您需要在屏幕上同时显示多个工具提示 您需要工具提示在一段时间后消失
的代码
// Use a closure to keep vars out of global scope
(function () {
var ID = "tooltip", CLS_ON = "tooltip_ON", FOLLOW = true,
DATA = "_tooltip", OFFSET_X = 20, OFFSET_Y = 10,
showAt = function (e) {
var ntop = e.pageY + OFFSET_Y, nleft = e.pageX + OFFSET_X;
$("#" + ID).html($(e.target).data(DATA)).css({
position: "absolute", top: ntop, left: nleft
}).show();
};
$(document).on("mouseenter", "*[title]", function (e) {
$(this).data(DATA, $(this).attr("title"));
$(this).removeAttr("title").addClass(CLS_ON);
$("<div id='" + ID + "' />").appendTo("body");
showAt(e);
});
$(document).on("mouseleave", "." + CLS_ON, function (e) {
$(this).attr("title", $(this).data(DATA)).removeClass(CLS_ON);
$("#" + ID).remove();
});
if (FOLLOW) { $(document).on("mousemove", "." + CLS_ON, showAt); }
}());
粘贴到任何地方,即使在DOM准备好之前运行这段代码,它也应该工作(它只是在DOM准备好之前不会显示您的工具提示)。
定制
您可以更改第二行上的var声明来定制它。
var ID = "tooltip"; // The ID of the styleable tooltip
var CLS_ON = "tooltip_ON"; // Does not matter, make it somewhat unique
var FOLLOW = true; // TRUE to enable mouse following, FALSE to have static tooltips
var DATA = "_tooltip"; // Does not matter, make it somewhat unique
var OFFSET_X = 20, OFFSET_Y = 10; // Tooltip's distance to the cursor
风格
你现在可以使用下面的CSS样式你的工具提示:
#tooltip {
background: #fff;
border: 1px solid red;
padding: 3px 10px;
}
a[title="My site"] {
color: red;
}
这也适用于你想添加的任何属性,例如:
HTML
<div class="my_class" anything="whatever">My Stuff</div>
CSS
.my_class[anything="whatever"] {
color: red;
}
查看它的工作:http://jsfiddle.net/vpYWE/1/
本机工具提示不能设置样式。
也就是说,你可以使用一些库,在元素悬停时显示样式浮动层(而不是本地工具提示,并抑制它们),只需要很少或根本不需要修改代码……