在这里开始了一个良好的开端:New google calendar, "pop-out" events, if they don't fit in the defined area,我现在还有一些问题需要解决。
这是jQuery代码:
// Google-Calendar-Style pop-outs
$(function() {
$(".inner").each(function() {
var inner = $(this);
var popout = inner.clone().removeClass("inner");
popout.dialog({
autoOpen: false,
draggable: false,
resizable: false,
width: 150
});
var plusMore = $("<div><a href='#' onmouseover='this.style.cursor=\'pointer\''>See More...</a></div>");
plusMore.insertBefore(inner.find("> div:eq(1)"));
plusMore.click(function() {
var pos = inner.offset();
popout.dialog("option", {
position: [pos.left - 6, pos.top - 4]
}).dialog("open");
});
});
});
以下是与此相关的CSS:
<style type="text/css">
.outer {
height: 45px;
overflow: hidden;
}
.inner > h1 {
margin: 0;
font-size: 1em;
}
.ui-widget.ui-dialog {
font-size: 1em;
font-family: inherit;
padding: 2px 5px;
}
.ui-dialog div.ui-dialog-titlebar {
padding: 0;
background: transparent none;
border-width: 0;
}
.ui-dialog div.ui-dialog-content {
padding: 0;
}
</style>
这是HTML(注意,我实际上使用Smarty在这里循环一些数组,但这是基础...每个循环(用户)重复内部<div>
(所以有一个{每个单元格{1}}和一个outer
:
inner
这是一个截图,其中包含两个我想解决的问题。
当我向下滚动页面(甚至一点点),然后点击“查看更多...”时 - 弹出窗口不在正确的位置。如下图所示,它应该已经超过了第一行/盒子 - 但它却降低了很多。不要被愚弄,并认为它最终与第4个方框对齐 - 这只是一个巧合,因为即使是表格中的最后一个条目也会使屏幕上的框下限相同 - 而不是对齐。 <div class="outer">
<div class="inner">
<div>
<a href=Tenant.php" style="text-decoration:none">{$tenant.firstName} {$tenant.lastName}</a><br>
<a href="Message.php">Send Message</a><br>
</div>
</div>
</div>
我想摆脱顶级冠军的空间。我只想让用户和链接列表从顶部开始 - 与弹出框的“X”位于同一行。
答案 0 :(得分:1)
jQuery UI位置对话框相对于视口而不是文档,因此您需要在计算中考虑滚动。使用$(document).scrollTop()
:
popout.dialog("option", {
position: [
pos.left - 6 - $(document).scrollLeft(),
pos.top - 4 - $(document).scrollTop()
]
});