首页 > 其他分享 >封装加载动画组件,利用slot标签与vuex实现

封装加载动画组件,利用slot标签与vuex实现

时间:2022-09-25 17:02:45浏览次数:57  
标签:slot opacity loading 封装 21 animation background vuex view

 

实现效果: 

加载时:

 

 

加载完成时;

 

 

 

实现代码:

通过vuex传入一个布尔值loading控制加载动画显示与否,动画关闭时,通过slot标签显示本组件中包含的其他内容

组件代码:

<template>
    <view>
        <view class="loading-21 spinner" v-if="loading">
            <view></view>
            <view></view>
            <view></view>
            <view></view>
            <view></view>
            <view></view>
        </view>
        <view style="height: 100%;" v-else>
            <slot></slot>
        </view>
    </view>
</template>

<script>
    import {
        // mapState
    } from 'vuex'
    export default {
        data() {
            return {
                loading: false
            }
        },
        computed: {
            // ...mapState(['loading'])
        },
        methods: {},
        mounted() {}
    }
</script>

<style scoped>
    .spinner {
        margin: 100px auto;
        /* width: 50px; */
        /* height: 60px; */
        text-align: center;
        position: relative;
    }

    .loading-21 view {
        width: 40upx;
        height: 40upx;
        border-radius: 20upx;
        backface-visibility: hidden;
        position: absolute;
        animation-name: move;
        animation-timing-function: cubic-bezier(0.4, 0, 1, 0.8);
        animation-iteration-count: infinite;
        animation-duration: 3s;
        top: calc(50% - 20upx);
        left: 50%;
        transform-origin: -20upx center;
    }

    .loading-21 view:nth-child(1) {
        background: #d24e51;
        animation-delay: -0.5s;
        opacity: 0;
    }

    .loading-21 view:nth-child(2) {
        background: #d24e51;
        animation-delay: -1s;
        opacity: 0;
    }

    .loading-21 view:nth-child(3) {
        background: #d24e51;
        animation-delay: -1.5s;
        opacity: 0;
    }

    .loading-21 view:nth-child(4) {
        background: #d24e51;
        animation-delay: -2s;
        opacity: 0;
    }

    .loading-21 view:nth-child(5) {
        background: #d24e51;
        animation-delay: -2.5s;
        opacity: 0;
    }

    .loading-21 view:nth-child(6) {
        background: #d24e51;
        animation-delay: -3s;
        opacity: 0;
    }

    @keyframes move {
        0% {
            transform: scale(1) rotate(0deg) translate3d(0, 0, 1px);
        }

        30% {
            opacity: 1;
        }

        100% {
            z-index: 10;
            transform: scale(0) rotate(360deg) translate3d(0, 0, 1px);
        }
    }
</style>

 

调用时:

<template>
    <view class="content">
        <requset-loading>
            <view class="">
                <text>text</text>
            </view>
        </requset-loading>
    </view>
</template>

 

标签:slot,opacity,loading,封装,21,animation,background,vuex,view
From: https://www.cnblogs.com/p201821460026/p/16728175.html

相关文章

  • vuex4的简单使用
    安装vuexcnpminstallvuex@next--save官网地址是https://vuex.vuejs.org/zh/guide/#%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84-storevuex中的常用5个模块vuex模块......
  • 封装axios函数记录
    基于axios进行二次封装统一配置,便于管理下载axiosyarnaddaxios创建utils/request.js//基于axios封装的请求模块importajaxfrom'axios'//新建一......
  • 利用props封装带有参数及回调事件的组件
    实现效果: 封装的组件:<template><viewclass="page-container-titleNav"><viewclass="content"><viewclass="left"><......
  • 项目中的问题 路由跳转和axios封装
     1.路由问题,以及路由重定向 2.axios封装请求 3.获取验证码和登录 4.路由跳转和项目中的问题  5.  ......
  • 前天为群友写的,使用面向对象的写法封装一个Modal Dialogue Box
    q群里的群友提出的问题“如何使用面向对象的语法封装一个Modal框”我们都知道,现在使用vue,都是用组件去封装的,怎么用对象去封装呢?我比较感兴趣,做了以下尝试下面直接......
  • Delphi 多进程共享内存的简单封装单元
    该单元转自武稀松的博客稍作修改,使其支持Delphi7{共享内存封装.封装成了MemoryStream的形式.用法如下:varms:TShareMemStream;ms:=TShareMemStream.C......
  • ASEMI快恢复二极管6A10参数,6A10规格,6A10封装
    编辑-ZASEMI快恢复二极管6A10参数:型号:6A10最大重复峰值反向电压(VRRM):1000V最大RMS电桥输入电压(VRMS):700V最大直流阻断电压(VDC):1000V最大平均正向整流输出电流(IF):6A峰值......
  • 海康摄像机使用GB28181接入SRS服务器的搭建步骤---封装docker镜像运行容器的方式,本篇
    使用第三方提供的镜像说明:这个是我在网上找的,没有实际验证及使用过,具体效果未知,看下文,我采用的是自己依据官方基础镜像进一步二次封装的镜像地址:https://hub.docker.com/......
  • Vuex 学习笔记
    组件之间共享数据的方式小范围父向子:v-bind属性绑定简写:子向父:v-on事件绑定简写@兄弟组件之间共享数据:EventBusVuex是实现组件全局状态(数据)管理的一种机制,可......
  • SF68-ASEMI插件封装二极管SF68
    编辑-ZSF68在R-6封装里采用的1个芯片,其尺寸都是84MIL,是一款插件封装二极管。SF68的浪涌电流Ifsm为200A,漏电流(Ir)为10uA,其工作时耐温度范围为-55~150摄氏度。SF68采用GPP......