vue自定義提示框組件

不想要elementui的消息提示,自定義一個組件系統統一使用
一、寫頁面
vue (我放的目錄是src/plugins/message.vue)(這里面使用elementui 里面icon 需要單獨引入)

<template><Transition name="down"><div><!-- 成功顯示 --><div class="message_block message_sussess" v-if="type=='success'"><div class="message_icon sussess_text"><el-icon><SuccessFilled /></el-icon><i class="iconfont icon-warning"></i></div><div class="message_text sussess_text">{{text}}</div></div><!-- 失敗顯示 --><div class="message_block message_error" v-else><div class="message_icon error_text"><el-icon><Close /></el-icon><i class="iconfont icon-warning"></i></div><div class="message_text error_text">{{text}}</div></div></div></Transition>
</template>
<script>
import { ref } from 'vue'
import { ArrowDown, SuccessFilled, CloseBold, Close } from "@element-plus/icons-vue";
export default {name: 'Message',props: {type: {type: String,default: 'success'},text: {type: String,default: '保存成功'}},components: {ArrowDown, SuccessFilled, CloseBold, Close},
}
</script>
<style scoped lang="scss">
.down {&-enter {&-from {transform: translate3d(0, -75px, 0);opacity: 0;}&-active {transition: all 0.5s;}&-to {transform: none;opacity: 1;}}
}
.message_block {width: 194px;min-height: 191px;height: auto;position: fixed;z-index: 9999;left: 53%;margin-left: -150px;top: 20%;padding: 0 25px;border: 1px solid #e4e4e4;border-radius: 8px 8px 8px 8px;padding-bottom: 10px;i {margin-right: 4px;vertical-align: middle;}.text {vertical-align: middle;}.message_text {font-size: 18px;text-align: center;overflow: hidden;margin-top: 16px;}.message_icon {text-align: center;margin-top: 29px;height: 70px;svg {width: 70px;height: 70px;}}
}.message_sussess {background: linear-gradient(180deg, #ecfff4 0%, #ffffff 75%);box-shadow: 0px 0px 20px 0px rgba(93, 134, 116, 0.2);.sussess_text {color: #2ec081;}
}
.message_error {background: linear-gradient(180deg, #f193a4 0%, #ffffff 75%);box-shadow: 0px 0px 20px 0px rgba(204, 36, 36, 0.2);.error_text {color: red;}
}
</style>

js: (目錄:src/plugins/message.js)

// 提供一個能夠顯示Message組件的函數
// 這個函數將來:導入直接使用,也可以掛載在vue實例原型上import { createVNode, render } from "vue";
import MessageVue from "./message.vue";// DOM容器
const div = document.createElement("div");
div.setAttribute("class", "xtx-msssage-container");
document.body.appendChild(div);// 定時器標識
let timer = null;
let showTime = 3000;
export default ({ type, text, time }) => {// 渲染組件// 1. 導入消息提示組件// 2. 將消息提示組件編譯為虛擬節點(dom節點)// createVNode(組件,屬性對象(props))const vnode = createVNode(MessageVue, { type, text, time });if (time) {showTime = time;}// 3. 準備一個裝載消息提示組件的DOM容器// 4. 將虛擬節點渲染再容器中// render(虛擬節點,DOM容器)render(vnode, div);// 5. 3s后銷毀組件clearTimeout(timer);timer = setTimeout(() => {render(null, div);}, showTime);
};

二、注冊
① 掛在全局
src/plugins/index.js

import tab from "./tab";
import auth from "./auth";
import cache from "./cache";
import modal from "./modal";
import download from "./download";
import messageVue from "./message";//引入jsexport default function installPlugins(app) {// 頁簽操作app.config.globalProperties.$tab = tab;// 認證對象app.config.globalProperties.$auth = auth;// 緩存對象app.config.globalProperties.$cache = cache;// 模態框對象app.config.globalProperties.$modal = modal;// 下載文件app.config.globalProperties.$download = download;app.config.globalProperties.$messageVue = messageVue;//設置名稱
}

(檢查main.js 是否引入使用plugins/index.js、沒有引入記得加入這兩句)

import plugins from "./plugins"; // plugins
app.use(plugins);

三、使用
① vue文件使用

const { proxy } = getCurrentInstance();
//完成使用 type值有error和success默認success。time默認30000 這兩個都選傳
proxy.$messageVue({  text: '保存成功' })
//完成使用:
proxy.$messageVue({ type: 'error', text: res.message,time:2000 })

② js使用
我們是接口返回報錯也統一使用這個提示彈窗
所以在request.js里面

import messageVue from "@/plugins/message.js";
//使用
messageVue({ type: "error", text: msg });

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88621.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88621.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88621.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自動駕駛數據集綜述:統計特征、標注質量與未來展望

自動駕駛數據集綜述&#xff1a;統計特征、標注質量與未來展望 A Survey on Autonomous Driving Datasets: Statistics, Annotation Quality, and a Future Outlook 得益于硬件和深度學習技術的快速進步&#xff0c;自動駕駛近年來迅速發展并展現出良好的性能。高質量的數據集…

redis數據結構和數據類型

1.動態字符串SIMPLE DYNAMIC STRING(SDS)觀察上圖中的SDS結構&#xff0c;頭部包含字符串長度和分配的空間&#xff0c;可以以O&#xff08;1&#xff09;的時間復雜度計算出字符串長度&#xff0c;并且有了字符串長度后可以無視c語言的字符串缺陷&#xff08;\0作為結尾標識&a…

深度學習--神經網絡

一、深度學習的簡單概念深度學習是一種模仿人類大腦的運行方式&#xff0c;從大量數據中學習特征的學習模式。深度學習是機器學習的子集&#xff0c;它與機器學習的關系如下&#xff1a;二、感知神經網絡2.1簡單定義神經網絡&#xff08;Neural Networks&#xff09;是一種模擬…

.NET 程序的強名稱簽名與安全防護技術干貨

在 .NET 開發領域&#xff0c;保障程序的安全性和完整性至關重要。強名稱簽名和有效的安全防護措施是實現這一目標的關鍵手段。下面將詳細介紹 .NET 程序的強名稱簽名以及相關的安全防護方法。一、什么是強名稱簽名強名稱簽名是 .NET 框架提供的一種安全機制&#xff0c;其主要…

DNS(Domain Name System,域名系統)

目錄 **一、DNS的核心功能****二、DNS的工作原理****1. 解析流程(以車載導航請求為例)****2. 關鍵機制****三、車載以太網中DNS的特殊性**1. **高可靠性要求**2. **低延遲優化**3. **安全挑戰與防護****四、DNS相關協議與技術****五、車載DNS配置示例****六、DNS故障排查工具…

優化 ECharts 多條折線:折線數據不完整導致的X軸日期錯亂問題

目錄 一、簡單介紹 1.1 常見類型 二、時間軸錯亂問題 2.1 示例 2.2 示例完整代碼 2.3 問題分析 2.4 修復方法 第一步 第二步 2.5 優化后完整代碼 一、簡單介紹 ECharts 是一款基于 JavaScript 的數據可視化圖表庫&#xff0c;動態圖表是 ECharts 的一個重要應用場景…

網絡安全之注入攻擊:原理、危害與防御之道

網絡安全之注入攻擊&#xff1a;原理、危害與防御之道 引言 在OWASP Top 10安全風險榜單中&#xff0c;注入攻擊常年占據首位。2023年Verizon數據泄露調查報告顯示&#xff0c;67%的Web應用漏洞與注入類攻擊直接相關。本文從技術視角系統解析注入攻擊的核心原理、典型場景及防御…

Python爬蟲動態IP代理報錯全解析:從問題定位到實戰優化

目錄 一、代理IP失效&#xff1a;爬蟲的"隱形殺手" 1.1 失效場景復現 1.2 解決方案 二、403封禁&#xff1a;反爬機制的"精準打擊" 2.1 封禁原理剖析 2.2 破解方案 三、速度瓶頸&#xff1a;代理性能的"致命短板" 3.1 性能對比測試 3.2…

機器學習基礎知識【 激活函數、損失函數、優化器、 正則化、調度器、指標函數】

目錄標題機器學習基礎知識概覽激活函數 (Activation Functions)損失函數 (Loss Functions / Cost Functions)優化器 (Optimizers)正則化 (Regularization)調度器 (Schedulers / Learning Rate Schedulers)指標函數 (Metric Functions)其他重要概念訓練流程機器學習基礎知識概覽…

【達夢數據庫|JPA】后端數據庫國產化遷移記錄

項目背景 經典的springbootjpa&#xff0c;java1.8數據庫MySQL需要遷移到國產化數據庫達夢上 開發環境安裝 最簡單的方式&#xff1a; 官方網站下載安裝時選擇“典型安裝”即可 Linux安裝 國產化一律上docer不要猶豫 下載三方提供的docker鏡像按頁面文檔啟動即可同上下載官…

ubuntu22默認安裝firefox使用snap安裝還老打不開解決辦法

終極解決方案&#xff08;100% 避免 Snap 版 Firefox&#xff09; 步驟 1&#xff1a;徹底移除 Snap 版 Firefox bash sudo snap remove --purge firefox 步驟 2&#xff1a;添加 Mozilla 官方 PPA&#xff08;提供 .deb 版 Firefox&#xff09; bash sudo add-apt-repository …

MyBatis02-mybatis-config.xml配置文件講解

mybatis-config.xml 是 MyBatis 的核心配置文件&#xff0c;用于配置整個 MyBatis 框架的全局行為&#xff0c;比如環境&#xff08;數據源&#xff09;、事務、類型別名、插件、Mapper 映射等。示例&#xff1a;<?xml version"1.0" encoding"UTF-8" ?…

合上電腦不關機

在Debian 系統上&#xff0c;如何實現合上電腦不關機的效果&#xff1f; 可以修改配置文件&#xff1a; sudo vim /etc/systemd/logind.conf1.找到 HandleLidSwitch &#xff0c;將其值改為 ignore &#xff08;處理蓋子開關為忽略&#xff09; 2.將 LidSwitchIgnoreInhibited …

服務器深夜告警?可能是攻擊前兆!

凌晨三點&#xff0c;刺耳的告警鈴聲把你從夢中驚醒&#xff1a;服務器CPU 100%&#xff0c;內存耗盡&#xff01;你手忙腳亂地登錄服務器&#xff0c;發現某個進程瘋狂占用資源。是程序Bug&#xff1f;還是業務突增&#xff1f;排查半天&#xff0c;最后在角落的日志里發現蛛絲…

重學前端003 --- CSS 顏色

文章目錄文檔聲明head顏色模型div根據在這里 Freecodecamp 實踐&#xff0c;記錄筆記總結。 文檔聲明 在文檔頂部添加 DOCTYPE html 聲明 <!DOCTYPE html>head title 元素為搜索引擎提供了有關頁面的額外信息。 它還通過以下兩種方式顯示 title 元素的內容&#xff1a…

學弟讓我幫忙寫一個學生管理系統的后端,我直接上科技

&#x1f4dd;個人主頁&#xff1a;哈__ 期待您的關注 目錄 一、飛算AI簡介 二、系統開發 2.1 需求提出 2.2 系統模塊的設計 2.3 數據庫表格設計 2.4 接口規范設計 2.5 源碼生成 三、總結 學弟這兩天有一個小組合作的任務&#xff0c;應該是培訓吧要寫一個學生管理…

《P3038 [USACO11DEC] Grass Planting G》

題目描述 給出一棵有 n 個節點的樹&#xff0c;有 m 個如下所示的操作&#xff1a; 將兩個節點之間的 路徑上的邊 的權值均加一。 查詢兩個節點之間的 那一條邊 的權值&#xff0c;保證兩個節點直接相連。 初始邊權均為 0。 輸入格式 第一行兩個整數 n,m&#xff0c;含義…

NestJS

文章的地址 NestJShttps://equinox-primrose-ceb.notion.site/NestJS-22d4b8031e0f80b39fc7fe1ff111f802 不產生測試的.spec.ts文件的配置 "generateOptions": {"spec": false }創建模型 nest g m xx 創建服務 nest g s xx 創建處理 nest g c xx CRU…

vue入門學習教程

一、介紹 vue是一款用于構建用戶界面的 JavaScript 框架。基于標準 HTML、CSS 和 JavaScript 構建&#xff0c;并提供了一套聲明式的、組件化的編程模型&#xff0c;幫助你高效地開發用戶界面。 二、使用和安裝 方法1&#xff1a;在html代碼中直接使用<script>導入&…

C++類對象多態基礎語法【超詳細】

文章目錄前言1. 虛函數1.1 現象1.2 多態1.3 析構函數1.4 override和final1.5 重載、隱藏、重寫對比2. 抽象類2.1 抽象類特性2.2 抽象類的應用場景3. 多態實現的底層原理4. 靜態綁定和動態綁定5. 總結前言 多態是面向對象三大特性之一&#xff0c;也是細節最多的語法之一。學習…