jQuery UI的.position()
函数用于相对于另一个元素定位一个元素,它依赖于被定位元素的父元素的可见性和尺寸来计算位置。
当父div在屏幕上不可见时(例如display: none
或visibility: hidden
),jQuery UI的位置函数可能无法正常工作,主要原因包括:
// 临时显示父元素
$('#parent').show();
// 执行定位
$('#element').position({
my: "center",
at: "center",
of: "#target"
});
// 如果需要可以再隐藏父元素
$('#parent').hide();
#parent {
visibility: hidden;
/* 而不是 display: none */
}
// 确保父元素可见
if ($('#parent').is(':hidden')) {
$('#parent').show();
$('#element').position({...});
$('#parent').hide();
} else {
$('#element').position({...});
}
如果可能,考虑使用CSS绝对定位替代jQuery UI的位置函数。
这个问题常见于:
| 方法 | 优势 | 劣势 | |------|------|------| | 临时显示 | 确保准确计算 | 可能造成页面闪烁 | | visibility | 保持布局 | 元素仍占据空间 | | 绝对定位 | 性能更好 | 需要手动计算位置 |
visibility: hidden
而非display: none
没有搜到相关的文章