防止 CSS 工具提示超出页面/窗口

2024-01-08

我有一个仅 CSS 的工具提示,它加载span作为工具提示,当您hover链接。然而,这是使用 CSS 定位的,但如果链接靠近页面顶部或侧面,则工具提示会离开页面的侧面/顶部。

有没有办法使用 css 来进行此更改,或者我必须依赖 JS? 我已经开始尝试将一些东西与 jQuery 结合在一起,但如果可能的话宁愿使用 CSS。

JS 摆弄https://jsfiddle.net/gtoprh21/12/ https://jsfiddle.net/gtoprh21/12/

Snippet:

$( ".ktooltip" )
.mouseover(function(e) {
   var mousex = e.pageX + 20; //Get X coordinates
   var mousey = e.pageY + 10; //Get Y coordinates
   if((mousey+100)>$(window).height())
   {

    $('.tooltip')
    .css({ top: mousey-100 ,left: mousex })

   }
   else if((mousex+200)>$(window).width())
   {
      $('.tooltip')
    .css({ top: mousey ,left: mousex-200})

   }
   else
    {
   $('.tooltip')
    .css({ top: mousey, left: mousex })

    }
})
.ref, .refs {
  position:relative;
}
/*added a text indent to overide indent styles further down*/
.ktooltip {
    display: inline-block;
    text-indent:0em;
}

.ref .ktooltiptext, .refs .ktooltiptext {
  visibility:hidden;
  width: 200px;
  background: #fff;
  border-radius: 6px;
  padding: 5px 5px;
  top: -40px;
  left: 10px;
  border:2px solid grey;
  line-height: normal;

    /* Position the tooltip */
    position: absolute;
    z-index: 1;
}

.ref:hover .ktooltiptext, .refs:hover .ktooltiptext {
    visibility: visible;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>
 <span id="edtxt.trans1" class="tei l">My hope is in a bishop,
 <!--link to a reference -->
   <sup class="ref expl">
     <a href="#edtxt-explnote1" id="reference-to-edtxt-explnote1" class="ktooltip">1</a>
       <!-- lhe reference in a tooltip -->
       <span class="ktooltiptext">According to tradition <span style="name">Nicholas</span> was bishop of Myra in Lycia (south-west Turkey today).</span>
   </sup>
  </span><br>
  <span id="trans2" class="tei l">and in almighty God and his never-ending miracles.</span><br>
  <span id="trans3" class="tei l">Generous Saint Nicholas holds an office,</span><br>
  <span id="trans4" class="tei l">there is a gold symbol in his sign.
    <!-- likn to ref -->
    <sup class="ref expl">
      <a href="#edtxt-explnote2" id="reference-to-edtxt-explnote2" class="ktooltip">2</a>
        <!-- the tooltip -->
        <span class="ktooltiptext"> One of <span style="">Nicholas’s</span> symbols was three <sup>bags</sup> of gold <span style="font-variant: small-caps;">which</span> were the <span style="color: red;">dowry</span> he provided <span style="color: blue;">for</span> three <span style="color: green;">girls</span>
        </span>
    </sup>
   </span><br>
   </p>

不幸的是,如果您想让工具提示保持良好的定位,仅使用 CSS 是不可能的。

脚本解决方案

但是,由于您已经在使用一些脚本,我建议您使用以下解决方案:

  • Use position: absolute定位.ktooltiptext据此.ref,
  • Use the .getBoundingClientRect()方法轻松获取工具提示的位置和大小,
  • 如果超出范围,请进行一些修正window,
  • 对CSS也做了一些修改。

仅包含本机 JavaScript 的代码片段(避免使用 jQuery,文档会更轻。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 CSS 工具提示超出页面/窗口 的相关文章

  • JQuery 动画文本

    找到简单 简单的动画文本是非常困难的 喜欢这个网站上的 内爆 http codecanyon net item jquery text animation full screen preview 233445 http codecanyon
  • jquery 通过 div 选择复选框

    我想知道 jQuery 中是否有一种方法可以在有人单击整个 div 层时选中 取消选中复选框 本质上就像有一个巨大的选择区域 有任何想法吗 这是一个例子 我试图使复选框周围可单击以切换单个复选框 几乎如此 fieldset div div
  • 在 Angular2 项目中集成 Treant-js

    我正在尝试在 Angular2 项目中使用 treant js 但我正在努力解决如何正确集成它的问题 我有一个工作正常的 JavaScript HTML 示例 我正在尝试在 Angular2 中工作 我创建了一个组件 从 npm 添加了 t
  • 在 JavaScript 中比较表单中的两个数字

    当我尝试比较不同的数字时 数字发生变化 但文本部分保持不变 这只发生在较大 较小的情况下 而不会发生在 NaN 或相等的情况下 这是我的代码 function check var a document getElementById a va
  • 在 HTML 中移动选取框/下移文本

    我正在尝试向下移动或移动 HTML 中的文本 但我似乎无法将其移动到任何地方 我添加了一个颜色命令来更改文本的颜色 但似乎只是移动了 它一直到顶部
  • 使用 jQuery 仅从字符串末尾修剪空格

    我知道 jQuery trim 函数 但我需要的是一种仅从字符串末尾修剪空格的方法 而不是开头 So str this is a string 会成为 str this is a string 有什么建议么 Thanks 您可以使用正则表达
  • 只需编辑 .css 即可更改

    有 4 div class myField 每一个都在另一个之下 http jsfiddle net urielz 6Mdmd http jsfiddle net urielz 6Mdmd 我想将其视图更改为两对情侣面对面 就像结果一样 h
  • 空 URL 哈希导致页面在 js 事件上跳转

    我有一个带有下一个和上一个按钮的照片库 如果我的某个 javascript 方法由于某种原因被破坏 那么当单击其中一个按钮时 它会向 url 添加一个哈希值 即 www google com 我知道可以给散列一个 div id 来跳转到页面
  • Web SQL 数据库 + Javascript 循环

    我正在尝试解决这个问题 但我自己似乎无法解决 我正在使用 Web SQL DB 但无法让循环正常使用它 I use for var i 0 i lt numberofArticles 1 i db transaction function
  • 将 NPM 包客户端与 nuxt 结合使用

    我对 nuxt 和 javascript 非常陌生 我正在尝试弄清楚如何在客户端使用我的应用程序的依赖项 我将它们列在我的 nuxt config js 中并使用 npm 安装 我也有一个文件 plugins导入它们的目录 不确定这是否好
  • 如何在 angularjs 中修剪()字符串?

    有角度特定的方法吗 如果没有 我应该使用内置的jquery 来做到这一点吗 如果我应该使用内置的jquery 如何在不使用 的情况下访问trim 函数 或者这是必要的 编辑 是的 我知道 str trim 对不起 我需要这个才能在 IE 8
  • 使用文本遮盖视频

    是否可以使用 HTML CSS 文本来屏蔽视频 我已经找到并设置了这种工作方式 但没有一种允许文本后面有透明背景 例如 这支笔要求您进行某种填充 它并不是真正掩盖实际视频 而是创造幻觉 https codepen io dudleystor
  • 在声明组件选择器时添加指令 - Angular 7

    我正在学习 Angular 并通过单击按钮动态创建组件 我正在尝试使用 Angular Material 的拖放功能来拖动这些创建的组件以对它们进行排序 我的基本组件 html 中有以下代码 div style margin 20px di
  • iOS 5 中的 webkit-overflow-scrolling: touch "handle" 是否有外观 CSS 规则?

    我有一个元素恰好同时具有 webkit overflow scrolling touch 和 background color black 因此显示滚动位置的 手柄 很难看到 是否有 webkit CSS 样式规则可以改变该 手柄 的外观
  • 使用 React React-router 登录后重定向到主页,并且 usenavigate 不起作用?

    我希望用户在成功登录后重定向到主页 我将用户登录的 api 请求的数据存储在一个名为 currentUser 的变量中 因此如果 currentUser 为 true 它应该重定向到主页 这就是我处理登录请求的方式 export const
  • 错误:创建 React Native 项目版本 0.59.9 时找不到 template.config.js

    当我尝试创建 React Native 项目版本 0 59 9 时 出现以下错误 错误错误 无法在 react native 模板中找到 var folders zc h93bvpb573q24 5ynvgkn1wc0000gn T rnc
  • 如何清除隐藏上的引导模式

    如何在关闭 隐藏 关闭时清除引导模式 我有以下模态定义
  • 使用 jquery 提供附加功能时菜单未正确对齐

    I need to make a mega menu similar to one as show in image below 到目前为止 我已经能够在某种程度上使其发挥作用 例如jsFiddle 在这里 http jsfiddle ne
  • jQuery 覆盖默认验证错误消息显示(Css)弹出/工具提示等

    我试图用 div 而不是标签来覆盖默认的错误消息标签 我看过这个帖子 https stackoverflow com questions 309574 jquery validation how to not display errors
  • 使用 Lodash 将对象键转换为具有键值数量的数组[重复]

    这个问题在这里已经有答案了 我有一个产品对象 products bread 1 milk 2 cheese 2 chicken 1 我想要一个包含产品名称的数组 如下所示 products bread milk milk cheese ch

随机推荐

  • 在图像上使用文本塑造形状

    所以我想使用 CSS 在图像上放置一个三角形 确切地说是一个包含一些文本的三角形 像这样的事情 https sketch io render sk 11fa7e2aeba09cb08372f831f84d9af2 jpeg https sk
  • 在React JS中实现状态变化时的过渡效果

    我的 React 页面上有一张图像 当状态更新为新图像时我想执行以下过渡效果 原始图像应该放大和淡出 新图像还应该放大和淡入 效果应该类似于穿过墙壁到达新场景 我怎样才能在 React 中做到这一点 正如 pgsandstrom 提到的 反
  • 使
  • 元素拉伸得比包含的
  • 目前 我正在开发一个工作布局 但我对动态下拉菜单有点困惑 我在 li 元素中使用子 ul 该元素将显示导航链接的子项 但上面的 li 因此是主要的 您将鼠标悬停在其上以查看子项 延伸到 ul 的长度 当然是由其中的 li 元素的宽度定义的
  • 如何使用KeyEventDispatcher

    我一直在尝试制作一个 Pong 克隆作为初学者的项目 但我遇到了障碍 我已经设法达到键盘支持的目的 但是键盘重复延迟开始出现 我还没有找到任何可用的方法来使用 KeyEventDispatcher 它甚至不会启动dispatchKeyEve
  • 使用 boto3 列出 100 多个堆栈

    我们需要列出所有处于 CREATE COMPLETE 状态的堆栈 在我们的 AWS 账户中 我们有超过 400 个这样的堆栈 我们为此编写了以下代码 stack session session client cloudformation l
  • 正向回顾与非捕获组:不同的行为

    我使用 python 正则表达式 remodule 在我的代码中并注意到在这些情况下的不同行为 re findall r s a z a xyz b abc non capturing group results in a xyz b ab
  • QT/C++ - 从不同的类访问 MainWindow UI

    我是 C 和 Qt 的初学者 所以这也许是微不足道的 当然感觉应该很简单 但我已经寻找答案几个小时了 但找不到解决方案 我正在制作一个简单的棋盘游戏 其中 MainWindow 的 ui 用 QtDesigner 制作 包含游戏板的画布 Q
  • 如何向列表添加多种数据类型

    我的清单如下 var serie line new name series name data new List
  • 函数构造函数与函数语句

    today 我读过我们有一种通过函数构造函数声明函数的方法 http www tutorialspoint com javascript javascript function constructors htm 但我从未见过使用的实际实现F
  • 敲除无法处理绑定“foreach”

    我是 Knockout 的新手 我正在构建一个实际上是大型计算器的应用程序 到目前为止 我在一个页面上运行了两个淘汰赛实例 一个实例工作得很好 但另一个实例完全损坏并且似乎根本无法注册 下面是我的 Javascript fetchYear
  • 使用 Springfox 在 Swagger UI 文档中添加标头参数

    我想在我的 Rest 服务的自动生成的 swagger ui 文档中添加一个标头参数字段 我使用 Spring 和 Springfox public ResponseEntity
  • 在 Objective-C 中将小数转换为分数?

    我试图将小数点后的所有内容显示为分数 找不到关于 Objective c 的太多关于如何实现这一点的信息 我在用double对于我的变量格式 不确定这是否重要 这就是我格式化答案的输出的方式 theTextField setText NSS
  • Rails 4 - 如何自动检测用户的位置并将其显示在网络应用程序上?

    我目前有一个正在运行的应用程序 我希望 Rails 通过 IP 地址检测访问者的位置 并在我的网站主页上显示城市和州 例如 它将显示 Hello Name from City State 访客无需输入任何内容 我知道 GeoIP 和地理编码
  • R中将长列表分成指定长度的短列表

    这与之前的一个问题密切相关here https stackoverflow com questions 45663125 divide long list into shorter lists in r 然而我需要一些稍微不同的东西 我有一
  • ASP.NET MVC - 将 JSON DateTime 传递到控制器而不映射到控制器参数

    我正在使用 jQuery 日历来显示事件 该日历旨在从服务器提取数据 在初始化时 日历会触发 AJAX 请求以获取事件对象数组 json 编码 到目前为止一切都很好 但是 此请求包含 JSON 编码的日期和时间 至少我的实现是这样 代码如下
  • 反应式形式不接收默认输入值

    我正在使用 Angular 并且有一个用于编辑项目的反应形式 当我打开组件进行编辑时 输入会正确加载对象的值 但如果我不单击输入并更改值 则反应形式的值将为空 我的代码在这里
  • Go 支持易失性/非易失性变量吗?

    我是这门语言的新手 所以请耐心等待 我很好奇 GO 如何处理线程可用的数据存储 从某种意义上说 非局部变量也可以是非易失性的 例如在 Java 中 GO 有通道的概念 从本质上讲 线程间通信意味着它绕过处理器缓存 直接读 写堆 另外 在 g
  • Python 中有“multimap”实现吗?

    我是 Python 新手 并且熟悉以下的实现多重地图 http en wikipedia org wiki Multimap in other http www sgi com tech stl Multimap html 语言 http
  • 无法在 PHP 中注销[重复]

    这个问题在这里已经有答案了 我正在尝试用 PHP 制作注册 登录表单 但无法注销 我不断收到以下错误 致命错误 未捕获的 ArgumentCountError 函数 USER construct 的参数太少 第 4 行在 C xampp h
  • 防止 CSS 工具提示超出页面/窗口

    我有一个仅 CSS 的工具提示 它加载span作为工具提示 当您hover链接 然而 这是使用 CSS 定位的 但如果链接靠近页面顶部或侧面 则工具提示会离开页面的侧面 顶部 有没有办法使用 css 来进行此更改 或者我必须依赖 JS 我已