Spin 加载中

    当区块正在获取数据中时可使用,适当的等待动画可以提升用户体验。

    基础用法

    最简单使用 Spin 的方法。

    Spin 加载中 - 图2

    各种尺寸

    1. <template>
    2. <Spin size="small"></Spin>
    3. <Spin></Spin>
    4. <Spin size="large"></Spin>
    5. </template>
    6. <script>
    7. export default {
    8. }
    9. </script>

    居中固定

    在容器内部垂直居中固定,需要父级有relativeabsolute

    Spin 加载中 - 图4

    自定义内容

    自定义 Spin 的内容,可以是简单的文字,也可以是很复杂的动画。

    1. <style>
    2. .demo-spin-icon-load{
    3. animation: ani-demo-spin 1s linear infinite;
    4. @keyframes ani-demo-spin {
    5. from { transform: rotate(0deg);}
    6. to { transform: rotate(360deg);}
    7. }
    8. .demo-spin-col{
    9. height: 100px;
    10. position: relative;
    11. border: 1px solid #eee;
    12. }
    13. </style>
    14. <template>
    15. <Row>
    16. <Col class="demo-spin-col" span="8">
    17. <Spin fix>加载中...</Spin>
    18. </Col>
    19. <Col class="demo-spin-col" span="8">
    20. <Spin fix>
    21. <div>Loading</div>
    22. </Spin>
    23. </Col>
    24. <Col class="demo-spin-col" span="8">
    25. <div class="loader">
    26. <svg class="circular" viewBox="25 25 50 50">
    27. <circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="5" stroke-miterlimit="10"></circle>
    28. </svg>
    29. </div>
    30. </Spin>
    31. </Col>
    32. </Row>
    33. </template>
    34. <script>
    35. // 部分样式代码冗长,未作展示
    36. export default {
    37. </script>

    控制 Spin 组件的显示和消失。

    Spin 加载中 - 图6

    整页加载

    使用内置的 $Spin 方法可以全局加载。

    可以使用 Render 函数自定义显示内容。 学习 Render 函数的内容

    <template>
        <div>
            <Button type="primary" @click="handleSpinShow">整页显示,3秒后关闭</Button>
            <Button type="primary" @click="handleSpinCustom">自定义显示内容</Button>
        </div>
    </template>
    <script>
        export default {
            methods: {
                handleSpinShow () {
                    this.$Spin.show();
                    setTimeout(() => {
                        this.$Spin.hide();
                    }, 3000);
                },
                handleSpinCustom () {
                    this.$Spin.show({
                        render: (h) => {
                            return h('div', [
                                h('Icon', {
                                    'class': 'demo-spin-icon-load',
                                    props: {
                                        type: 'ios-loading',
                                        size: 18
                                    }
                                }),
                                h('div', 'Loading')
                            ])
                        }
                    });
                    setTimeout(() => {
                        this.$Spin.hide();
                    }, 3000);
                }
            }
        }
    </script>
    <style>
        .demo-spin-icon-load{
            animation: ani-demo-spin 1s linear infinite;
        }
    </style>
    

    Spin slot

    名称说明
    自定义 Spin 的内容,设置slot后,默认的样式不生效