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 Object2String方便查看js对象内容

    这里是关于如何使用 JavaScript 的 Object2String 来方便查看 JavaScript 对象内容的详细攻略: 安装: Object2String 是当下比较常用的一个 npm 模块,并且可以通过命令行快速安装: npm install obj2str 用法: 在代码中,我们可以使用 require 或者 import 的方式引入 obj2…

    JavaScript 2023年5月27日
    00
  • 原生JavaScript实现异步多文件上传

    下面是原生JavaScript 实现异步多文件上传的完整攻略,主要分为以下部分: 基本概念 实现步骤 示例1:上传单个文件 示例2:上传多个文件 基本概念 异步多文件上传是一种常见的Web开发需求,它可以让用户一次性上传多个文件,而不是像传统的文件上传那样一次只能上传一个文件。异步多文件上传通常使用Ajax和FormData实现。 在介绍如何实现异步多文件上…

    JavaScript 2023年5月27日
    00
  • 详解TS对象扩展运算符和rest运算符

    详解TS对象扩展运算符和rest运算符 什么是对象扩展运算符和rest运算符 对象扩展运算符(也称为Spread运算符)和rest运算符(也称为剩余参数运算符)都是ES6新增的两种运算符。它们可以用于处理对象或数组中的元素,让代码更加简洁易读,常见于函数参数和数组/对象合并操作。 简单来说,对象扩展运算符可以将一个对象展开成多个对象,而rest运算符则可以将…

    JavaScript 2023年6月10日
    00
  • safari cookie设置中文失败的解决方法

    当我们在Safari浏览器中设置中文的cookie时,可能会出现设置失败的情况。下面是解决方法的完整攻略,包含以下步骤: 1. 清除浏览器缓存 首先,在Safari浏览器中选择“偏好设置”,然后选择“隐私”面板。在这里,可以看到“移除所有网站数据”的选项。点击这个按钮,清除浏览器缓存。 2. 检查Safaricookie设置和时间误差 如果以上步骤没有解决问…

    JavaScript 2023年6月11日
    00
  • 一文掌握new Date() 方法

    下面我为您详细讲解如何使用 new Date() 方法。 1. new Date() 方法简介 new Date() 方法用于创建一个表示当前日期和时间的 Date 对象。该方法创建的对象包含当前日期和时间的值。您可以使用它来获取当前时间、计算时间间隔等操作。 2. new Date() 方法使用 new Date() 方法没有参数时会创建一个代表当前时间的…

    JavaScript 2023年6月10日
    00
  • js字符串截取函数substr substring slice使用对比

    JS中操作字符串的时候,会用到截取字符串的函数,这篇攻略介绍substr、substring和slice三种常用的截取字符串函数,并进行对比。 substr substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法:string.substr(start, length) 参数说明:- start:必需,一个整数,规定字符串中开…

    JavaScript 2023年5月28日
    00
  • WebStorm 2017.3最新汉化激活破解及安装教程(附汉化包+原版下载)

    WebStorm 2017.3最新汉化激活破解及安装教程 下载WebStorm 2017.3 首先,到官网下载WebStorm 2017.3,推荐下载Windows版本。下载后双击WebStorm-*.exe开始安装。 安装WebStorm 2017.3 按照提示进行安装,如果需要更改安装路径,可以点击“Custom”按钮进行自定义安装路径。 汉化WebSt…

    JavaScript 2023年6月1日
    00
  • javascript 实现字符串反转的三种方法

    当我们需要对字符串进行操作时,有时候需要对字符串进行反转操作。下面我将介绍三种常见的JavaScript实现字符串反转的方法。 方法一:使用数组的reverse()方法 步骤如下: 将字符串转为数组 使用数组的reverse()方法进行反转 使用数组的join()方法将数组转化为字符串 示例代码如下: const str = ‘Hello World!’; …

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