• Vue 之 Toast 消息提示插件的简单封装


    Vue 之 Toast 消息提示插件的简单封装

    目录

    Vue 之 Toast 消息提示插件的简单封装

    一、简单介绍

    二、实现原理

    三、注意事项

    四、效果预览

    五、实现

    六、项目源码


    一、简单介绍

    Vue 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。

    本节介绍,vue 中简单封装类似 Toast 的消息提示插件,然后在 vue 中任意位置都可以简单使用 Toast 消息显示最前,并且默认 3 秒后自动消失,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。

    操作环境:

    • win 10
    • node v14.20.0
    • npm 8.5.3
    • @vue/cli 5.0.6
    • vue 2.6.14
    • echarts 5.3.3

    二、实现原理

    1、vue 创建 Toast 消失提示组件的显示界面

    2、js 代码动态引入 Toast 的 vue界面,默认显示 3 秒消失(可以根据需要调整)

    3、Vue 配置全局属性 ,类似 this.$Toast('测试 Toast', 'info') 调用使用

    三、注意事项

    1、这里 Toast 使用了 IconFont 图片,根据需要可以自行修改引用图片,同时注意引入 iconfont

    import './assets/iconfont/iconfont.css' (main.js 中引入即可)

    四、效果预览

    点击 TestToast 按钮,Toast 消息显示3秒后,自动消失

    五、实现

    1、基础的 node ,npm、vue 的环境搭建

    参见博文:Web 前端 之 Vue vue cli 环境的搭建简单整理(简单的一些注意事项)

    2、使用 vue create project-name,创建工程(根据需要选择创建方式)

    3、引入 iconfont 图标,也可以自己到官网添加自己的图标

    iconfont 官网:iconfont-阿里巴巴矢量图标库

    4、在 components 中添加 toast 目录,创建 index.vue,index.js ,其中 index.vue 来构建 Toast 的显示界面

    1. <template>
    2. <transition name="fade">
    3. <div class="toast-container" v-if="visible">
    4. <div class="toast" :class="type">
    5. <div class="content">
    6. <i class="iconfont" :class="'icon-' + type">i>
    7. <span>{{ content }}span>
    8. div>
    9. <i v-if="hasClose" class="iconfont icon-close close" @click="visible = false">i>
    10. div>
    11. div>
    12. transition>
    13. template>
    14. <script>
    15. export default {
    16. name: 'toast-tip',
    17. data() {
    18. return {
    19. content: '',
    20. time: 3000,
    21. visible: false,
    22. //对应的动态显示class type四种类型:info, success, warning, error
    23. type: 'error',
    24. hasClose: true,
    25. }
    26. },
    27. mounted() {
    28. this.close();
    29. },
    30. methods: {
    31. close() {
    32. setTimeout(() => {
    33. this.visible = false;
    34. }, this.time);
    35. }
    36. }
    37. }
    38. script>
    39. <style lang="scss" scoped>
    40. /* 动画效果 淡入淡出 */
    41. .fade-enter-active,
    42. .fade-leave-active {
    43. transition: all 0.5s ease;
    44. }
    45. .fade-enter,
    46. .fade-leave-active {
    47. opacity: 0;
    48. }
    49. .toast-container {
    50. position: fixed;
    51. top: 0;
    52. right: 0;
    53. bottom: 0;
    54. left: 0;
    55. display: flex;
    56. // 横居中
    57. justify-content: center;
    58. // 竖居中
    59. align-items: center;
    60. z-index: 99999;
    61. .toast {
    62. width: 340px;
    63. padding: 20px;
    64. border-radius: 6px;
    65. font-size: 16px;
    66. display: flex;
    67. justify-content: space-between;
    68. align-items: center;
    69. .content {
    70. span {
    71. padding-left: 10px;
    72. }
    73. }
    74. // 不同类型下的Toast 的显示样式
    75. &.info {
    76. background: #edf2fc;
    77. border: 1px solid #e0eafc;
    78. color: #909399;
    79. }
    80. &.success {
    81. background: #f0f9eb;
    82. border: 1px solid #e7f9de;
    83. color: #67c23a;
    84. }
    85. &.warning {
    86. background: #fdf6ec;
    87. border: 1px solid #f9ecda;
    88. color: #e6a23c;
    89. }
    90. &.error {
    91. background: #fef0f0;
    92. border: 1px solid #fbdfdf;
    93. color: #f56c6c;
    94. }
    95. //关闭按钮的样式
    96. .close {
    97. cursor: pointer;
    98. color: #909399;
    99. }
    100. }
    101. }
    102. style>

    5、其中 index.js 来构建 Toast 的代码管理 vue 的数据内容与显示

    1. // 引入 vue 和 创建的 toast vue
    2. import Vue from 'vue'
    3. import Toast from './index.vue'
    4. // 创建 Toast Vue 子类
    5. const ToastMsg = Vue.extend(Toast)
    6. // 传入内容和 类型
    7. Toast.install = (options, type) => {
    8. // 判断数据类型,并对应处理
    9. if (options === undefined || options === null) {
    10. options = {
    11. content: ''
    12. }
    13. } else if (typeof options === 'string' || typeof options === 'number') {
    14. options = {
    15. content: options
    16. }
    17. if (type !== undefined && options !== null) {
    18. options.type = type
    19. }
    20. }
    21. // 创建Toast实例,传入 data 数据
    22. let instance = new ToastMsg({
    23. data: options
    24. }).$mount()
    25. // 添加到 html 页面
    26. document.body.appendChild(instance.$el)
    27. // 在修改数据之后立即使用这个方法,获取更新后的 DOM
    28. Vue.nextTick(() => {
    29. instance.visible = true
    30. })
    31. }
    32. export default Toast.install

    6、在 main.js 中添加 Toast 全局引入

    7、在 HelloWorld 简单添加一个按钮,调用即可,如图

     8、在终端cmd 中 npm run serve 运行,效果如图

    六、项目源码

    使用说明:1、npm install ; 2、npm run serve

    csdn:Vue之Toast消息提示插件的简单封装-Javascript文档类资源-CSDN下载

  • 相关阅读:
    【搜题公众号】详解搜题公众号搭建教程(附赠题库)
    【LeetCode-简单题 KMP匹配算法】28. 找出字符串中第一个匹配项的下标
    【Swift算法学习】 LeetCode 同构字符串
    java spring cloud 企业工程管理系统源码+二次开发+定制化服务
    什么是MDM
    【前端】-css的详解
    ASP.NET Core 6框架揭秘实例演示[35]:利用Session保留语境
    程序员的护城河
    Socks5代理:数字化时代的技术支柱
    C#底层库--操作文件帮助类FileHelper(获取目录的所有文件)
  • 原文地址:https://blog.csdn.net/u014361280/article/details/126105373