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

yizhihongxing

如何用原生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日

相关文章

  • 博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)

    实现博客侧边栏模块跟随滚动条滑动固定效果的方法可以通过JavaScript和jQuery库来实现。 基于JavaScript的实现过程 首先,我们需要获取到侧边栏模块的位置,当页面滚动时,判断当前滚动位置是否超过了侧边栏所在位置,如果超过了,我们就将侧边栏的position设置为fixed,同时将它固定在页面中,否则就将侧边栏的position将设置为rel…

    css 2023年6月10日
    00
  • vue过渡和animate.css结合使用详解

    下面是“vue过渡和animate.css结合使用详解”的攻略: 一、概述 Vue.js提供了非常方便的过渡动画效果,通过transition组件可以轻松实现元素的进入、离开效果。而Animate.css是一套非常流行的CSS动画库,包含了多种CSS动画效果。在Vue项目中,我们可以通过将Vue的过渡动画与Animate.css的动画效果结合使用,创造出更加…

    css 2023年6月10日
    00
  • 使用CSS content的attr实现鼠标悬浮提示(tooltip)效果

    使用CSS content的attr实现鼠标悬浮提示(tooltip)效果需要以下几个步骤: 在CSS中,需要为需要悬浮提示的元素添加一个属性,例如”data-tooltip”,内容为该元素需要显示的提示信息。 使用CSS中的选中器来为该元素添加:hover伪类,确保鼠标在该元素上悬浮时可以显示提示信息。 在该元素:hover伪类内,使用CSS conten…

    css 2023年6月10日
    00
  • firefox不显示border通过清除float便可解决

    要让问题更加清晰,我们先来分析一下具体的情况: 场景:在 Firefox 浏览器中使用 border-radius 给一个 div 添加圆角样式,但边框(border)不显示(无边框)。 原因:该元素的子元素采用了浮动(float)布局,并且没有被清除,导致父元素没有正常地包裹子元素,因此边框无法正常显示。 那么,如何解决这个问题呢? 一个简单而有效的解决方…

    css 2023年6月10日
    00
  • CSS样式定义的优先级顺序介绍

    下面我将为你详细讲解CSS样式定义的优先级顺序介绍的完整攻略。 1. 优先级顺序基本介绍 在Web开发中,我们经常需要使用CSS对页面元素进行样式定义。对于同一元素的多个样式定义,可能存在优先级的问题。CSS样式定义的优先级顺序介绍就是解决这类问题的关键。 CSS样式定义的优先级顺序由以下几个因素决定(按优先级降序排列):- !important优先级最高-…

    css 2023年6月9日
    00
  • HTML嵌入CSS样式(四种方法)

    HTML嵌入CSS样式的方法有以下四种: style标签嵌入CSS样式 在HTML文档的头部或body部分中通过style标签嵌入CSS样式。可以在style标签中添加任意数量的CSS样式规则。 代码示例: <!DOCTYPE html> <html> <head> <title>HTML嵌入CSS样式示例&l…

    Web开发基础 2023年3月15日
    00
  • div+pre标签的组合实现文本原格式显示与自动换行

    文本的原格式显示和自动换行是网页设计中非常常见的需求,可以使用div加pre标签的组合来实现。 步骤一:创建div标签,并设置样式 首先要创建一个div标签作为容器,并且设置样式。我们可以使用CSS设置它的width属性为100%,这会让div标签充满整个父容器的宽度。 <div style="width: 100%;"> &…

    css 2023年6月9日
    00
  • JQUERY THICKBOX弹出层插件

    下面是对 JQuery Thickbox弹出层插件的完整攻略。 什么是JQuery Thickbox弹出层插件? JQuery Thickbox是一个弹出层插件,它可以在网页中显示一个弹出层,主要用于展示图片、视频、网页等内容,同时可以增强网页的视觉效果和用户体验。 安装JQuery Thickbox插件 在使用JQuery Thickbox插件之前,需要先…

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