固定滚动块内的标题

发布于 2024-10-21 07:17:28 字数 185 浏览 7 评论 0原文

我正在尝试创建一个可能有也可能没有滚动条的块,并且标题不滚动。诀窍是标题的宽度应该受到滚动条存在的影响。

我担心这是 CSS 用例之一,它应该是微不足道的,但实际上可能是不可能的。有人愿意证明我错了吗?

I'm trying to create a block which may or may not have a scrollbar, with a header that does not scroll. The trick is that the width of the header should be affected by the presence of a scrollbar.

I'm worried that this is one of those CSS use cases which should be trivial, but might, in fact, be impossible. Anyone willing to prove me wrong?

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

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

发布评论

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

评论(3

明媚如初 2024-10-28 07:17:28

仅靠 CSS 无法做到这一点。我们必须使用javaScript。 执行以下

var cw = $('#container').innerWidth(),
    cs = $('#container').scrollTop();

    $('#header').css({
        'width': cw + "px"
    });

    $('#container').scroll(function() {
        $('#header').css({
            'top': $('#container').scrollTop(),
        })
    })

使用 jQuery,您可以在 http://jsfiddle.net/VswxL/2/

You cannot do this with CSS alone. We must use javaScript. With jQuery you can do the following

var cw = $('#container').innerWidth(),
    cs = $('#container').scrollTop();

    $('#header').css({
        'width': cw + "px"
    });

    $('#container').scroll(function() {
        $('#header').css({
            'top': $('#container').scrollTop(),
        })
    })

Check working example at http://jsfiddle.net/VswxL/2/

无所的.畏惧 2024-10-28 07:17:28

我还没有弄清楚如何单独使用 CSS 来做到这一点。因此,这里有一个使用 JavaScript(此处为 jQuery)的解决方案,但仅在内容更改时运行。如果包装器的大小取决于窗口的大小,您可能还需要在调整大小时运行它。其核心如下:

$.fn.fitTo = function(target){
    var $el = $(this);
    $(target).bind('refit', function(){
        $el.width(this.clientWidth);
    });
}

调用 $header.fitTo($content) 将标头绑定到包含内容的元素上的自定义 refit 事件。现在,每当内容发生变化(例如滚动条可能出现或消失)时,请执行...

$content.trigger('refit');

...标题的宽度将重置为包含内容的元素的 clientWidth 。标题必须位于滚动元素外部

工作示例

I haven't figured out how to do this with CSS alone. So, here's a solution which uses JavaScript (here, jQuery), but only runs when he content changes. If the size of your wrapper depends on the size of the window, you may also need to run it on resize. Here's the heart of it:

$.fn.fitTo = function(target){
    var $el = $(this);
    $(target).bind('refit', function(){
        $el.width(this.clientWidth);
    });
}

Call $header.fitTo($content) to bind the header to a custom refit event on the element with the content. Now, whenever the content changes such that a scroll bar may have appeared or disappeared, do…

$content.trigger('refit');

…and the width of the header is reset to the clientWidth of the element containing content. The header must be outside the scrolling element.

Working example

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文