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日

相关文章

  • vue3:vue2中protoType更改为config.globalProperties问题

    在Vue.js 3中,一些API的使用方式发生了更新。其中,一个重要的改变是将Vue 2.x中的全局对象$和prototype更改为了config.globalProperties,以便更好的支持TypeScript类型和减少变量泄漏的问题。 下面是完整攻略: 1. 理解问题 在Vue.js 2.x 版本中,我们可以通过以下方式为Vue实例添加全局属性: V…

    JavaScript 2023年6月11日
    00
  • Javascript验证Visa和MasterCard信用卡号的方法

    验证信用卡号的一种常用方法是通过Luhn算法,该算法有一个基本的规则:把信用卡号从右往左依次编号为0到n,其中最右边一位编号为0,然后对于每个奇数编号的数字乘以二,如果乘以二后的结果大于9,则将结果的各位数字相加,得到一个两位数的数字。 接着,将所有乘以二的数字和除了乘以二的数字的和相加,如果得到的和可以被10整除,则该信用卡号为合法的信用卡号。以下是一个检…

    JavaScript 2023年6月10日
    00
  • JQUERY操作JSON实例代码

    下面是关于“JQUERY操作JSON实例代码”的完整攻略。 什么是JSON JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,在前端开发中经常用来进行数据传输和交换。JSON格式的数据由于具有轻巧、易读、易解析的优点,被越来越广泛地用于Web前端的数据交互和传输。 JSON的语法 JSON数据用于数据交换,它是一…

    JavaScript 2023年5月27日
    00
  • 一个js随机颜色脚本(用于标签页面,也可用于任何页面)

    让我来详细讲解一下如何编写一个JS随机颜色脚本来为标签页面或者其他页面随机生成颜色。 1. 定义一个随机颜色的函数 第一步,我们需要定义一个JS函数来随机生成颜色。代码如下: function getRandomColor() { var letters = ‘0123456789ABCDEF’; var color = ‘#’; for (var i = …

    JavaScript 2023年6月11日
    00
  • js页面跳转常用的几种方式

    下面是关于“js页面跳转常用的几种方式”的完整攻略。 一、背景 在web应用中,页面跳转是非常常见的操作。而在前端开发中,我们通常使用JavaScript来实现页面的跳转功能。本文将介绍js页面跳转的常用几种方式。 二、常用的几种方式 1.通过window.location.href实现页面跳转 代码形式如下: window.location.href = …

    JavaScript 2023年6月11日
    00
  • IE8中使用javascript动态加载CSS的解决方法

    在IE8浏览器中,如果想要使用JavaScript动态加载CSS样式,可以采用以下两种方法: 方法一:使用document.createStyleSheet document.createStyleSheet是IE浏览器专门提供的一个API,可以用于动态创建样式表,并插入到页面中。它的代码如下: if(document.createStyleSheet) {…

    JavaScript 2023年5月27日
    00
  • ajax请求乱码的解决方法(中文乱码)

    当我们进行Ajax请求,出现中文乱码的情况时,需要进行如下处理。 1. 发送请求时指定编码方式 可以在发送Ajax请求时指定请求头中的Content-Type属性来指定编码方式为UTF-8。示例代码如下: var xhr = new XMLHttpRequest(); xhr.open(‘GET’, ‘/api/data’, true); xhr.setRe…

    JavaScript 2023年5月19日
    00
  • JS判断数组那点事

    JS判断数组那点事:完整攻略 在JavaScript中,我们可以使用各种方式来判断一个变量是否为数组。本攻略将介绍一些常用的方法以及它们的优缺点。 1. 使用typeof运算符 我们可以使用typeof运算符来获取变量的数据类型。对于数组而言,typeof将返回”object”。因此可以使用typeof判断传入的参数是否为”object”,如果是则继续判断是…

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