可能你注意到在一些网站上有下面这个特别酷炫的弹出框,用户体验来讲感受颇有层次动态感,比静态的模态弹出框/消息提示更能吸引人注意,给人一种醒目,很酷的感受!css
这里使用的就是SweetAlert2库。html
SweetAlert2是SweetAlert-js的升级版本,它解决了SweetAlert-js中不能嵌入HTML标签的问题,并对弹出对话框进行了优化,同时提供对各类表单元素的支持,还增长了5种情景模式的模态对话框,支持响应式布局。如今还支持toast消息提示框,输入表单验证等。它是jsDelivr排名上第23名的最受欢迎的包。vue
能够经过yarn或npm来安装sweetalert2对话框插件。git
npm install --save sweetalert2 yarn add sweetalert2
html直接引入方式:es6
<script src="sweetalert2.all.min.js"></script> <!-- Optional: include a polyfill for ES6 Promises for IE11 --> <script src="https://cdn.jsdelivr.net/npm/promise-polyfill"></script> <script src="sweetalert2.min.js"></script> <link rel="stylesheet" href="sweetalert2.min.css">
采用es6方式引入使用:github
import Swal from 'sweetalert2/dist/sweetalert2.js' import 'sweetalert2/src/sweetalert2.scss' // ES6 Modules or TypeScript import Swal from 'sweetalert2' // CommonJS const Swal = require('sweetalert2')
而后直接输入如下代码便可看到上图的效果:vue-cli
Swal.fire({ title: 'Good Job!', text: 'Keep moving forward', icon: 'success', confirmButtonText: 'Ok' })
已经有现成的轮子写好了对应的vue版的sweetalert2 ,名称为: vue-sweetalert2. 可搜索查看该包相详细使用说明。这里简单介绍下经常使用用法。npm
// vue-cli使用方法 // main.js import Vue from 'vue'; import VueSweetalert2 from 'vue-sweetalert2'; const options = { confirmButtonColor: '#41b882', cancelButtonColor: '#ff7674', }; Vue.use(VueSweetalert2, options); // vue-nuxt使用方法 // 1. npm包导入 "vue-sweetalert2": "^3.0.6", // 2. nuxt.config.js中引入默认配置 modules: [ [ 'vue-sweetalert2/nuxt', { confirmButtonColor: '#41b882', cancelButtonColor: '#ff7674' } ] ]
注意: 在nuxt集成中,默认的this.$swal引入的是 sweetalert2的 swal.fire方法,而非swal实例。promise
// 写法一 this.$swal('成功', '成绩获取成功!', 'success') // 写法二 this.$swal({ icon: 'success', text: '最新数据更新成功!', confirmButtonText: '好的' }) 2. 弹出一个消息提示,不是弹出框 this.$swal({ icon: 'success', position: 'top-right', toast: true, timer: 3000, timerProgressBar: true, title: '数据更新完成!', showConfirmButton: false, allowOutsideClick: true, allowEscapeKey: true, onOpen: (toast) => { toast.addEventListener('mouseenter', Swal.stopTimer) toast.addEventListener('mouseleave', Swal.resumeTimer) } })
this.$swal({}).then((res) => { console.log(res) }) // 对应的res返回的是一个对象,包含以下信息: dismiss: "timer" isConfirmed: false isDismissed: true value: '' ``` 能够经过以上属性获取弹出框消失类型或者是不是关闭或者确认按钮响应的。其中dismiss是个字符串来表明 关闭的类型: module:sweetalert2.Swal.DismissReason 可选值为: cancel, backdrop, close, esc, timer ## 4. 图标自定义 ``` ({ title:'成功登陆!', showCancelButton: false, closeOnConfirm: false, imageUrl: 'https://unsplash.it/400/200', imageWidth: 200, imageHeight: 200, animation: false }) ``` 还有更多其余好玩的用法,能够到仓库中查看相关详细文档。 中文文档: http://mishengqiang.com/sweetalert2/ 英文文档: https://sweetalert2.github.i