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日

相关文章

  • jQuery Mobile Listview filterPlaceholder选项

    首先,filterPlaceholder选项是jQuery Mobile Listview的一个属性,它用于设置在列表视图中放置的筛选框的默认文本。该选项的默认值是“Filter items…”。 我们可以使用该选项轻松自定义输入框的默认文本。下面是一个使用filterPlaceholder选项自定义默认文本的示例: <ul data-role=&…

    jquery 2023年5月12日
    00
  • jQuery UI的Resizable alsoResize选项

    以下是关于 jQuery UI 的 Resizable alsoResize 选项的完整攻略: jQuery UI 的 Resizable alsoResize 选项 在 jQuery UI 中,可以使用 resizable 方法使元素可调整大小。 选项可以指定其他元素也随着调整大小而调整大小。 语法 $(selector).resizable({ also…

    jquery 2023年5月11日
    00
  • jQWidgets jqxSplitter resizeStart事件

    jQWidgets是一个JavaScript类库,提供多种UI组件,如按钮、下拉菜单、表格、网格、数值输入框等。其中,jqxSplitter是用于实现拆分面板效果的组件,支持横向和竖向拆分,可以在用户界面上方便地划分大小拆分面板。在使用jqxSplitter的过程中,会涉及到resizeStart事件,本篇攻略将详细介绍“jQWidgets jqxSplit…

    jquery 2023年5月11日
    00
  • jquery遍历函数siblings()用法实例

    下面我将为你详细讲解“jquery遍历函数siblings()用法实例”的完整攻略。 简介 在jQuery中,我们经常使用各种遍历方法来获取、操作DOM元素。其中,siblings()方法是一种非常实用的遍历方法。它可以获取当前元素的所有兄弟节点,返回一个 jQuery 对象。这个 jQuery 对象中包含了所有的兄弟节点,可以方便地对它们进行操作。 用法 …

    jquery 2023年5月27日
    00
  • jQuery编程动画的基本方法示例详解

    jQuery编程动画的基本方法示例详解 基本知识点 在进行jQuery编程动画之前,首先需要了解以下基本知识点: 选择器:选择器可以用来选择文档中特定的元素。 动画效果:jQuery提供了很多动画效果,比如淡入淡出、滑动、展开收缩等等。 回调函数:回调函数是作为参数传递给其他函数的函数,会在其他函数完成时被调用。 基本方法 .animate()方法 .ani…

    jquery 2023年5月28日
    00
  • jQuery #id选择器

    以下是关于jQuery中的#id选择器的完整攻略: 什么是jQuery中的#id选择器? jQuery中的#id选择器是一用于选择具有特定ID属性的元素的语法。使用这个选择器可以轻松选择具有特定ID属性的元素对其进行操作。 如何使用jQuery中的#id选择器? 可以使用以下代码来选择具有特定ID属性的元素: $("#id") 在这个代码…

    jquery 2023年5月12日
    00
  • jQuery :only-child选择器

    以下是关于jQuery :only-child选择器的完整攻略: 什么是:only-child选择器? :only-child选择器是jQuery中一种伪类选择器,用于选择同一父元素下仅有一个子元素的元素。 如何使用:only-child选择器? 可以使用以下代码来选择同一父元素下仅有一个子元素的元素: $("element:only-child&…

    jquery 2023年5月12日
    00
  • Web开发者必备的12款超赞jQuery插件

    Web开发者必备的12款超赞jQuery插件攻略 在Web开发过程中,经常会使用到jQuery插件来增强网页的交互和效果,提高用户体验。本文将介绍Web开发者必备的12款超赞jQuery插件,并提供使用示例。 1. jQuery Validation jQuery Validation是一款轻量级的表单验证插件,支持多种表单验证规则,包括必填、email、数…

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