可折叠、可调整大小的 jQuery-ui 选项卡小部件

发布于 2024-11-18 04:43:34 字数 200 浏览 3 评论 0原文

一直在尝试创建一组可折叠且可调整大小的选项卡。我遇到的问题是,调整大小后(在演示中拖动顶部边缘),当您单击活动选项卡将其关闭时,内容会消失,但选项卡容器保持相同的大小,而不是缩小以适合选项卡栏。

使选项卡容器在调整大小后缩小的技巧是什么?

I've been trying to create a set of tabs that is collapsible and also resizable. The problem I'm having is that after resizing (dragging top edge in demo) when you click the active tab to close it, the content disappears but it the tabs container stays the same size instead of shrinking to fit just the tab bar.

What's the trick to making the tabs container shrink after it's been resized?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幼儿园老大 2024-11-25 04:43:34

我使用 Firefox 的 Web 开发工具栏追踪到了这一点。我在调整大小之前和之后执行了“查看生成的源”,并在输出上运行 diff 。调整大小会向受影响的元素添加样式属性:

style="top: 226px; left: 0px; width: 1272.87px; height: 591.867px;"

为了解决此问题,我添加了 tabsselect 事件的处理程序。当折叠 div 时,它会将 topheight 存储到数据属性中,然后将其删除。显示选项卡时,它会从数据属性恢复设置。

select: function(event, ui) {
    if ($tabs.tabs("option", "selected") == ui.index) {
        // we're collapsing the visible tab
        if ($tabs.css("top")) {
            $tabs.data("top", $tabs.css("top"));
            $tabs.data("height", $tabs.css("height"));
            $tabs.css("top", "");
            $tabs.css("height", "");
        }
    }
    else if (ui.index == -1) {
        // we're about to show a tab
        if ($tabs.data("top")) {
            $tabs.css("top", $tabs.data("top"));
            $tabs.css("height", $tabs.data("height"));
        }
    }
}

I tracked this down using Firefox's Web Developer Toolbar. I did "View Generated Source" before and after resizing and ran diff on the output. Resizing adds a style attribute to the affected element:

style="top: 226px; left: 0px; width: 1272.87px; height: 591.867px;"

To account for this I added a handler for the tabsselect event. It stores top and height into data attributes when collapsing the div and then removes them. When showing a tab it restores the settings from the data attributes.

select: function(event, ui) {
    if ($tabs.tabs("option", "selected") == ui.index) {
        // we're collapsing the visible tab
        if ($tabs.css("top")) {
            $tabs.data("top", $tabs.css("top"));
            $tabs.data("height", $tabs.css("height"));
            $tabs.css("top", "");
            $tabs.css("height", "");
        }
    }
    else if (ui.index == -1) {
        // we're about to show a tab
        if ($tabs.data("top")) {
            $tabs.css("top", $tabs.data("top"));
            $tabs.css("height", $tabs.data("height"));
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文