js实现鼠标悬浮框效果

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日

相关文章

  • JS判断浏览器是否安装flash插件的简单方法

    当浏览器没有安装Flash插件时,通常会导致Flash资源无法加载,从而影响页面的使用。因此,在开发网站时,我们需要判断用户所使用的浏览器是否安装了Flash插件。 下面是JS判断浏览器是否安装Flash插件的简单方法,包括两条示例说明。 1. navigator.plugins 通过 navigator.plugins 可以获取浏览器安装的插件,其中Fla…

    JavaScript 2023年6月11日
    00
  • 移动端图片上传旋转、压缩问题的方法

    移动端图片上传旋转、压缩问题主要是由于不同设备系统、不同拍照APP对图片方向及分辨率的处理方式不同所导致的,而这些问题会影响用户的使用体验和图片加载速度,因此需要进行解决。 以下是解决移动端图片上传旋转、压缩的方法攻略: 1. 旋转问题解决 1.1 问题描述 在部分设备上,拍照得到的图片可能会因为设备方向改变而旋转90度或180度。例如,在iOS系统中,通过…

    JavaScript 2023年5月28日
    00
  • javaScript日期工具类DateUtils详解

    JavaScritp日期工具类DateUtils详解 概述 JavaScript是一种广泛使用的动态编程语言,该语言可以用于浏览器和Node.js环境。在使用JavaScript开发web应用程序的过程中,日期处理是一个很常见和常用的功能。JavaScript内置有Date对象,而DateUtils是一种自定义的日期工具类,它提供了一系列有用的日期处理函数。…

    JavaScript 2023年5月27日
    00
  • jqeury eval将字符串转换json的方法

    当我们从后端获取JSON格式的字符串时,需要将其转换成JS对象进行操作和渲染。jQuery中提供了一个eval()方法,可以将JSON格式的字符串转换为JS对象。 以下是将字符串转换为JSON对象的代码演示: // 字符串 var jsonString = ‘{"name": "Lucy", "age&quo…

    JavaScript 2023年5月27日
    00
  • 如何制作自己的原生JavaScript路由

    这里为大家详细讲解一下如何制作自己的原生JavaScript路由。 什么是JavaScript路由 JavaScript路由是一种通过JavaScript对页面URL进行控制的技术,它可以实现局部刷新,无需完全刷新页面即可展示新的内容,并且可以通过状态管理实现前端路由系统。 如何制作自己的JavaScript路由 步骤如下: 1. 创建HTML页面 我们以一…

    JavaScript 2023年6月11日
    00
  • event.X和event.clientX的区别分析

    那么让我们来详细分析一下“event.X和event.clientX的区别”。 1. 事件对象(event)简介 在JavaScript中,与事件相关的数据都被封装在一个事件对象中,该对象用来携带事件发生时的一些信息,比如事件类型、目标元素、鼠标坐标、键盘按键等。 2. event.X和event.clientX的区别 event.X表示鼠标相对于当前元素的…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript函数绑定

    下面我来详细讲解“详解JavaScript函数绑定”的完整攻略。 什么是JavaScript函数绑定 JavaScript函数绑定即为改变函数运行时下文的this环境。在JavaScript中,函数的this值被自动设置为全局对象或者调用它的对象,但是使用函数绑定可以改变this的值,使它指向另一个对象。 函数绑定的方法 JavaScript有三种方法来实现…

    JavaScript 2023年5月27日
    00
  • js对图片base64编码字符串进行解码并输出图像示例

    解码图片base64编码字符串并输出图像一般需要以下步骤: 从DOM中获取到base64编码图片字符串。 将base64编码图片字符串转换为Blob类型数据。 使用FileReader对象将Blob类型数据读取为图像对象的URL地址。 将URL地址赋值给img标签的src属性,以此输出图像。 下面我们来一步一步详细讲解这个过程,并提供两个示例。 示例1: 先…

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