欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于 flexible 的 Vue 組件:Toast -- 顯示框效果

 更新時(shí)間:2017年12月26日 10:32:48   作者:冰揚(yáng)  
這篇文章主要介紹了基于 flexible 的 Vue 組件:Toast -- 顯示框效果,需要的朋友可以參考下

基于flexible.js 的 Vue 組件

前言:

  • 目前手頭的移動(dòng)端Vue項(xiàng)目是用手淘的 lib-flexible 作適配的,并用px2rem 來自動(dòng)轉(zhuǎn)換成rem。關(guān)于lib-flexible和px2rem的配置,請(qǐng)移步 vue-cli 配置 flexible 。
  • 由于使用rem作適配,導(dǎo)致現(xiàn)有的很多移動(dòng)端UI框架不能與之很好的配合,往往需要大動(dòng)干戈更改UI框架的樣式,背離了使用UI框架達(dá)到快速開發(fā)的初衷。
  • 為了以后項(xiàng)目的組件復(fù)用,以及提高開發(fā)可復(fù)用組件的能力,特把平時(shí)項(xiàng)目中 常用的、簡單的 組件單獨(dú)拎出來。
  • 此為小白之作,論代碼質(zhì)量、難易程度、復(fù)用度,遠(yuǎn)不及各位大佬之杰作,求輕噴。同時(shí),也懇請(qǐng)各位,提出意見和建議,不勝感激!
  • GitHub地址:vue-flexible-components

Toast -- 顯示框

效果展示

 

代碼分析

div包含icon小圖標(biāo)和文字說明,構(gòu)成簡單的dom結(jié)構(gòu),利用props定義變量值,用computed計(jì)算屬性對(duì)傳入的值進(jìn)行解構(gòu),watch監(jiān)聽彈框顯示,并結(jié)合.sync修飾符達(dá)到雙向數(shù)據(jù)綁定,同時(shí)用$emit向父組件派發(fā)事件,方便父組件監(jiān)聽回調(diào)。

dom結(jié)構(gòu)

<transition name="fade">
 <div class="Toast" v-if="toastShow">
 <div
 class="box"
 :style="positionTop"
 >
 <span
 :class="iconClass"
 :style="iconBg"
 v-if="iconIsShow"
 ></span>
 <p
 v-if="message"
 >{{message}}</p>
 </div>
 </div>
</transition>

props數(shù)據(jù)

props: {
 message: { // 提示內(nèi)容
 type: String,
 },
 toastShow: { // 是否顯示
 type: Boolean,
 default: false
 },
 iconClass: { // 背景圖片
 type: String,
 },
 iconImage: { // 自定義背景圖片
 },
 duration: { // 定時(shí)器
 type: Number,
 default: 1500
 },
 position: { // 彈出框位置
 type: String,
 default: '50%'
 }
},

computed

computed: {
 // 用于判斷顯示框位置
 positionTop() {
 return {
 top: this.position
 }
 },
 // 自定義父組件傳過來的背景圖片
 iconBg() {
 if (this.iconImage) {
 return {
 backgroundImage: `url(${this.iconImage})`
 }
 } else {
 return;
 }
 },
 // 用于判斷icon是否顯示
 iconIsShow() {
 if (this.iconClass == 'success') {
 return true;
 } else if (this.iconClass == 'close') {
 return true;
 } else if (this.iconClass == 'warning') {
 return true;
 } else if (this.iconImage) {
 return true;
 } else {
 return false;
 }
 }
},

watch

watch: {
 toastShow() {
 // 監(jiān)聽toast顯示,向父組件派發(fā)事件
 if (this.toastShow) {
 if (this.duration < 0) {
 this.$emit('toastClose');
 } else {
 setTimeout(()=>{
  this.$emit('update:toastShow', false) // 利用了.sync達(dá)到雙向數(shù)據(jù)綁定
  this.$emit('toastClose');
 }, this.duration)
 }
 }
 }
}

使用說明

組件地址: src/components/Toast.vue (不能npm,只能手動(dòng)下載使用)

下載并放入自己項(xiàng)目中 —— import 引入組件 —— components中注冊(cè)組件 —— 使用

props

props 說明 類型 可選值 默認(rèn)值
toastShow 控制顯示框顯示、隱藏。需添加.sync修飾符才能自動(dòng)關(guān)閉,詳見例子 Boolean false 
true
false
message 提示信息 String
iconClass icon小圖標(biāo) String success 
warning 
close
iconImage 自定義小圖標(biāo)(圖片需require引入)
duration 定時(shí)器(毫秒),控制彈框顯示時(shí)間,負(fù)數(shù)代表不執(zhí)行定時(shí)任務(wù) Number 1500
position 彈框位置(距頂) String '50%'

$emit

$emit 說明 參數(shù)
toastClose 彈框關(guān)閉回調(diào)


示例

// 默認(rèn)效果,只有提示信息
 <toast
 message = '默認(rèn)信息'
 :toastShow.sync = 'isShow1' // 需添加.sync修飾符,才能達(dá)到自動(dòng)關(guān)閉的效果,否則只能監(jiān)聽toastClose手動(dòng)關(guān)閉
 ></toast>  // 關(guān)于sync的說明,請(qǐng)看官網(wǎng)(主要是為了達(dá)到雙向數(shù)據(jù)綁定,子組件修改父組件狀態(tài))
 
 // 增加自帶小圖標(biāo)
 <toast
 message = 'success'
 iconClass = 'success'
 :toastShow.sync = 'isShow2'
 ></toast>
// 自定義類型
 <toast
 message = '自定義'
 position = '70%'
 :duration = '-1' //負(fù)數(shù)代表不執(zhí)行定時(shí)任務(wù),自己根據(jù)需要去關(guān)閉
 :iconImage='bg' // 自定義icon小圖標(biāo),在data中需require引入,看下面
 :toastShow = 'isShow5' // 因?yàn)樾枰謩?dòng)關(guān)閉,所以不需要.sync了
 @toastClose = 'isClose5' // 監(jiān)聽回調(diào),手動(dòng)關(guān)閉,看下面
 ></toast>
 
 data() {
 return {
 this.isShow5 : true,
 bg: require('../assets/logo.png'), // 圖片必須用require進(jìn)來
 }
 },
 isClose5() {
 setTimeout(()=>{
 this.isShow5 = false;
 }, 2000)
 }

總結(jié)

以上所述是小編給大家介紹的基于 flexible 的 Vue 組件:Toast -- 顯示框,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Vue如何進(jìn)行表單聯(lián)動(dòng)與級(jí)聯(lián)選擇

    詳解Vue如何進(jìn)行表單聯(lián)動(dòng)與級(jí)聯(lián)選擇

    表單聯(lián)動(dòng)和級(jí)聯(lián)選擇是Vue.js中常見的功能,在下面的文章中,我們將討論如何在Vue.js中實(shí)現(xiàn)表單聯(lián)動(dòng)和級(jí)聯(lián)選擇,感興趣的小伙伴可以了解一下
    2023-06-06
  • Vue注冊(cè)模塊與登錄狀態(tài)的持久化實(shí)現(xiàn)方法詳解

    Vue注冊(cè)模塊與登錄狀態(tài)的持久化實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Vue注冊(cè)模塊與登錄狀態(tài)的持久化實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue全局引入scss樣式文件的過程記錄

    vue全局引入scss樣式文件的過程記錄

    css文件可以直接引入到main.js中,scss文件如果沒有scss特殊語法也可以直接引入index.js,只有scss文件中的特殊語法全局引入的時(shí)候無法顯示,所以需要特殊處理,下面這篇文章主要給大家介紹了關(guān)于vue全局引入scss樣式文件的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Vue項(xiàng)目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實(shí)例

    Vue項(xiàng)目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實(shí)例

    這篇文章主要介紹了Vue項(xiàng)目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue3?setup中父組件通過Ref調(diào)用子組件的方法(實(shí)例代碼)

    vue3?setup中父組件通過Ref調(diào)用子組件的方法(實(shí)例代碼)

    這篇文章主要介紹了vue3?setup中父組件通過Ref調(diào)用子組件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • ESLint 是如何檢查 .vue 文件的

    ESLint 是如何檢查 .vue 文件的

    這篇文章主要介紹了ESLint 是如何檢查 .vue 文件的,幫助大家更好的理解和使用ESLINT,感興趣的朋友可以了解下
    2020-11-11
  • 在vue項(xiàng)目中使用Swiper插件詳解

    在vue項(xiàng)目中使用Swiper插件詳解

    這篇文章主要介紹了在vue項(xiàng)目中使用Swiper插件詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue數(shù)據(jù)控制視圖源碼解析

    vue數(shù)據(jù)控制視圖源碼解析

    本篇內(nèi)容給大家詳細(xì)分析了關(guān)于vue數(shù)據(jù)控制視圖的源碼以及重點(diǎn)做了注釋,有興趣的朋友參考學(xué)習(xí)下。
    2018-03-03
  • ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)

    ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)

    這篇文章主要為大家介紹了ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue實(shí)現(xiàn)原生下拉刷新

    vue實(shí)現(xiàn)原生下拉刷新

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)原生下拉刷新,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論