1. 程式人生 > 實用技巧 >Vue自定義Popup彈窗元件|vue仿ios、微信彈窗|vue右鍵彈層

Vue自定義Popup彈窗元件|vue仿ios、微信彈窗|vue右鍵彈層

基於vue.js構建的輕量級Vue移動端彈出框元件Vpopup

vpopup 匯聚了有贊Vant、京東NutUI等Vue元件庫的Msg訊息框、Popup彈層、Dialog對話方塊、Toast弱提示、ActionSheet動作面板框、Notify通知框等功能。

用法

在main.js中引入vpopup元件

import Popup from './components/popup'

Vue.use(Popup)

vpopup支援標籤式函式式呼叫方式。

  • 標籤式
<template>
    <view class="demo">
        ...
        
        
<!-- 彈窗模板 --> <v-popup v-model="showDialog" type="ios" anim="fadeIn" title="標題" content="彈窗內容資訊,彈窗內容資訊!" shadeClose="false" xclose :btns="[ {...}, {...}, ]"
/> </view> </template>
  • 函式式

通過 this.$vpopup({...options}) 方式呼叫即可,函式會返回彈窗例項。

<script>
    export default {
        ...
        methods: {
            handleShowPopup() {
                let $el = this.$vpopup({
                    type: 'ios',
                    title: 
'標題', content: '彈窗內容資訊,彈窗內容資訊!', anim: 'scaleIn', shadeClose: false, xclose: true, onOpen: () => { console.log('vpopup is opened!') }, btns: [ {text: '取消'}, { text: '確定', style: 'color:#00e0a1', click: () => { $el.close() } } ] }); } } } </script>

大家可以根據專案實際需要,自行選擇呼叫方式。

  • msg訊息提示

<!-- msg提示 -->
<v-popup v-model="showMsg" anim="fadeIn" content="msg提示框測試(3s後窗口關閉)" shadeClose="false" time="3" />

<!-- msg提示(自定義背景) -->
<v-popup v-model="showMsgBg" anim="footer" content="自定義背景顏色" shade="false" time="2" 
    popup-style="background:rgba(0,0,0,.6);color:#fff;"
/>
  • actionsheet及footer動作面板框

<!-- ActionSheet底部彈出式選單 -->
<v-popup v-model="showActionSheet" anim="footer" type="actionsheet" :z-index="2020"
    content="彈窗內容,告知當前狀態、資訊和解決方法,描述文字儘量控制在三行內"
    :btns="[
        {text: '拍照', style: 'color:#09f;', disabled: true, click: handleInfo},
        {text: '從手機相簿選擇', style: 'color:#00e0a1;', click: handleInfo},
        {text: '儲存圖片', style: 'color:#e63d23;', click: () => null},
        {text: '取消', click: () => showActionSheet=false},
    ]"
/>

<!-- 底部對話方塊 -->
<v-popup v-model="showFooter" anim="footer" type="footer" :shadeClose="false" z-index="8080"
    content="確定刪除該條資料嗎?刪除後可在7天之內恢復資料,超過7天后資料就無法恢復啦!"
    :btns="[
        {text: '恢復', style: 'color:#00e0a1;', click: handleInfo},
        {text: '刪除', style: 'color:#ee0a24;', click: () => null},
        {text: '取消', style: 'color:#a9a9a9;', click: () => showFooter=false},
    ]"
/>
  • Toast弱提示框(loading | success | info三種svg圖示

<!-- Toast彈窗 -->
<v-popup v-model="showToast" type="toast" icon="loading" time="5" content="載入中..." />
<v-popup v-model="showToast" type="toast" icon="success" shade="false" time="3" content="成功提示" />
<v-popup v-model="showToast" type="toast" icon="fail" shade="false" time="3" content="失敗提示" />
  • android/微信彈窗效果

<!-- Android樣式1 -->
<v-popup v-model="showAndroid1" type="android" shadeClose="false" xclose title="標題內容" z-index="2001"
    content="彈窗內容,告知當前狀態、資訊和解決方法,描述文字儘量控制在三行內"
    :btns="[
        {text: '知道了', click: () => showAndroid1=false},
        {text: '確定', style: 'color:#00e0a1;', click: handleInfo},
    ]"
>
</v-popup>

so nice,看到了這裡,是不是感覺還行!這可是犧牲了一點國慶假期倒騰出來的