gpt4 book ai didi

javascript - 如何确保工具提示停留在浏览器可见区域内?

转载 作者:太空狗 更新时间:2023-10-29 16:34:42 26 4
gpt4 key购买 nike

我正在学习如何基于 w3schools tutorial 创建工具提示.

我面临的一个问题是当悬停文本靠近浏览器边缘并且工具提示显示在可见区域之外时工具提示的可见性。

有没有标准的方法来防止这种情况(欢迎使用任何方法(CSS、JS、...))?
我现在的想法是根据屏幕大小和工具提示 anchor 的位置来计算工具提示的坐标 - 但我想避免重新发明轮子。

扩展到顶部或底部的工具提示就足够了 - 也许有一个“完全可见”的检查可以用来决定方向?这将是类似于 SO 中工具提示中的内容:

enter image description here

enter image description here

最佳答案

您需要计算工具提示的位置是否在窗口之外。在下面的示例中,在这种情况下,我只是将类 .bottom 添加到 .tooltiptext

计算是:

$('.tooltip').offset().top - $('.tooltiptext').height() < 0

在这种情况下,我们应该添加该类。

完整示例:

$('.tooltip').on('mouseenter', function() {
var $this = $(this);
var tooltip = $(this).find('.tooltiptext');
var offset = $this.offset();

tooltip.toggleClass('bottom', offset.top - tooltip.height() < 0);
// - just for case you want to change the default behavior - tooltip.toggleClass('top', $(window).height() + tooltip.height() < 0);
});
.footer {
position: absolute;
bottom: 0;
text-align: center;
padding-bottom: 10px;
width: 100%;
}
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>

<style>
.tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dotted black;
}

.tooltip .tooltiptext {
visibility: hidden;
width: 120px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
left: 50%;
margin-left: -60px;
opacity: 0;
transition: opacity 1s;
bottom: 125%;
}

.tooltip .tooltiptext.bottom {
bottom: auto;
top: 125%;
}

.tooltip .tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #555 transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
</style>
</head>
<body style="text-align:center;">
<div class="tooltip">Hover over me
<span class="tooltiptext">Tooltip text</span>
</div>

<h2>Tooltip</h2>
<p>Move the mouse over the text below:</p>

<div class="footer">
<div class="tooltip">Hover over me
<span class="tooltiptext">Tooltip text</span>
</div>
</div>
</body>
</html>

http://output.jsbin.com/nemebob

我让您将箭头方向更改为顶部。

关于javascript - 如何确保工具提示停留在浏览器可见区域内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40905372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com