使用driver.js实现新(xin)手(shou)导航,并使展示区域无法点击

业务需求:需要新手引导,使用driver.js实现后,提出若干修改,其中最难搞的是高亮部分不可点击,下面给出代码实现。


一、官网demo,以及个人的codepen实现效果

driver.js官网demo
codepen

二、直接上代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>driverjs</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/driver.js/0.9.8/driver.min.js"
        integrity="sha512-TMCPpR1wPPr92/7kiF88j9uTWczLpHyUTzt8sScGyN2btq/xWN22GjsdgNfUIMDtXV5WXUZ4s2OThcgpVxQv4w=="
        crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/driver.js/0.9.8/driver.min.css"
        integrity="sha512-yQuTmOu0Rm68Udrrd2uqDvHc/xzvQxJoNzYgLn7SK+EpPuEKZu82S44D2G++HLiz6lhUShgJPOri7zvRTVtyZQ=="
        crossorigin="anonymous" />
    <style>
        .container {
            display: flex;
            justify-content: space-around;
        }

        .box {
            width: 20%;
            text-align: center;
            background-color: gray;
            height: 40px;
            color: #fff;
            position: relative;
        }

        .first_box .driver-prev-btn {
            display: none !important;
        }

        .last_box .driver-prew-btn {
            display: none !important;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="box" id="box1">内容块1</div>
        <div class="box" id="box2">内容块2</div>
        <div class="box" id="box3">内容块3</div>
        <div class="box" id="box4">内容块4</div>
    </div>

    <script>
        const driver = new Driver({
            closeBtnText: '跳过',
            doneBtnText: '开始使用',
            nextBtnText: '下一步',
            prevBtnText: '上一步',
            allowClose: false
        })
        // Define the steps for introduction
        driver.defineSteps([
            {
                element: '#box1',
                popover: {
                    className: 'first_box',
                    title: '标题1',
                    description: '描述1',
                    position: 'bottom'
                }
            },
            {
                element: '#box2',
                popover: {
                    title: '标题2',
                    description: '描述2',
                    position: 'right'
                }
            },
            {
                element: '#box3',
                popover: {
                    title: '标题3',
                    description: '描述3',
                    position: 'bottom'
                }
            },
            {
                element: '#box4',
                popover: {
                    className: 'last_box',
                    title: '标题4',
                    description: '描述4',
                    position: 'left'
                }
            }
        ])

        const interval = null
        function start() {
            driver.start()
            driver.steps.forEach(el => el.node.style.pointerEvents = 'none')

            this.interval = setInterval(() => {
                if (!driver.isActivated) {
                    driver.steps.forEach(el => el.node.style.pointerEvents = 'auto')
                    clearInterval(interval)
                }
            }, 100)
        }

        start()
    </script>
</body>

</html>
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值