原生JavaScript实现Tooltip浮动提示框特效

yizhihongxing

下面是“原生JavaScript实现Tooltip浮动提示框特效”的完整攻略。

什么是Tooltip浮动提示框特效

Tooltip浮动提示框特效是一种鼠标移入到某个元素上时,显示一个类似于气泡的提示框,提示框中包含了与该元素有关的相关信息,一般应用于网页中。

实现步骤

  1. HTML结构
    首先,需要在HTML中编写一个触发提示框的元素,例如一个标签。
<span class="tooltip" data-content="这是一个Tooltip提示框">这里是要提示的内容</span>

其中,data-content属性是用来存储要显示的提示框内容的。

  1. CSS样式
    接下来,需要编写CSS样式,设置提示框的样式和位置。
.tooltip {
    position: relative;
    display: inline-block;
    border-bottom: 1px dotted black;
    cursor: help;
    margin: 30px;
}
.tooltip::before {
    content: "";
    position: absolute;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 8px 8px 0 8px;
    border-color: #000 transparent transparent transparent;
    left: 50%;
    bottom: 100%;
    transform: translateX(-50%);
}
.tooltip::after {
    content: attr(data-content);
    position: absolute;
    background-color: black;
    color: white;
    padding: 5px;
    border-radius: 5px;
    font-size: 14px;
    bottom: 110%;
    left: 50%;
    transform: translateX(-50%);
    opacity: 0;
    transition: opacity 0.3s;
    white-space: nowrap;
}
.tooltip:hover::after {
    opacity: 1;
}

这里的CSS样式中,设置了position属性为relative,使得设置的绝对定位属性可以相对于该元素进行定位。同时,设置伪元素:before和:after,分别用来设置提示框的箭头和显示内容。通过:hover伪类,让提示框在鼠标悬浮时显示出来。

  1. JavaScript交互
    最后,需要编写JavaScript代码,实现交互效果,使得提示框可以随着鼠标移动而跟随。
const tooltipElements = document.querySelectorAll(".tooltip");

tooltipElements.forEach((tooltip) => {
  tooltip.addEventListener("mousemove", (e) => {
    const tooltipBox = tooltip.querySelector(".tooltip-box");
    tooltipBox.style.top = e.clientY + 20 + "px";
    tooltipBox.style.left = e.clientX + "px";
  });
});

这里使用querySelectorAll获取所有要进行提示框操作的元素,然后对每个元素添加mousemove事件,通过获取鼠标移动时的坐标,来改变提示框的位置。

示例如下

示例一

这是一个Tooltip浮动提示框效果的最基本实现,不带有任何交互效果。

<span class="tooltip" data-content="这是一个Tooltip提示框">这里是要提示的内容</span>
.tooltip {
    position: relative;
    display: inline-block;
    border-bottom: 1px dotted black;
    cursor: help;
}
.tooltip::before {
    content: "";
    position: absolute;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 8px 8px 0 8px;
    border-color: #000 transparent transparent transparent;
    left: 50%;
    bottom: 100%;
    transform: translateX(-50%);
}
.tooltip::after {
    content: attr(data-content);
    position: absolute;
    background-color: black;
    color: white;
    padding: 5px;
    border-radius: 5px;
    font-size: 14px;
    bottom: 110%;
    left: 50%;
    transform: translateX(-50%);
    opacity: 0;
    transition: opacity 0.3s;
    white-space: nowrap;
}
.tooltip:hover::after {
    opacity: 1;
}

示例二

这是一个带有交互效果的Tooltip浮动提示框,提示框可以随着鼠标移动而跟随。

<span class="tooltip" data-content="这是一个带有交互效果的Tooltip提示框">这里是要提示的内容</span>
.tooltip {
    position: relative;
    display: inline-block;
    border-bottom: 1px dotted black;
    cursor: help;
    margin: 30px;
}
.tooltip::before {
    content: "";
    position: absolute;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 8px 8px 0 8px;
    border-color: #000 transparent transparent transparent;
    left: 50%;
    bottom: 100%;
    transform: translateX(-50%);
}
.tooltip-box {
    position: absolute;
    background-color: black;
    color: white;
    padding: 5px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
}
.tooltip:hover .tooltip-box {
    opacity: 1;
}
const tooltipElements = document.querySelectorAll(".tooltip");

tooltipElements.forEach((tooltip) => {
  const tooltipBox = document.createElement("div");
  tooltipBox.classList.add("tooltip-box");
  tooltipBox.innerText = tooltip.getAttribute("data-content");
  tooltip.appendChild(tooltipBox);
  tooltip.addEventListener("mousemove", (e) => {
    tooltipBox.style.top = e.clientY + 20 + "px";
    tooltipBox.style.left = e.clientX + "px";
  });
});

这里在HTML中添加了一个子元素作为提示框的存放容器,然后在JavaScript中获取到该子元素,绑定mousemove事件,并通过获取鼠标位置,改变提示框的位置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JavaScript实现Tooltip浮动提示框特效 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 详解javascript表单的Ajax提交插件的使用

    详解Javascript表单的Ajax提交插件的使用 1. AJAX 是什么? AJAX 即 Asynchronous Javascript And XML (异步 JavaScript 和 XML)。在不重新加载整个页面的情况下,可以通过 AJAX 在后台与服务器进行数据交互。使用 AJAX,可以实现异步加载数据,提高用户体验。 2. 表单提交流程 在传统…

    JavaScript 2023年6月11日
    00
  • JavaScript中iframe实现局部刷新的几种方法汇总

    JavaScript中iframe实现局部刷新的几种方法汇总 简介 iFrame 是HTML中的一种标记,可以使网页中嵌套其他网页。iFrame 的应用非常广泛,可以用于实现局部刷新,即只刷新部分页面的内容,而不用刷新整个页面。这对于提高网站加载速度和用户体验非常有帮助。本文将介绍几种方法来实现iFrame的局部刷新。 方法一:修改iFrame src属性 …

    JavaScript 2023年6月10日
    00
  • 解决微信二次分享不显示摘要和图片的问题

    让微信二次分享能够正确显示摘要和图片,需要在网页head部分添加相关的meta标签。以下是具体的步骤: 在head部分添加以下meta标签: <meta property="og:title" content="网页标题"/> <meta property="og:description&q…

    JavaScript 2023年6月11日
    00
  • 前端使用JSON.stringify实现深拷贝的巨坑详解

    首先,需要明确深拷贝和浅拷贝的概念。 在JavaScript中,对象的赋值有两种方式:深拷贝和浅拷贝。浅拷贝只是将对象的引用复制给了新的变量,而深拷贝则是递归地复制对象及所有嵌套的子对象。 JSON.stringify可以将一个JavaScript对象序列化成一个JSON字符串,而JSON.parse则可以将一个JSON字符串反序列化成一个JavaScrip…

    JavaScript 2023年5月27日
    00
  • 一个简易的js图片轮播效果

    下面是一个关于实现“一个简易的js图片轮播效果”的完整攻略: 确定需求 首先,我们需要明确实现一个简易的js图片轮播效果的需求。具体来说,它应该具有以下特点: 需要能够自动播放图片; 需要能够通过点击左右箭头手动切换图片,点击小圆点可以快速切换到相应的图片; 图片过渡效果需要流畅自然。 准备html结构 实现一个图片轮播的首要任务就是准备好html结构。我们…

    JavaScript 2023年6月11日
    00
  • 一文带你简单封装JS下的异步任务对象

    下面是关于“一文带你简单封装JS下的异步任务对象”的完整攻略。 前言 异步编程到现在已经是一个非常成熟的概念,并且也是前端开发中非常重要的一环。在JavaScript中,常见的异步操作包括网络请求、读写文件等。但是在异步操作中,由于异步事件的不确定性,使得相关代码比同步代码更难以理解、调试以及维护。为了更优雅地解决这个问题,我们可以使用异步任务对象的方式来封…

    JavaScript 2023年6月10日
    00
  • 同步异步动态引入js文件的几种方法总结

    同步、异步、动态引入js文件的几种方法总结 在Web开发中,为了更好地优化页面性能,我们需要对js文件的引入做些优化处理。其中包括同步引入、异步引入和动态引入js文件。下面将介绍这几种引入js文件的方法以及他们的使用场景。 同步引入 同步引入指的是在HTML文件中,直接使用<script>标签引入js文件。使用同步引入的时候,浏览器会在下载js文…

    JavaScript 2023年5月27日
    00
  • JS Ajax请求如何防止重复提交

    JS Ajax请求如何防止重复提交的攻略如下: 1. 基于状态锁的防重复提交 1.1 原理 基于状态锁的防重复提交原理是,在第一次请求(提交表单)时,将提交按钮禁用,等到本次请求成功后,再将提交按钮启用。期间再次点击提交按钮不产生任何反应,从而达到防止重复提交的目的。 1.2 代码示例 $(‘#form’).on(‘submit’, function(e) …

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部