如何用原生js写一个弹窗消息提醒插件

如何用原生JavaScript写一个弹窗消息提醒插件:

  1. 需要实现的功能
    我们需要写一个弹窗插件,可以根据传入的参数来动态调整弹窗的显示内容和样式。弹窗需要包含以下功能:

  2. 显示特定的消息,并根据消息类型展示不同的图标

  3. 显示不同类型消息对应的背景颜色和字体颜色
  4. 提供一个可控制的时间参数,可以设置多久后自动关闭弹窗,如果不设置时间则需要点击弹窗才能关闭
  5. 提供一个可选的回调函数,在用户点击弹窗或者弹窗自动关闭时调用该回调函数

  6. 实现代码
    下面是实现代码:

class Alert {
  constructor(message, options = {}) {
    this.message = message;
    this.options = options;
    this.container = document.createElement("div");
    this.container.className = "alert";
    this.render();
    document.body.appendChild(this.container);
  }

  render() {
    const { type = "default", duration = 0, callback } = this.options;
    const colors = {
      success: { background: "#DFF2BF", color: "#4F8A10" },
      info: { background: "#BDE5F8", color: "#00529B" },
      warning: { background: "#FFF2BF", color: "#9F6000" },
      danger: { background: "#FEE2E2", color: "#9F0000" },
      default: { background: "#F0F0F0", color: "#333" },
    };
    const color = colors[type];
    this.container.style.backgroundColor = color.background;
    this.container.style.color = color.color;

    const content = document.createElement("div");
    content.className = "alert-message";
    const icon = document.createElement("i");
    icon.className = `alert-icon ${type}-icon`;
    content.appendChild(icon);
    const message = document.createElement("span");
    message.innerHTML = this.message;
    content.appendChild(message);
    this.container.appendChild(content);

    const close = document.createElement("i");
    close.className = "alert-close";
    close.innerHTML = "×";
    content.appendChild(close);

    if (duration > 0) {
      setTimeout(() => {
        this.close();
        if (callback) callback();
      }, duration * 1000);
    } else {
      close.style.display = "block";
    }

    content.addEventListener("click", () => {
      this.close();
      if (callback) callback();
    });

    close.addEventListener("click", (e) => {
      e.stopPropagation();
      this.close();
      if (callback) callback();
    });
  }

  close() {
    document.body.removeChild(this.container);
  }
}
  1. 示例说明
    示例1:假设某个登录页面需要提示用户登录成功,我们可以通过如下代码使用Alert插件:
const alert = new Alert("登录成功!", {type: "success", duration: 3});

这里传入的参数包括消息内容和一个options对象。options对象中可传入type、duration和callback三个参数,其中type表示消息类型,duration表示自动关闭时间(秒),callback表示弹窗关闭时要执行的回调函数。本例中,消息类型为success,表示登录成功;duration为3,表示3秒后自动关闭;此处未传入callback参数,所以不会执行回调函数。

示例2:假设我们需要向用户展示一个警告信息并且不自动关闭,我们可以这样写:

const alert = new Alert("您尚未填写用户名!", {type: "warning"});

由于duration默认为0,所以弹窗不会自动关闭,用户需要手动关闭弹窗。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用原生js写一个弹窗消息提醒插件 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • DIV+CSS 三栏布局实例代码

    接下来我将为您介绍详细的“DIV+CSS 三栏布局实例代码”攻略: 一、前置知识 在学习“DIV+CSS 三栏布局实例代码”之前,我们需要掌握以下前置知识: HTML和CSS基础语法:学会如何创建HTML文档,以及如何在CSS中定义样式。 盒子模型:了解块级元素和内联元素的概念,掌握padding、border和margin等属性的使用方法。 浮动和清除浮动…

    css 2023年6月10日
    00
  • html中table表格的内容水平和垂直居中显示

    要让HTML表格中的内容水平和垂直居中显示,可以通过CSS样式来实现。 水平居中: 方法一:使用text-align属性 使用text-align属性可以将表格中的内容水平居中显示。将text-align属性设置为“center”即可实现,示例代码如下: <table style="width:100%"> <tr&gt…

    css 2023年6月10日
    00
  • 亲自教你TypeScript 项目搭建过程

    下面是详细讲解“亲自教你TypeScript 项目搭建过程”的完整攻略: 1. 安装TypeScript 首先,我们需要全局安装TypeScript。在终端中运行以下命令: npm install typescript -g 2. 创建项目 接下来,我们来创建一个新的TypeScript项目。在命令行中输入如下命令: mkdir my-typescript-…

    css 2023年6月10日
    00
  • CSS伪类是什么?

    CSS伪类是指语法上并不存在的一个选择器,它是为了给某些特定状态的元素应用样式而出现的。在HTML中,伪类的语法是以一个冒号(:)来表示的。 以下是CSS中常用的伪类: :hover 伪类 当鼠标滑过一个元素时,会触发该元素的:hover伪类,我们可以设置hover伪类来改变元素的样式。 <style> a:hover{color: red;} …

    Web开发基础 2023年3月20日
    00
  • DIV CSS实现网页背景半透明效果

    实现网页背景半透明的效果,可以使用CSS中的rgba()函数,也可以使用opacity属性。我们这里主要介绍使用DIV CSS实现网页背景半透明效果的方法。 步骤一:为背景添加一个DIV 我们可以给整个页面添加一个DIV作为背景,并设置它的位置为fixed,让它撑满整个页面,代码如下: <body> <div class="bac…

    css 2023年6月9日
    00
  • jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)

    下面我就来详细讲解一下“jQuery实现的点赞随机数字显示动画效果”的攻略。 想法 这个点赞随机数字显示动画效果,关键在于实现随机数字的动态显示。我们可以运用jQuery的animate()方法,实现数字从0到目标点赞数(模拟数字增加)的过程动效,然后将最终结果随机到目标点赞数的附近,展示难以预测的效果。 HTML 首先,我们需要先布置好页面的HTML结构:…

    css 2023年6月10日
    00
  • 深入探索VueJS Scoped CSS 实现原理

    下面是深入探索VueJS Scoped CSS实现原理的攻略: 前言 在Vue.js中,我们通过<style>标签来声明组件的样式,但是为了避免样式的污染(即样式影响到了其他组件),Vue.js提供了Scoped CSS(作用域CSS)的支持。 Scoped CSS是指将组件的样式限制在组件内部,不影响其他组件的样式,并且保证组件内部的样式可以覆…

    css 2023年6月9日
    00
  • jQuery实现浮动层随浏览器滚动条滚动的方法

    下面是详细的“jQuery实现浮动层随浏览器滚动条滚动的方法”的攻略。 1. 使用jQuery实现浮动层随浏览器滚动条滚动的方法 1.1 使用jQuery固定位置方法 使用jQuery的固定位置方法,实现浮动层的位置与浏览器滚动条的位置同步。 代码示例: $(window).scroll(function() { var scrollTop = $(this…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部