摘要:以下是封裝的代碼用原生封裝一個組件隱藏的引用初始化設(shè)置,一個頁面有且僅有一個設(shè)置類名設(shè)置隱藏顯示文本內(nèi)容類型持續(xù)時間確保上一次的已被清空上一次的還未走完不能為空不存在成功圖標錯誤圖標文字不傳的話默認置引用為空隱藏如果存在清空引用
以下是封裝的代碼
/**
* 用原生 JS 封裝一個 Toast 組件
*/
var Toast = {
// 隱藏的 setTimeOut 引用
hideTimeOut: null,
/**
* 初始化
*/
init: function () {
var toastNode = document.createElement("section");
toastNode.innerHTML = "111";
toastNode.id = "toastWaka"; // 設(shè)置id,一個頁面有且僅有一個Toast
toastNode.setAttribute("class", "toast"); // 設(shè)置類名
toastNode.style.display = "none"; // 設(shè)置隱藏
document.body.appendChild(toastNode);
},
/**
* 顯示Toast
* @param text 文本內(nèi)容
* @param type 類型 success error
* @param duration 持續(xù)時間
*/
show: function (text, type, duration) {
// 確保上一次的 TimeOut 已被清空
if (this.hideTimeOut) {
clearTimeout(this.hideTimeOut);
this.hideTimeOut = null;
// console.error("上一次的 TimeOut 還未走完!");
// return;
}
if (!text) {
console.error("text 不能為空!");
return;
}
var domToastWaka = document.getElementById("toastWaka");
console.log("domToastWaka", domToastWaka);
if (!domToastWaka) {
console.error("toastWaka DOM 不存在!");
return;
}
var domIconSuccess = domToastWaka.querySelector(".icon-success"); // 成功圖標
var domIconError = domToastWaka.querySelector(".icon-error"); // 錯誤圖標
var domToastText = domToastWaka.querySelector(".text"); // 文字
domToastText.innerHTML = text || "";
switch (type) {
case "success":
domIconSuccess.style.display = "inline-block";
domIconError.style.display = "none";
break;
case "error":
domIconSuccess.style.display = "none";
domIconError.style.display = "inline-block";
break;
default:
domIconSuccess.style.display = "none";
domIconError.style.display = "none";
break;
}
domToastWaka.style.display = "block";
// 不傳的話默認2s
var that = this;
this.hideTimeOut = setTimeout(function () {
domToastWaka.style.display = "none";
that.hideTimeOut = null; // 置 TimeOut 引用為空
}, duration || 2000);
},
/**
* 隱藏 Toast
*/
hide: function () {
// 如果 TimeOut 存在
if (this.hideTimeOut) {
// 清空 TimeOut 引用
clearTimeout(this.hideTimeOut);
this.hideTimeOut = null;
}
var domToastWaka = document.getElementById("toastWaka");
if (domToastWaka) {
domToastWaka.style.display = "none";
document.body.removeChild(domToastWaka);
}
}
};
css樣式設(shè)置
/*toast樣式*/ #toastWaka { position: absolute; display: none; left: 50%; bottom: 50%; z-index: 99999; margin: 0 auto; -webkit-transform: translate(-50%); transform: translate(-50%); width: 120px; height:40px; line-height: 40px; border-radius: 5px; text-align: center; color: #fff; background-color: rgba(000,000,000,0.5); } #toastWaka .text{ color: #fff; display: inline-block; font-size: 14px; position: absolute; top:0; bottom:0; right:0; left:0; }
如何使用
toast
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/101397.html
摘要:從概念來說,就是設(shè)備的物理像素與設(shè)備獨立像素也就是邏輯像素,以下就稱為邏輯像素的比率。通過這個標簽,我們可以實現(xiàn)初始縮放,就可以達到的邏輯像素眼睛在設(shè)備上看起來的,換句話說可以在上充滿豎屏的整個寬度。 前言:18年12月24日項目成功上線了,在經(jīng)歷了兩周的線上bug、UI以及代碼優(yōu)化后,解決了不少問題,于是再完善與優(yōu)化一下這個項目。 布局優(yōu)化 高清配置 antd-mobile 自定義...
摘要:騰訊地圖提供的只提供了經(jīng)緯度定位,而產(chǎn)品需要的是確認定位后獲取城市,進行同城商品檢索阿里云對象儲存處理文件上傳,比較意外的是騰訊對阿里云的域名前綴進行了封禁后臺不能配置,解決方案是讓后臺將該域名進行服務(wù)器域名代理。 mpvue開發(fā)小程序所遇問題及h5轉(zhuǎn)化方案 項目結(jié)構(gòu) |---build |---pages.js文件目錄 |---src ...
摘要:一簡單的使用主要用于需要動態(tài)渲染的組件,或者類似于提示組件注意創(chuàng)建的是一個組件構(gòu)造器,而不是一個具體的組件實例屬于的全局,在實際業(yè)務(wù)開發(fā)中我們很少使用,因為相比常用的寫法使用步驟要更加繁瑣一些。 最近在重構(gòu)公司的項目,有些組件想要封裝的更靈活,例如toast、loading、messageBox等彈窗組件,模仿了mint-ui封裝此類組件的方式封裝了自己的彈窗組件; mint-UI的t...
閱讀 1630·2023-04-25 18:19
閱讀 2078·2021-10-26 09:48
閱讀 1079·2021-10-09 09:44
閱讀 1730·2021-09-09 11:35
閱讀 3027·2019-08-30 15:54
閱讀 2021·2019-08-30 11:26
閱讀 2285·2019-08-29 17:06
閱讀 884·2019-08-29 16:38