最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何使用 vue + intro 实现后台管理系统的新手引导

    正文概述 掘金(锋享前端)   2021-01-28   962

    引言

    一、效果介绍

    话不多说,咱们先来上一张图看看效果

    如何使用 vue + intro 实现后台管理系统的新手引导

    那激动人心的时刻到了,我们如何vue中使用 Intro.js 在呢?

    如何使用 vue + intro 实现后台管理系统的新手引导

    二、Intro.js

    2.1、Intro.js的安装

    Intro.js` 是一个轻量级的`js`库,用于创建一步一步的产品引导,支持使用键盘的前后方向键导航,使用 Enter 和 ESC 键推出引导,您可以通过几个简单的步骤安装`Intro.js
    

    Intro.js - Lightweight, user-friendly onboarding tour libraryintrojs.com如何使用 vue + intro 实现后台管理系统的新手引导

    首先我们引入下述文件

    <link rel="stylesheet" href="https://unpkg.com/intro.js/minified/introjs.min.css">
    <script src="https://unpkg.com/intro.js/minified/intro.min.js"></script>
    

    2.2、Intro.js基本使用

    接着在HTML文件中加入基本结构

    <div data-step="1" data-intro="第一步,欢迎!">欢迎,这是第一步。</div>
    <div data-step="2" data-intro="第二步,你好!">你好,这是第二步。</div>
    <div data-step="3" data-intro="第三步,大家好!">大家好,这是第三步。</div>
    

    data-step 是步骤,data-intro 是对每一步的介绍。

    最后我们加入JS代码就可以通过浏览器运行查看效果啦(* ̄︶ ̄)

    <script>
    introJs().setOptions({
        nextLabel: '下一个  &rarr;',    // 下一个按钮文字
        prevLabel: '&larr; 上一个',     // 上一个按钮文字
        skipLabel: '跳过',              // 跳过按钮文字
        doneLabel: '立即体验',           // 完成按钮文字
        hidePrev: true,                 // 在第一步中是否隐藏上一个按钮
        hideNext: true,                 // 在最后一步中是否隐藏下一个按钮
        exitOnOverlayClick: false,  // 点击叠加层时是否退出介绍
        showStepNumbers: false,     // 是否显示红色圆圈的步骤编号
        disableInteraction: true,   // 是否禁用与突出显示的框内的元素的交互,就是禁止点击
        showBullets: false          // 是否显示面板指示点
    }).start();
    </script>
    

    如何使用 vue + intro 实现后台管理系统的新手引导

    感觉如何,是不是很简单,接下来我们学习如何在VUE项目中使用

    如何使用 vue + intro 实现后台管理系统的新手引导

    三、 在vue-cli项目中使用

    3.1、准备

    首先打开项目,下载Intro.js模块

    //使用yarn
    yarn add Intro.js
    
    //npm
    npm i Intro.js -S
    
    //cnpm
    cnpm i Intro.js -S
    

    3.2、使用

    找到需要加新手引导的组件,导入Intro.js组件和样式

    import introJs from 'intro.js'
    import 'intro.js/introjs.css'
    

    methods中封装guide方法

    // 导出组件数据
    export default {
        // 定义方法
        methods: {
            guide() {
                introJs()
                .setOptions({
                    nextLabel: '下一个',  // 下一个按钮文字
                    prevLabel: '上一个',  // 上一个按钮文字
                    skipLabel: '跳过',    // 跳过按钮文字
                    doneLabel: '立即体验',// 完成按钮文字
                    hidePrev: true,       // 在第一步中是否隐藏上一个按钮
                    hideNext: true,       // 在最后一步中是否隐藏下一个按钮
                    exitOnOverlayClick: false,  // 点击叠加层时是否退出介绍
                    showStepNumbers: false,     // 是否显示红色圆圈的步骤编号
                    disableInteraction: true,   // 是否禁用与突出显示的框内的元素的交互,就是禁止点击
                    showBullets: false          // 是否显示面板指示点
                }).start()
            },
        },
    }
    

    接着在钩子函数mounted中调用

    import introJs from 'intro.js'
    import 'intro.js/introjs.css'
    
    // 导出组件数据
    export default {
        // 钩子函数
        mounted() {
            this.guide()
        },
        // 定义方法
        methods: {
            guide() {
                introJs()
                .setOptions({
                    nextLabel: '下一个',  // 下一个按钮文字
                    prevLabel: '上一个',  // 上一个按钮文字
                    skipLabel: '跳过',    // 跳过按钮文字
                    doneLabel: '立即体验',// 完成按钮文字
                    hidePrev: true,       // 在第一步中是否隐藏上一个按钮
                    hideNext: true,       // 在最后一步中是否隐藏下一个按钮
                    exitOnOverlayClick: false,  // 点击叠加层时是否退出介绍
                    showStepNumbers: false,     // 是否显示红色圆圈的步骤编号
                    disableInteraction: true,   // 是否禁用与突出显示的框内的元素的交互,就是禁止点击
                    showBullets: false          // 是否显示面板指示点
                }).start()
            },
        },
    }
    

    最后就是给需要加引导的盒模型加属性就大功告成了

    data-step="步骤数字" data-intro="每一步的介绍字符串"
    

    全部参考代码

    <template>
    <div class="admin">
    
        <!-- 
        <section class="menu">
            <ul>
                <li data-step="1" data-intro="1" >测试1</li>
                <li data-step="2" data-intro="2" >测试2</li>
                <li data-step="3" data-intro="3" >测试3</li>
                <li data-step="4" data-intro="4" >测试4</li>
            </ul>
        </section>
        --> 
    
        <!-- 左侧导航 --> 
        <div class="menu" v-bind:style="{width: menuWStyle}"  data-step="1" data-intro="导航菜单">
            <!-- <el-radio-group v-model="isHiddenMenu" style="margin-bottom: 20px;">
                <el-radio-button :label="false">展开</el-radio-button>
                <el-radio-button :label="true">收起</el-radio-button>
            </el-radio-group> -->
            <el-menu 
                v-loading="menuLoading"
                :default-active="$route.path" 
                class="el-menu-vertical-demo"
                :collapse="isHiddenMenu"
                :collapse-transition="false"
                background-color="#263445"
                text-color="rgb(191, 203, 217)"
            >
                <el-submenu v-for="(firstItem) in menus" :index="firstItem.auth_id" :key="firstItem.auth_id">
                    <template slot="title">
                        <i class="el-icon-menu"></i>
                        <span slot="title">{{firstItem.auth_name}}</span>
                    </template>
                    <el-menu-item-group>
                        <el-menu-item 
                            v-for="twoItem in firstItem.children"
                             :key="twoItem.auth_id"
                            :index="twoItem.url" 
                            @click="jump(twoItem.url)"
                        ><i class="el-icon-setting"></i>{{twoItem.auth_name}}</el-menu-item>
                    </el-menu-item-group>
                </el-submenu>
    
            </el-menu>
        </div>
        <!-- /左侧导航 -->
        <!-- 右侧内容 -->
        <div class="main">
            <!-- 顶部 -->
            <div class="top">
                <div class="l">
                    <div class="btn" @click="changeMenuFn">
                        <!-- <i class="el-icon-s-fold"></i> -->
                        <i v-bind:class="changeMenuIcon"></i>
                    </div>
                    <div class="breadcrumb">
                        <Breadcrumb v-bind:name1="name1" v-bind:name2="name2" />
                    </div>
                </div>
                <div class="r">
                    <span data-step="2" data-intro="用户名(角色)">{{uname}}({{rolename}})</span>
                    <i    data-step="3" data-intro="退出登录" class="el-icon-switch-button"></i>
                    <i    data-step="4" data-intro="窗口全屏" class="el-icon-full-screen"></i>
                </div>
            </div>
            <!-- /顶部 -->
            <!-- 内容 -->
            <div class="content" data-step="5" data-intro="主体内容" >
                <transition appear name="fade-transform" mode="out-in">
                    <router-view />
                </transition>
            </div>
            <!-- /内容 -->
        </div>
        <!-- /右侧内容 -->
    </div>
    </template>
    
    <script>
    // 导出组件数据
    import introJs from 'intro.js'
    import 'intro.js/introjs.css'
    
    // 导出组件数据
    export default {
        // 钩子函数
        mounted() {
            this.guide()
        },
        // 定义方法
        methods: {
            guide() {
                introJs()
                .setOptions({
                    nextLabel: '下一个',  // 下一个按钮文字
                    prevLabel: '上一个',  // 上一个按钮文字
                    skipLabel: '跳过',    // 跳过按钮文字
                    doneLabel: '立即体验',// 完成按钮文字
                    hidePrev: true,       // 在第一步中是否隐藏上一个按钮
                    hideNext: true,       // 在最后一步中是否隐藏下一个按钮
                    exitOnOverlayClick: false,  // 点击叠加层时是否退出介绍
                    showStepNumbers: false,     // 是否显示红色圆圈的步骤编号
                    disableInteraction: true,   // 是否禁用与突出显示的框内的元素的交互,就是禁止点击
                    showBullets: false          // 是否显示面板指示点
                }).start()
            },
        },
    }
    </script>
    
    <style lang="scss" scoped>
    </style>
    

    好了到这里就结束了,你学会了吗,赶紧动动小手代码敲起来(~ ̄▽ ̄)~

    3.3、效果

    表头的介绍的效果

    如何使用 vue + intro 实现后台管理系统的新手引导


    起源地下载网 » 如何使用 vue + intro 实现后台管理系统的新手引导

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元