如何对齐工具提示的自然风格:鼠标指针的右下角?
~~~一些更多的文本能够提交。 ~~~一些更多的文本能够提交。 ~~~一些更多的文本能够提交。 ~~~
<!DOCTYPE html>
<html>
<head>
<title>Tooltip with Image</title>
<meta charset="UTF-8">
<style type="text/css">
.tooltip {
text-decoration:none;
position:relative;
}
.tooltip span {
display:none;
}
.tooltip span img {
float:left;
}
.tooltip:hover span {
display:block;
position:absolute;
overflow:hidden;
}
</style>
</head>
<body>
<a class="tooltip" href="http://www.google.com/">
Google
<span>
<img alt="" src="http://www.google.com/images/srpr/logo4w.png">
</span>
</a>
</body>
</html>
对于默认提示行为只需添加title
属性。 这不能包含图像虽然。
<div title="regular tooltip">Hover me</div>
之前澄清我在纯JavaScript做这件事的问题,希望你觉得它有用。 图像会弹出并跟随鼠标。
的jsfiddle
JavaScript的
var tooltipSpan = document.getElementById('tooltip-span');
window.onmousemove = function (e) {
var x = e.clientX,
y = e.clientY;
tooltipSpan.style.top = (y + 20) + 'px';
tooltipSpan.style.left = (x + 20) + 'px';
};
CSS
.tooltip span {
display:none;
}
.tooltip:hover span {
display:block;
position:fixed;
overflow:hidden;
}
扩展多个元素
多个元素的一个解决方案是更新所有的工具提示span
的和鼠标移动光标下设置它们。
的jsfiddle
var tooltips = document.querySelectorAll('.tooltip span');
window.onmousemove = function (e) {
var x = (e.clientX + 20) + 'px',
y = (e.clientY + 20) + 'px';
for (var i = 0; i < tooltips.length; i++) {
tooltips[i].style.top = y;
tooltips[i].style.left = x;
}
};
要做到这一点,而不JS的一种方法是使用悬停动作来揭示否则隐藏在HTML元素,请参阅本codepen:
http://codepen.io/c0un7z3r0/pen/LZWXEw
需要注意的是包含提示内容跨度是相对父里。 神奇的是在这里:
ul#list_of_thrones li > span{
position: relative;
display:none;
}
ul#list_of_thrones li:hover > span{
position: absolute;
display:block;
...
}
正如你所看到的,除非列表项悬停,从而揭示span元素的跨度是隐藏的,因为你需要的跨度可以含有多达HTML。 在codepen附我也使用了:为箭头元件之后但当然完全是可选的,并且仅被包括在本实施例中用于美容目的。
我希望这会有所帮助,因为所有其他的答案包括JS的解决方案,但OP问一个HTML / CSS唯一的解决办法我觉得有必要发布。
您可以使用jQuery UI插件,以下是参考网址
- http://jqueryui.com/tooltip/
- http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
- http://jquery-plugins.bassistance.de/tooltip/demo/
赛道设置为TRUE,相对于鼠标指针如工具提示的位置。
$('.tooltip').tooltip({ track: true });
我们可以实现在Angularjs同样使用“指令”。
//Bind mousemove event to the element which will show tooltip
$("#tooltip").mousemove(function(e) {
//find X & Y coodrinates
x = e.clientX,
y = e.clientY;
//Set tooltip position according to mouse position
tooltipSpan.style.top = (y + 20) + 'px';
tooltipSpan.style.left = (x + 20) + 'px';
});
您可以检查此职位的进一步细节。 http://www.ufthelp.com/2014/12/Tooltip-Directive-AngularJS.html