js点击出现悬浮窗效果不使用JQuery插件

下面是使用纯 JavaScript 实现点击出现悬浮窗效果的攻略:

准备工作

在 HTML 文件中,需要添加一个按钮元素以及一个悬浮窗的 HTML 结构。其中,悬浮窗需要设置为 display: none;,即默认不可见。

<button id="btn">点击显示悬浮窗</button>

<div id="popup">
  <h2>这是一个悬浮窗</h2>
  <p>悬浮窗的内容可以放在这里</p>
</div>

接下来,在 CSS 中设置按钮和悬浮窗的样式:

#btn {
  font-size: 1rem;
  padding: 0.5rem 1rem;
  background-color: #4CAF50;
  color: #FFF;
  border: none;
}

#popup {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #FFF;
  padding: 1rem;
  border: 1px solid #CCC;
  box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
  display: none;
}

实现点击事件

使用 JavaScript 监听按钮的点击事件,当点击时,悬浮窗的 display 属性设置为 block,即显示悬浮窗。

var btn = document.getElementById('btn');
var popup = document.getElementById('popup');

btn.addEventListener('click', function() {
  popup.style.display = 'block';
});

但是,这个实现方式还存在一个问题:当点击悬浮窗以外的地方,悬浮窗并没有消失。因此,还需要为页面添加一个点击事件,在单击页面时判断是否点击了悬浮窗以外的地方。如果是,则把悬浮窗隐藏起来。

document.addEventListener('click', function(event) {
  if (event.target !== popup && event.target !== btn) {
    popup.style.display = 'none';
  }
});

完整的 HTML、CSS 和 JavaScript 代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>点击出现悬浮窗效果</title>
  <style>
    #btn {
      font-size: 1rem;
      padding: 0.5rem 1rem;
      background-color: #4CAF50;
      color: #FFF;
      border: none;
    }

    #popup {
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background-color: #FFF;
      padding: 1rem;
      border: 1px solid #CCC;
      box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
      display: none;
    }
  </style>
</head>
<body>
  <button id="btn">点击显示悬浮窗</button>

  <div id="popup">
    <h2>这是一个悬浮窗</h2>
    <p>悬浮窗的内容可以放在这里</p>
  </div>

  <script>
    var btn = document.getElementById('btn');
    var popup = document.getElementById('popup');

    btn.addEventListener('click', function() {
      popup.style.display = 'block';
    });

    document.addEventListener('click', function(event) {
      if (event.target !== popup && event.target !== btn) {
        popup.style.display = 'none';
      }
    });
  </script>
</body>
</html>

下面是两个示例:

示例一:使用内联样式

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>点击出现悬浮窗效果</title>
</head>
<body>
  <button id="btn" style="font-size: 1rem; padding: 0.5rem 1rem; background-color: #4CAF50; color: #FFF; border: none;">点击显示悬浮窗</button>

  <div id="popup" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #FFF; padding: 1rem; border: 1px solid #CCC; box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); display: none;">
    <h2>这是一个悬浮窗</h2>
    <p>悬浮窗的内容可以放在这里</p>
  </div>

  <script>
    var btn = document.getElementById('btn');
    var popup = document.getElementById('popup');

    btn.addEventListener('click', function() {
      popup.style.display = 'block';
    });

    document.addEventListener('click', function(event) {
      if (event.target !== popup && event.target !== btn) {
        popup.style.display = 'none';
      }
    });
  </script>
</body>
</html>

示例二:优化 CSS 样式

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>点击出现悬浮窗效果</title>
  <style>
    body {
      font-family: Arial, Helvetica, sans-serif;
    }

    button {
      font-size: 1rem;
      padding: 0.5rem 1rem;
      background-color: #4CAF50;
      color: #FFF;
      border: none;
    }

    .popup {
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background-color: #FFF;
      padding: 1rem;
      border: 1px solid #CCC;
      box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
      display: none;
    }

    .popup h2 {
      margin-top: 0;
    }

    .popup p {
      margin-bottom: 0;
    }
  </style>
</head>
<body>
  <button id="btn">点击显示悬浮窗</button>

  <div id="popup" class="popup">
    <h2>这是一个悬浮窗</h2>
    <p>悬浮窗的内容可以放在这里</p>
  </div>

  <script>
    var btn = document.getElementById('btn');
    var popup = document.getElementById('popup');

    btn.addEventListener('click', function() {
      popup.style.display = 'block';
    });

    document.addEventListener('click', function(event) {
      if (event.target !== popup && event.target !== btn) {
        popup.style.display = 'none';
      }
    });
  </script>
</body>
</html>

希望以上内容能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js点击出现悬浮窗效果不使用JQuery插件 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • WAMP环境中扩展oracle函数库(oci)

    在WAMP环境中扩展oracle函数库(oci)的完整攻略 WAMP是一种将 Windows 操作系统、Apache 服务器、MySQL 数据库和 PHP 脚本语言进行绑定的工具。WAMP环境中默认不支持OCI函数库,如果你需要在WAMP环境中使用OCI函数库,需要进行一定的配置。本文将会详细讲解在WAMP环境中扩展oracle函数库(oci)的完整攻略。 …

    jquery 2023年5月18日
    00
  • jQWidgets jqxGauge RadialGauge ticksMajor属性

    jQWidgets 是一个流行的 JavaScript UI 库,提供了许多可定制的 UI 组件。其中一个组件是 jqxGauge,它是一个用于显示表盘的控件。jqxGauge提供多个属性,其中之一是 ticksMajor。下面是关于 jqxGauge 的 ticksMajor 属性的详攻略: ticksMajor 属性概述 ticksMajor 属性用于设…

    jquery 2023年5月11日
    00
  • 如何使用jQuery UI制作一个基本的对话框

    以下是关于如何使用 jQuery UI 制作一个基本的对话框的完整攻略: 如何使用 jQuery UI 制作一个基本的对话框 在 jQuery UI 中,可以使用 dialog() 方法创建一个对话框。这将使用户能够与页面进行交互,并提供一些基本的交互功能。 语法 $(selector).dialog(options); 示例一:基本使用 <!DOCT…

    jquery 2023年5月11日
    00
  • jQWidgets jqxExpander setHeaderContent()方法

    jQWidgets jqxExpander showArrow属性 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包表格等。jqExpander是jQ的一个组件,创建可折叠面板。jqxExpander提供了多个属性和方法,其中包括showArrow属性。本文将详细介绍showArrow`属性,并提供两个示例。 showArro…

    jquery 2023年5月9日
    00
  • jQuery.Validate验证库的使用介绍

    jQuery.Validate是一款轻量级且强大的表单验证插件。它可以帮助我们简单方便地实现对表单字段的各种验证,支持实时验证、异步验证以及自定义规则等功能,极大地提高了表单验证的效率和便捷性。 安装 要使用jQuery.Validate,需要先在页面中引入jQuery库和jQuery.Validate插件库,可以通过以下方式在页面中引入: <scri…

    jquery 2023年5月27日
    00
  • jQWidgets jqxResponsivePanel高度属性

    jQWidgets库是一款效果出色、支持多平台的JavaScript UI框架。其中的jqxResponsivePanel控件提供了响应式布局的功能,可以使网站在不同设备和屏幕尺寸下的显示和布局更加智能化。其中,jqxResponsivePanel高度属性是控制响应式面板的高度的属性。下面,我们将从以下几个方面来详细讲解高度属性的使用方法: jqxRespo…

    jquery 2023年5月11日
    00
  • 基于jQuery的日期选择控件

    下面我将为你详细讲解基于jQuery的日期选择控件的完整攻略,包含控件的使用方法和两个示例说明。 什么是基于jQuery的日期选择控件 基于jQuery的日期选择控件,是一种常见的前端组件,用于方便用户快速选择日期。它基于jQuery库开发,通常具有以下特点: 界面美观,易于使用; 支持多种日期格式和语言; 支持日期范围的限制; 支持日期的初始化,选中和获取…

    jquery 2023年5月28日
    00
  • jQWidgets jqxNumberInput getDecimal()方法

    以下是关于 jQWidgets jqxNumberInput 组件中 getDecimal() 方法的详细攻略。 jQWidgets jqxNumberInput getDecimal() 方法 jQWidgets jqxNumberInput 组件的 getDecimal 方法用于获取输入框中小数点后的位数。 语法 var decimal = $(‘#nu…

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