message.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. const message = {
  2. background: "", // 背景颜色
  3. outside: "", // 外框元素
  4. inside: "", // 信息显示元素
  5. insideSetTime: "", // 信息移除setTime
  6. body: "", // body元素
  7. time: 0, // 显示时间
  8. run(msg = "success", type = "success", time = 2000) {
  9. // 显示时间
  10. this.time = time;
  11. // 背景色
  12. this.background = this.backgroundCheck(type);
  13. // body
  14. this.body = document.body;
  15. // 时间戳id
  16. let id = "inside_box" + Date.now();
  17. // 检查是否存在外框
  18. let outsideShow = document.getElementById("message_box_show");
  19. if (outsideShow != null) {
  20. // 文字显示区域
  21. this.inside = document.createElement("div");
  22. this.inside.setAttribute("class", "message_box_inside cc-display");
  23. this.inside.setAttribute("id", id);
  24. this.inside.style.backgroundColor = this.background;
  25. this.inside.innerHTML = `<span>${msg}</span>`;
  26. outsideShow.appendChild(this.inside);
  27. } else {
  28. // 最外框
  29. this.outside = document.createElement("div");
  30. this.outside.setAttribute("id", "message_box_outside");
  31. this.outside.setAttribute("class", "cc-display");
  32. // 中间区域
  33. outsideShow = document.createElement("div");
  34. outsideShow.setAttribute("id", "message_box_show");
  35. // 文字显示区域
  36. this.inside = document.createElement("div");
  37. this.inside.setAttribute("class", "message_box_inside cc-display");
  38. this.inside.setAttribute("id", id);
  39. this.inside.style.backgroundColor = this.background;
  40. this.inside.innerHTML = `<span>${msg}</span>`;
  41. // 显示
  42. outsideShow.appendChild(this.inside);
  43. this.outside.appendChild(outsideShow);
  44. this.body.appendChild(this.outside);
  45. }
  46. // 添加监听
  47. this[id] = this.insideTime(this.inside, outsideShow);
  48. this.boxShowTime(this.inside, id, outsideShow);
  49. },
  50. // 信息显示区域展示
  51. boxShowTime(inside, insideSetTime, outsideShow) {
  52. inside.addEventListener("mouseleave", () => {
  53. // 离开后设置隐藏时间
  54. this[insideSetTime] = this.insideTime(inside, outsideShow);
  55. });
  56. inside.addEventListener("mouseenter", () => {
  57. // 清除隐藏设置
  58. clearTimeout(this[insideSetTime]);
  59. });
  60. },
  61. // 信息区显示
  62. insideTime(inside, outsideShow) {
  63. let insideSetTime = setTimeout(() => {
  64. outsideShow.removeChild(inside);
  65. }, this.time);
  66. return insideSetTime;
  67. },
  68. // 判定显示颜色
  69. backgroundCheck(type) {
  70. if (type === "success") return "#67C23A";
  71. if (type === "error") return "#F56C6C";
  72. if (type === "warning") return "#E6A23C";
  73. // if (type === 'info') return '#909399';
  74. return "#909399"; // 默认级别
  75. },
  76. };
  77. export default message;