我工作my new site,我想補充工具提示插件與web字體,但tooltop是在錯誤的位置上,但是當我不使用web字體它的工作中的文本問題的寬度。web字體和jQuery插件
該插件的代碼如下所示:
$.fn.tooltip = function(options) {
var settings = $.extend({}, {
arrowSize: 5
}, options);
return this.each(function() {
var self = $(this).attr('title', '');
var wrapper = self.wrap('<div/>').parent().addClass('tooltip-wrapper').
css('position', 'relative');
var tooltip = $('<div/>').appendTo(wrapper);
var box = $('<div/>').addClass('box').appendTo(tooltip);
var arrow = $('<div/>').addClass('arrow').appendTo(tooltip).css({
'border-left-width': settings.arrowSize,
'border-right-width': settings.arrowSize,
'border-top-width': settings.arrowSize
});
var width = box.html(self.attr('rel').replace(/ /g, ' ')).
innerWidth();
tooltip.css({
top: -self.height(),
left: -(width-self.width())/2
}).addClass('tooltip');
self.mouseenter(function() {
tooltip.stop().fadeIn('fast');
}).mouseleave(function() {
tooltip.stop().fadeOut('fast');
});
});
};
它依靠字體加載之前我認爲這是執行innerWidth
。生成的代碼看起來就像這樣:
<div class="tooltip-wrapper" style="position: relative;">
<a href="https://twitter.com/jcubic" title="" rel="Twitter">
<img src="img/profile-twitter.png">
</a>
<div class="tooltip" style="top: -32px; left: -25.5px; display: none; opacity: 1;">
<div class="box">Caption</div>
<div class="arrow" style="border-left-width: 5px; border-right-width: 5px; border-top-width: 5px;"></div>
</div>
</div>
和CSS
.tooltip {
display: none;
position: absolute;
z-index: 100;
}
.tooltip-wrapper .box {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
background: #b72100;
padding: 5px 10px;
display: inline-block;
text-align: center;
}
.tooltip-wrapper .arrow {
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid #b72100;
margin: auto;
}
我認爲這是涉及到這樣一個問題:Cross-browser webfonts loaded event。
有沒有辦法解決它?也許使用不同的CSS。
爲什麼那麼提示的位置,而web字體是正確的? – jcubic
@jcubic它看起來是正確的,但實際上它並不是完全居中。 – evilReiko