我正在编写一个应该在iPad和桌面浏览器上运行的网络应用程序。
我有一个带有弹出窗口的过滤器部分(弹出窗口相对于过滤器<li>
标签绝对定位):
在桌面上看起来很漂亮和花花公子,但在横向模式的Ipad上,弹出窗口的底部会因为超出视口而被剪切。
我尝试使用queryUI position解决问题:
$('.capbIpadPopupAutoComplete').position({
"my": "left center" , // Horizontal then vertical, missing values default to center
"at": "left top", // Horizontal then vertical, missing values default to center
"of": $(this).closest('li'), // Element to position against
// "offset": "20 30" , // Pixel values for offset, Horizontal then vertical, negative values OK
"collision": "fit flip" // What to do in case of
});
但只有在弹出窗口与屏幕左侧而不是底部碰撞时才有效。
我还需要确保三角形相应移动,因为它应始终指向正确的滤镜。
我使用JqueryUI位置错了吗?有更好的解决方案吗?
答案 0 :(得分:2)
好的,看起来最大的问题是"flip fit"
实际上并不是collision
的有效值。 (我认为它被视为"flip"
。)你可能正在寻找"flipfit"
(没有空格),或者只是"fit"
。您还应确保将弹出窗口的右侧侧与li
的左侧对齐 - 左侧对齐使左侧重叠,然后将其翻转,因为没有'足够的空间。我调整了你的代码,让它工作得更好(但仍然不完美;你必须调整它)。
$('.capbIpadPopupAutoComplete').position({
"my": "right top" , // Horizontal then vertical, missing values default to center
"at": "left top", // Horizontal then vertical, missing values default to center
"of": $('.capbStrategicPlan'), // Element to position against
// "offset": "20 30" , // Pixel values for offset, Horizontal then vertical, negative values OK
"collision": "fit" // What to do in case of
});
$(this)
似乎没有在of
参数中工作,所以我替换了它。
您还需要设置弹出窗口的right
值,因为.position
设置了left
,设置两者都会弹出弹出窗口。
至于箭头,为什么不单独定位它们?如果弹出窗口必须移动一点,它会与箭头重叠一些,但这只会使箭头看起来更小。