当前位置:首页 > JavaScript

tooltips 实现 js

2026-03-15 01:45:51JavaScript

实现 JavaScript Tooltips 的方法

使用原生 JavaScript 创建 Tooltips

通过 HTML 和 CSS 结合 JavaScript 动态显示和隐藏提示框。以下是一个简单的实现示例:

<style>
  .tooltip {
    position: relative;
    display: inline-block;
    cursor: pointer;
  }
  .tooltip-text {
    visibility: hidden;
    width: 120px;
    background-color: #555;
    color: #fff;
    text-align: center;
    border-radius: 6px;
    padding: 5px;
    position: absolute;
    z-index: 1;
    bottom: 125%;
    left: 50%;
    margin-left: -60px;
    opacity: 0;
    transition: opacity 0.3s;
  }
  .tooltip-text::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 .tooltip-text {
    visibility: visible;
    opacity: 1;
  }
</style>

<div class="tooltip">Hover over me
  <span class="tooltip-text">Tooltip text</span>
</div>

使用事件监听器动态控制

对于更复杂的交互,可以通过 JavaScript 动态添加和移除 tooltip:

document.querySelectorAll('.tooltip').forEach(element => {
  const tooltip = document.createElement('div');
  tooltip.className = 'tooltip-text';
  tooltip.textContent = element.getAttribute('data-tooltip');
  element.appendChild(tooltip);

  element.addEventListener('mouseenter', () => {
    tooltip.style.visibility = 'visible';
    tooltip.style.opacity = '1';
  });

  element.addEventListener('mouseleave', () => {
    tooltip.style.visibility = 'hidden';
    tooltip.style.opacity = '0';
  });
});

使用第三方库

tooltips 实现 js

流行的 JavaScript 库如 Tippy.js 提供更丰富的功能:

// 使用 Tippy.js
import tippy from 'tippy.js';
tippy('[data-tippy-content]', {
  animation: 'fade',
  arrow: true,
  placement: 'top',
});

对应的 HTML:

<button data-tippy-content="Tooltip text">Hover me</button>

响应式定位解决方案

tooltips 实现 js

对于需要动态计算位置的场景,可以使用 getBoundingClientRect():

function positionTooltip(element, tooltip) {
  const rect = element.getBoundingClientRect();
  tooltip.style.left = `${rect.left + window.scrollX}px`;
  tooltip.style.top = `${rect.top + window.scrollY - tooltip.offsetHeight - 5}px`;
}

无障碍访问增强

为 tooltip 添加 ARIA 属性提升可访问性:

<button aria-describedby="tooltip1">Button</button>
<div id="tooltip1" role="tooltip">Helpful information</div>

对应的 JavaScript:

document.querySelector('button').addEventListener('focus', showTooltip);
document.querySelector('button').addEventListener('blur', hideTooltip);

这些方法涵盖了从简单实现到高级功能的不同需求,可根据项目具体要求选择适合的方案。原生实现适合轻量级需求,而第三方库则提供更多预设样式和交互效果。

标签: tooltipsjs
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…