【问题标题】:Changing the default intro.js tooltip placement更改默认的 intro.js 工具提示位置
【发布时间】:2017-03-30 17:20:14
【问题描述】:

我正在使用 intro.js 设置我的网站导览,并且我想将工具提示的默认位置(当未附加到任何元素时)设置在页面顶部附近而不是垂直中心。

看起来没有直接设置它的选项,但是有没有办法改变CSS? (或者通过编辑源代码,尽管这是最后的手段)。

【问题讨论】:

    标签: javascript html css intro.js


    【解决方案1】:

    我需要做类似的事情。不优雅,但很有效。

    在 API 文档中,有一个 onafterchange 方法。给它一个回调函数,每次显示步骤时都会触发它。

    如果工具提示具有目标元素,则回调的参数包含该元素。如果工具提示没有元素,则参数包含类 introjsFloatingElement 的元素。因此,您只需要检查该元素上是否存在该类。如果是这样,您可以调整工具提示元素的样式。

    var help = introJs();
    help.onafterchange(function(targetEl){
        targetEl = jQuery(targetEl);
    
        // check if it's a floating tooltip (not attached to an element)
        if(targetEl.hasClass('introjsFloatingElement')){
    
            // adjust the position of these elements
            jQuery('.introjs-tooltipReferenceLayer').offset({top : 120});
            jQuery('.introjs-tooltip').css({
                opacity: 1,
                display: 'block',
                left: '50%',
                top: '50%',
                'margin-left': '-186px',
                'margin-top': '-91px'
            });
            jQuery('.introjs-helperNumberLayer').css({
                opacity: 1,
                left: '-204px',
                top: '-109px'
            });
        }
    });
    
    // add your steps
    // ...
    
    help.start();
    

    注意:

    • 我首先尝试了onbeforechange,但没有成功。不知道为什么。
    • 起初,我尝试仅调整 introjs-tooltipReferenceLayer 元素,但嵌套元素(introjs-helperNumberLayerintrojs-tooltip ) 在首次显示时未正确定位。我必须在随后的展示中检查这些元素以获得正确的样式。
    • 使用 intro.js 2.5.0 测试。元素类不是 api 规范的一部分,所以我不知道这个解决方案是否具有前瞻性。

    【讨论】:

    • 谢谢,检查类然后使用onafterchange 设置它是个好主意。我已经通过编辑源 CSS 让它工作了一些,但这更好。
    【解决方案2】:

    我查看了 intro.js 文档。您应该可以将这行代码添加到您的脚本中。

    introJs().setOption("tooltipPosition", "top");
    

    【讨论】:

    • 不幸的是,这个选项似乎只设置了工具提示相对于它们所附加的元素的默认位置。它似乎对未附加到任何东西的工具提示的位置没有任何影响。
    • 抱歉没用。也许您可以使用相同的命令设置tooltipClass 并更改CSS 中的位置。但这只有在您可以在每个单独的工具提示上使用 setOption 时才有效。
    • 感谢第二个想法,但它也不起作用。您可以使用 steps 数组 (see here) 独立设置 tooltipClass,但它不适用于位置设置,因为 intro.js javascript 使用 style 标记覆盖任何自定义类定位。
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多