js实现鼠标悬浮框效果

yizhihongxing

JavaScript 实现鼠标悬浮框效果的过程主要分为以下几步:

1. 创建 HTML 结构

首先需要在 HTML 中定义框架,例如容器、容器内的内容、触发事件的 DOM 元素等。其中包含一个容器作为悬浮框,在鼠标触发事件后自动显示,同时鼠标移出事件后自动隐藏。

例如:

<div class="parent">
  <button class="trigger">点击出现悬浮框</button>
  <div class="hover-box">这是悬浮框的内容</div>
</div>

2. 使用 CSS 控制样式

接下来,需要使用 CSS 在页面上调整样式,也就是让悬浮框隐藏,当需要时才会动态的显示出来。

例如:

.parent {
  position: relative;
}

.hover-box {
  position: absolute;
  top: 100%;
  left: 0;
  display: none;
  padding: 10px;
  background-color: #fff;
  border: 1px solid #ccc;
}

3. 使用 JavaScript 添加事件监听

事件监听是 JavaScript 实现悬浮框效果的核心。在页面加载时,需要获取相应的 DOM 元素,然后添加事件监听器。可以添加监听器的事件包括鼠标移入、鼠标移出、点击、双击等事件。在这里我们使用鼠标移入和鼠标移出事件。

例如:

const parent = document.querySelector('.parent');
const trigger = document.querySelector('.trigger');
const hoverBox = document.querySelector('.hover-box');

trigger.addEventListener('mouseenter', () => {
  hoverBox.style.display = 'block';
});

parent.addEventListener('mouseleave', () => {
  hoverBox.style.display = 'none';
});

在这个示例中,我们获取了三个 DOM 元素,分别是 .parent 容器、.trigger 触发器和 .hover-box 悬浮框。然后添加了鼠标移入和鼠标移出事件后,对应的设置了悬浮框的样式属性。移入时将hoverBox.style.display的值改为 block 显示悬浮框,移出时将hoverBox.style.display的值改为 none 隐藏悬浮框。

示例1 - 点击触发悬浮框

例如,在下面这个示例中通过添加点击事件,来显示和隐藏悬浮框:

<div class="parent">
  <button class="trigger">点击出现悬浮框</button>
  <div class="hover-box">这是悬浮框的内容</div>
</div>
.parent {
  position: relative;
}

.hover-box {
  position: absolute;
  top: 100%;
  left: 0;
  display: none;
  padding: 10px;
  background-color: #fff;
  border: 1px solid #ccc;
}
const parent = document.querySelector('.parent');
const trigger = document.querySelector('.trigger');
const hoverBox = document.querySelector('.hover-box');

function toggleHoverBox() {
  hoverBox.style.display = hoverBox.style.display === 'none' ? 'block' : 'none';
}

trigger.addEventListener('click', toggleHoverBox);

在这个示例中,我们添加了一个名为 toggleHoverBox 的函数,来切换悬浮框的状态。当点击触发器按钮时,将调用此函数,并且判断悬浮框当前是否是显示状态,如果是,则隐藏悬浮框,如果不是,则显示悬浮框。

示例2 - 滑动鼠标触发悬浮框

例如,在下面这个示例中通过监听鼠标滑动事件,来显示和隐藏悬浮框:

<div class="parent">
  <div class="box">鼠标移到这里出现悬浮框</div>
  <div class="hover-box">这是悬浮框的内容</div>
</div>
.parent {
  position: relative;
  width: 400px;
  height: 400px;
}

.box {
  width: 100%;
  height: 100%;
}

.hover-box {
  display: none;
  position: absolute;
  top: 0;
  left: 0;
  width: 200px;
  height: 100px;
  background-color: #fff;
  border: 1px solid #ccc;
}
const parent = document.querySelector('.parent');
const hoverBox = document.querySelector('.hover-box');
const box = document.querySelector('.box');

function moveHandler(event) {
  const boxRect = box.getBoundingClientRect();
  const mouseX = event.pageX - window.scrollX;
  const mouseY = event.pageY - window.scrollY;

  if (
    mouseX >= boxRect.left &&
    mouseX <= boxRect.right &&
    mouseY >= boxRect.top &&
    mouseY <= boxRect.bottom
  ) {
    hoverBox.style.display = 'block';
  } else {
    hoverBox.style.display = 'none';
  }
}

parent.addEventListener('mousemove', moveHandler);

在这个示例中,我们使用 mousemove 事件监听鼠标的滑动,然后获取当前鼠标的坐标,并判断鼠标当前是否在 .box 元素内。如果是,则显示悬浮框,否则隐藏悬浮框。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现鼠标悬浮框效果 - Python技术站

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

相关文章

  • 性能优化篇之Webpack构建代码质量压缩的建议

    “性能优化篇之Webpack构建代码质量压缩的建议”是对于Webpack构建打包JS的一个性能优化方案。本文将详细讲解如何进行Webpack构建代码质量压缩的过程。 1. 使用Webpack UglifyJsPlugin插件实现代码压缩 在Webpack打包JS之前,参考文档Webpack UglifyJS Plugin,我们可以安装并使用Webpack U…

    JavaScript 2023年5月28日
    00
  • Three.js实现脸书元宇宙3D动态Logo效果

    下面就是详细讲解“Three.js实现脸书元宇宙3D动态Logo效果”的完整攻略。 1. 了解 Three.js Three.js 是一款使用 WebGL 技术实现的 JavaScript 3D 库,是基于WebGL的抽象封装实现库。 它可以很方便的创建、加载、修改3D 场景,包含了诸如相机、灯光、材质、物体、场景等等的封装。 2. 准备工作 先建立一个场景…

    JavaScript 2023年5月28日
    00
  • Bootstrap标签页(Tab)插件使用方法

    首先让我们来了解一下Bootstrap标签页(Tab)插件。 Bootstrap标签页插件可以将一组内容分割成可被轮流点击的视图块,并且只显示当前选择的视图块。这非常适合在比较繁琐的页面中展示多个内容模块。 使用步骤 步骤1. 引入Bootstrap插件和样式文件 在head标签中引入Bootstrap插件和样式文件。可以选择本地文件或使用cdn链接。 &l…

    JavaScript 2023年6月11日
    00
  • JS实现简易日历效果

    下面是详细讲解JS实现简易日历效果的完整攻略。 1.准备工作 在开始之前,我们需要准备以下工作: 一个HTML文件,用于展示日历 一个CSS文件,用于美化页面 一个JS文件,用于实现日历功能 2.HTML结构 我们需要在HTML中添加以下结构: <div class="calendar"> <div class=&quo…

    JavaScript 2023年5月27日
    00
  • JavaScript中数组去除重复的三种方法

    以下是“JavaScript中数组去除重复的三种方法”的完整攻略。 方法一:使用双重循环 算法思路 使用一个外层循环遍历数组元素,然后在外层循环内部再嵌套一个内层循环遍历前面的元素,依次与当前元素比较,如果有相同的就将其删除。 代码示例 function unique1(arr) { for (var i = 0; i < arr.length; i+…

    JavaScript 2023年5月27日
    00
  • JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法

    JS中的hasOwnProperty()方法是用来检测一个属性是否是某个对象的自有属性的方法。它是基于原型链的继承机制的,只有当所查询的属性是对象本身的属性时才会返回true。 语法: object.hasOwnProperty(prop) 其中object是必需的,表示要检查属性的对象,prop参数也是必需的,表示要检查的属性名称,传入的参数是字符串类型。…

    JavaScript 2023年6月10日
    00
  • JS计算两个时间相差分钟数的方法示例

    下面是详细讲解 “JS计算两个时间相差分钟数的方法示例” 的完整攻略。 1. 方案概述 在 JavaScript 中计算两个时间相差分钟数的方法,通常需要使用 Date 对象的 getTime() 方法,将时间对象转换为时间戳,再进行计算。 2. 方案步骤 首先,获取两个时间对象。可以使用 Date 对象,也可以从后端 API 接口获取时间数据。 然后,将两…

    JavaScript 2023年5月27日
    00
  • javaScript事件学习小结(四)event的公共成员(属性和方法)

    首先,需要了解JavaScript中事件的公共成员包括属性和方法。属性包括类型(type)、目标(target)、当前目标(currentTarget)、时间戳(timeStamp)等,方法包括阻止默认事件(preventDefault)、停止冒泡(stopPropagation)等。 对于属性,可以在事件处理函数中使用event对象获取,例如: <b…

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