我试图将输入字段工具提示放在左下角,以便它与输入字段完美对齐。不确定它是否重要但页面包含许多动态生成的输入字段。
尝试使用offset
参数,但我认为在缩放内容方面有点麻烦,+11
修正在提出一般解决方案时可能会很痛苦。< / p>
$('[data-toggle=tooltip]').tooltip({
placement: "bottom",
title: "test"
offset: -$('#inputFieldId').width()/2 + 11
});
我也尝试修改transform
类的.bs-tooltip-bottom
样式,它的效果非常好!问题是工具提示在原始底部位置和新左下角位置之间闪烁一点。另外,我认为这可以做得更轻松,我只能弄清楚如何。
$('#inputFieldId').on('shown.bs.tooltip', function () {
var x = $('#inputFieldId').offset().left;
var y = $('#inputFieldId').offset().top + $('#inputFieldId').height();
$('.bs-tooltip-bottom').css('transform', 'translate3d('+x+'px, '+y+'px, 0px)');
})
关于闪烁问题,到目前为止我尝试过的是在显示为0之前更改工具提示的opacity
并在设置自定义转换时显示它。但它仍然闪烁着。
的CSS:
.tooltip.show {
opacity: 0;
}
JS:
$('#inputFieldId').on('show.bs.tooltip', function () {
$('.bs-tooltip-bottom').css('opacity', '0');
})
$('#inputFieldId').on('shown.bs.tooltip', function () {
var x = $('#inputFieldId').offset().left;
var y = $('#inputFieldId').offset().top + $('#inputFieldId').height();
$('.bs-tooltip-bottom').css('transform', 'translate3d('+x+'px, '+y+'px, 0px)');
$('.bs-tooltip-bottom').css('opacity', '0.9');
})
更新:
.bs-tooltip-bottom
事件中show
实际上并不存在,因此opacity
解决方法无效。
答案 0 :(得分:0)
我真诚地希望有一个更简单的解决方案,但这对我有用。除了inserted
事件而不是show
(inserted
triggered
show
之后shown
之后的所有事情,并且添加了css与在问题中说明。
css(可选):
.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^="bottom"] {
margin-top: 10px;
}
JS:
$('#inputFieldId').on('inserted.bs.tooltip', function () {
$('.bs-tooltip-bottom').css('opacity', '0');
});
$('#inputFieldId').on('shown.bs.tooltip', function () {
var x = $(this).offset().left;
var y = $(this).offset().top + $(this).height();
$('.bs-tooltip-bottom').css('transform', 'translate3d('+x+'px, '+y+'px, 0px)');
$('.bs-tooltip-bottom').css('opacity', '0.9');
});
答案 1 :(得分:0)
为防止闪烁效果,请添加延迟以进行显示。
例如:
$('#inputFieldId').tooltip({delay: { "show": 140, "hide": 0 }});
要使闪烁完全消失,必须将节目延迟到至少140次。实际上也不需要更改不透明度。
$('#inputFieldId').tooltip({delay: { "show": 140, "hide": 0 }});
$('#inputFieldId').on('shown.bs.tooltip', function () {
var x = $(this).offset().left;
var y = $(this).offset().top + $(this).height();
$('.bs-tooltip-bottom').css('transform', 'translate3d('+x+'px, '+y+'px, 0px)');
});