微信小程序自定义toast组件的方法详解【含动画】

我来为你详细讲解“微信小程序自定义toast组件的方法详解【含动画】”的攻略。

什么是Toast组件

Toast组件是一种提示框,通常用于向用户展示一些简短的信息或提示。在微信小程序中,Toast组件比较常见,通过它可以向用户提示请求数据的进度,或者一些操作的结果信息。

开始制作自定义Toast组件

1. 创建承载Toast的组件

在 WeUI 中,Toast组件是在基础组件之上的,因此你需要先在基础组件里新建一个名为toast的组件。

<template name="toast">
  <view class="weui-toast">
    <block wx:if="{{type!='text'}}">
        <view class="weui-mask"></view>
    </block>
    <view class="weui-toast__content">
        <block wx:if="{{type!='loading'}}">
        {{content}}
        </block>
        <block wx:if="{{type=='loading'}}">
          <image src="https://weui.io/images/loading.svg" class="weui-toast__loading" />
          <view class="weui-toast__loading-box"></view>
          <view class="weui-toast__loading-text">{{content}}</view>
        </block>
    </view>
  </view>
</template>

2. 定义组件样式

我们需要为toast组件添加样式。这里我们定义了两种样式,一种为text,一种为loading

// toast样式
.weui-toast {
  position: fixed;
  left: 0;
  top: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  z-index: 5000;

  &__content {
    display: flex;
    height: 100%;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #fff;
    font-size: 16px;
    font-weight: 400;

    &--text {
      padding: 15px 20px;
      background-color: rgba(0,0,0,.5);
      border-radius: 5px;
      box-shadow: 0 10px 30px rgba(0,0,0,.2);
    }

    &--loading {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      .weui-toast__loading {
        width: 50px;
        height: 50px;
        animation: rotate 1s linear infinite;

        @keyframes rotate {
          from { transform: rotate(0deg); }
          to   { transform: rotate(360deg); }
        }
      }
      .weui-toast__loading-box {
        margin-top: 10px;
        width: 100%;
        height: 1px;
        background-color: rgba(255, 255, 255, .2);
        position: relative;
        &:before,
        &:after {
          position: absolute;
          content: '';
          top: 0;
          left: 50%;
          width: 10px;
          height: 10px;
          margin-left: -5px;
          border-radius: 100%;
          background-color: #fff;
          animation: pulse 1s linear infinite;
        }
        &:before {
          margin-left:-15px;
          animation-delay:.5s;
        }
        &:after {
          margin-left:5px;
          animation-delay:.8s;
        }
      }
      .weui-toast__loading-text {
        font-size: 16px;
        line-height: 32px;
        margin-top: 10px;
      }
    }
  }

  &__mask {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0,0,0,.3);
    z-index: 5001;
  }
}

3. 定义组件属性与方法

我们需要在toast组件中定义属性和方法。其中,type是toast类型,content是toast显示的内容,duration是toast显示的时间。

Component({
  properties: {
    type: {
      type: String,
      value: 'text'
    },
    content: {
      type: String,
      value: ''
    },
    duration: {
      type: Number,
      value: 2000
    }
  },
  methods: {
    show: function () {
      this.setData({
        show: true
      });
      setTimeout(() => {
        this.hide();
      }, this.data.duration);
    },
    hide: function () {
      this.setData({
        show: false
      });
    }
  }
})

至此,一个简单的自定义toast组件就已完成。接下来我们可以在项目中使用这个组件了。

4. 在页面中使用自定义Toast组件

下面是在页面中使用toast的示例。在这个例子中,我们创建了两个toast组件,一个是text类型,另一个是loading类型。

<toast id="textToast" duration="2000" content="这是一个text toats" type="text"></toast>
<toast id="loadingToast" duration="3000" content="这是一个loading toats" type="loading" ref="loadingToast"></toast>

在JavaScript代码中,我们可以通过调用toastshow()hide()方法来显示或隐藏toast组件。

Page({
  showToast: function(e) {
    var id = e.currentTarget.id;
    if (id === 'textToast') {
      this.selectComponent('#textToast').show();
    } else if ( id === 'loadingToast') {
      this.selectComponent('#loadingToast').show();
    }
  },
  hideToast: function () {
    this.selectComponent('#loadingToast').hide();
  }
})

showToast方法中,我们通过selectComponent方法获取到了toast组件,并且调用show()方法来显示toast组件。在hideToast方法中,我们调用了toast组件的hide()方法来隐藏组件。

通过以上步骤,自定义toast组件已经完成了。在应用中,我们通过调用show()hide()方法来控制toast的显示和隐藏。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序自定义toast组件的方法详解【含动画】 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 详解Vue的列表渲染

    下面我会详细讲解“详解Vue的列表渲染”的完整攻略。 什么是Vue的列表渲染 Vue的列表渲染是指Vue提供的一个功能,可以让我们在HTML模板中快速创建一个和数组相关的数据列表。该功能常用于需要遍历数据并输出模板多次的场景,比如电商网站的商品列表、新闻博客类网站的文章列表等。常用的列表渲染指令有v-for和v-bind。 Vue的列表渲染的语法 Vue提供…

    Vue 2023年5月27日
    00
  • Vue3中操作dom的四种方式总结(建议收藏!)

    关于Vue3中操作dom的四种方式总结,建议收藏!这个主题,我们可以分成四个部分来介绍。 直接操作DOM(不推荐) 我们先来看第一种方式,直接操作DOM。在Vue3中,这种方式已经不再被推荐使用。由于直接操作DOM可能会造成状态和视图的不一致,可能还会影响性能。不过我们还是需要知道如何使用这种方式,以便我们可以避免它。 在Vue3中,我们可以使用 ref 来…

    Vue 2023年5月28日
    00
  • 基于vue开发微信小程序mpvue-docs跳转页面功能

    下面是基于Vue开发微信小程序MPVue-Docs跳转页面功能的完整攻略: 基本概念 在 MPVue-Docs 中,可以通过使用 vue-router 来实现页面的切换和跳转。vue-router 是 Vue.js 官方提供的路由管理器,可以在视图之间进行无缝的切换。 准备工作 在 mpvue 项目中安装 vue-router: npm install –…

    Vue 2023年5月27日
    00
  • vue函数@click.prevent的使用解析

    当我们使用Vue.js开发前端应用时,经常会在模版中使用@click指令来响应用户的点击事件,在一般情况下,点击事件会导致页面的跳转或刷新等行为,但是有时候我们需要控制点击事件的默认行为,这时候就需要使用@click.prevent修饰符。 @click.prevent能够阻止点击事件的默认行为,例如在表单的提交按钮中使用@click.prevent可以阻止…

    Vue 2023年5月28日
    00
  • Vue 全家桶实现移动端酷狗音乐功能

    Vue 全家桶实现移动端酷狗音乐功能 一、技术栈概述 本文的前端技术栈包括: Vue.js:一个用于构建用户界面的渐进式框架。 Vuex:Vue.js 的状态管理模式及库。 Vue-Router:Vue.js 的路由管理器。 Axios:一个基于 Promise 的 HTTP 库,用于浏览器和 Node.js。 二、项目准备 安装Vue-cli Vue-cl…

    Vue 2023年5月28日
    00
  • Vue.js中轻松解决v-for执行出错的三个方案

    下面是对“Vue.js中轻松解决v-for执行出错的三个方案”的完整攻略。 问题背景 在使用 Vue.js 进行开发过程中,我们经常会使用 v-for 来遍历一个数据列表,并生成对应的视图。但是,在某些情况下,我们可能会遇到 v-for 执行出错的问题,这时我们需要使用一些方法来解决这个问题。 问题示例 以下是一个常见的使用 v-for 遍历数组的示例: &…

    Vue 2023年5月28日
    00
  • vue2单元测试环境搭建

    Vue2单元测试环境搭建 单元测试是为了保证代码质量而必要的步骤。Vue2的单元测试环境搭建涉及的技术包括mocha、chai、sinon等。本文将详细讲述Vue2单元测试环境搭建的步骤和示例。 步骤 安装依赖 首先需要安装mocha、chai、sinon和vue-test-utils等依赖。 npm install –save-dev mocha cha…

    Vue 2023年5月28日
    00
  • vue组件横向树实现代码

    实现一个 vue 组件横向树需要以下步骤: 第一步:安装依赖 横向树的实现需要使用到 d3 (Data-Driven Documents) 库,而在 Vue 中使用 d3 需要先安装依赖。可以通过 npm 来安装: npm install d3@5.15.0 对于 Vue 项目,可以在 main.js 中引入 d3 库,以便在整个项目中使用: import …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部