【问题标题】:How to let a bootstrap container use the remaining viewport space?如何让引导容器使用剩余的视口空间?
【发布时间】:2022-02-22 18:01:09
【问题描述】:

我知道有许多类似的帖子,但我无法将它们应用于我的问题。

我在引导网格的最后一行有一个表格:

<div class="container-fluid">
    <!-- Here are some other rows with dynamically varying sizes -->
    <div class="row">
        <div class="table-responsive">
            <table class="table">
                <thead>
                    <tr>
                        <th>Name</th>
                        <th>Type</th>
                        <th>Size (byte)</th>
                        <th>Loaded</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach (var file in _filesToUpload)
                    {
                        <tr>
                            <td>@file.Name</td>
                            <td>@file.FileType</td>
                            <td>@file.FileSize</td>
                            <td>@file.Loaded.ToString()</td>
                        </tr>
                    }
                </tbody>
            </table>
        </div>
    </div>
</div>

对应的css如下所示:

.table {
    color: white;
    background-color: rgba(0, 0.941, 0, 0.5);
}

.table-responsive {
    height: 40rem;
    overflow: auto;
}

thead tr:nth-child(1) th {
    background-color: black;
    position: sticky;
    top: 0;
    z-index: 10;
}

整个事情都在 .page 容器和 main 容器中(这是 blazor 默认项目设置):

<div class="page">
    <div class="sidebar">
        <NavMenu />
    </div>

    <div class="main">
        <div class="top-row px-4 auth">
            <LoginDisplay />
        </div>

        <div class="content px-4">
            @Body <!-- here the code from above gets inserted -->
        </div>
    </div>
</div>

最后,我为pagemain 类提供了以下css

.page {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: auto;
    background-color: transparent;
}


.main {
    flex: 1;
    background-image: url(../web/wallpaper.jpg);
    background-repeat: no-repeat;
    background-position: top 0 right 0;
    background-size: cover;
    background-attachment: fixed;
}

我想要的是背景固定到位,并且所有内容变得太大,都有一个滚动条。使用上面的代码,只要我处于全屏/全高清模式,它就可以正常工作。一旦浏览器调整大小,表格就会从页面底部“伸出”(整个页面有一个额外的滚动条,并且可以向下滚动到背景图像下方)。

解决方案必须是在table-responsive 类中使用动态高度,但我找不到正确的方法。

【问题讨论】:

    标签: html css bootstrap-4 blazor


    【解决方案1】:

    一种引导实用程序的方式:

    使用非常基本的布局来演示:

    @inherits LayoutComponentBase
    
    <article class="flex-fill d-flex flex-column">
        @Body
    </article>
    

    ScrollDiv.razor

    <div class="d-flex flex-column flex-fill overflow-auto @CssClasses">
        @ChildContent
    </div>
    

    ScrollDiv.razor.cs

    public partial class ScrollDiv : ComponentBase
    {
        [Parameter]
        public RenderFragment? ChildContent { get; set; }
    
        [Parameter]
        public string? CssClasses { get; set; }
    }
    

    SomePage.razor

    ...
    <div class="d-flex flex-row align-items-stretch mh-100 vh-100 overflow-hidden">
        <div class="d-flex flex-column border-end " style="min-width: 220px;">
                <ScrollDiv>
                    <div class="d-flex flex-column">
                        @foreach (var user in MessageService!.Users)
                        {
                            <ChatUserView User=@user OnClickCallback=@UserClicked />
                        }
                    </div>
                </ScrollDiv>
    ...
    

    截图:

    【讨论】:

    • 正在尝试解压...所以 ScrollDiv 可能应该进入 Shared 文件夹,对吧?我将对此进行测试并报告,这需要一两个小时。谢谢! :)
    • @RolandDeschain 是的。如果您愿意,可以将部分类ScrollDiv.razor.cs 的内容放在ScrollDiv.razor 文件中的@code { } 块中。出于习惯,我在这里使用方法背后的代码。将两个文件放在一起...
    • 是的,我通常做同样的事情,只是意味着ScrollDiv.razorScrollDiv.razor.cs 应该可以在多个地方使用......因此我会将它放在一个共享文件夹中(而不是到页面文件夹)。对不起,我来自 WPF 开发,整个 web 项目结构的东西对我来说还是有点新和困惑 ^^
    • @RolandDeschain 首先认为我要做的是创建一个“视图”文件夹并将共享和页面拖入其中。然后我通常将“共享”重命名为“组件”,然后修复“_imports.razor”以匹配。使用服务器端,您还可以更改要找到的页面的根目录。
    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2015-10-28
    • 2018-01-29
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多