解决bootstrap的tooltip插件不能自动定位不是相对于浏览器窗口定位的问题

tooltip的插件参数:

 

选项名称类型/默认值Data 属性名称描述
animationboolean
默认值:true
data-animation向工具提示应用 CSS 褪色过渡效果。
htmlboolean
默认值:false
data-html向工具提示插入 HTML。如果为 false,jQuery 的 text 方法将被用于向 dom 插入内容。如果您担心 XSS 攻击,请使用 text。
placementstring|function
默认值:top
data-placement规定如何定位工具提示(即 top|bottom|left|right|auto)。
当指定为 auto 时,会动态调整工具提示。例如,如果 placement 是 "auto left",工具提示将会尽可能显示在左边,在情况不允许的情况下它才会显示在右边。
selectorstring
默认值:false
data-selector如果提供了一个选择器,工具提示对象将被委派到指定的目标。
titlestring | function
默认值:''
data-title如果未指定 title 属性,则 title 选项是默认的 title 值。
triggerstring
默认值:'hover focus'
data-trigger定义如何触发工具提示: click| hover | focus | manual。您可以传递多个触发器,每个触发器之间用空格分隔。
contentstring | function
默认值:''
data-content如果未指定 data-content 属性,则使用默认的 content 值。
delaynumber | object
默认值:0
data-delay延迟显示和隐藏工具提示的毫秒数 - 对 manual 手动触发类型不适用。如果提供的是一个数字,那么延迟将会应用于显示和隐藏。如果提供的是对象,结构如下所示:
delay:
{ show: 500, hide: 100 }:
{ show: 500, hide: 100 }
containerstring | false
默认值:false
data-container向指定元素追加工具提示。
实例: container: 'body'

 

 

 

按照tooltip的说明文档中可以看出,当我们调用这个插件并且给其传auto top会根据当前的位置自动确认显示方向。但是在计算时他的计算的是整个body元素的宽度和高度,而并不是相对于浏览器窗口自动定位。这样并不是那么的友好,在开发过程中找到的方法:

直接往参数palcement中传固定的显示方向,其具体的显示方向在调用时即计算好:

function

function confrimDirection(tip,element)
{




/*正则表达式*/
var autoToken = /\s?auto?\s?/i;
var autoPlace = autoToken.test(direction);
/*得到单个默认方向*/
if (autoPlace) {
   direction = direction.replace(autoToken, '') || 'top';
    $(tip).appendTo("body");

    /*计算tips的可视高度和宽度*/
    var $width = $(tip).width();
    var $height = $(tip).height();
    /*计算当前鼠标滑过的坐标*/
    var pos = $(element).offset();

    /*计算滚动条的高度*/
    var scroll = document.documentElement.scrollTop || document.body.scrollTop;

    /*计算当前对象距离可是窗口上边与右边的距离*/
    pos.bottom = $(window).height() - (pos.top - scroll) - $(element).height();
    pos.right = $(window).width() - pos.left - $(element).width();

    /* console.log("下边距为:"+pos.bottom+"右边距为:"+ pos.right);*/
    /*计算得到最合适的方向*/
    direction = direction == 'bottom' && pos.bottom < $height ? 'top' :
        direction == 'top' && (pos.top - scroll) < $height ? 'bottom' :
            direction == 'right' && pos.right < $width ? 'left' :
                direction == 'left' && pos.left < $width ? 'right' :
                    direction;
}
return direction;
}




在调用时直接:



jquery.tooltip({
    //加载插件,没有显示
   ………………//正常传参
    placement : confrimDirection//直接传函数即可
})

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值