【问题标题】:Bootstrap 4: Equal width columns using gridBootstrap 4:使用网格的等宽列
【发布时间】:2018-10-14 02:27:04
【问题描述】:

我正在尝试使用引导网格使具有行和其下方的手风琴的容器的布局具有相等宽度的列。问题在于将手风琴内的数据与最顶部的行对齐。

我对 bootstrap 4 的理解是 col 类应该自动调整每列的大小,所以我认为所有 8 列的宽度都是相同的,无论内容如何。

顶部看起来不错,但下面的行是压缩的。这是一个例子:

这是我的剃须刀页面:

<body>
<div class="container">
    <div class="row">
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].Item)
        </div>
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].ItemDescription)
        </div>
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].CorpCustomer)
        </div>
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].UoM)
        </div>
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].SummedOrder)
        </div>
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].SummedForecast)
        </div>
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].Difference)
        </div>
        <div class="col">
            @Html.DisplayNameFor(model => model.ReportHighLevel[0].Week)
        </div>
    </div>
</div>

<div class="container">
    <div id="accordion">
        @{int counter = 0; }
        @foreach (var dataVM in Model.CollapseReport)
        {
            <div class="card">
                <div class="card-header" id="heading@(counter)">
                    <h5 class="mb-0">
                        <button class="btn btn-link" data-toggle="collapse" data-target="#collapse@(counter)" aria-expanded="true" aria-controls="collapse@(counter)">

                            <div class="row">
                                <div class="col">
                                    @dataVM.Summary.Item
                                </div>
                                <div class="col">
                                    @dataVM.Summary.ItemDescription
                                </div>
                                <div class="col">
                                    @dataVM.Summary.CorpCustomer
                                </div>
                                <div class="col">
                                    @dataVM.Summary.UoM
                                </div>
                                <div class="col">
                                    @dataVM.Summary.SummedOrder
                                </div>
                                <div class="col">
                                    @dataVM.Summary.SummedForecast
                                </div>
                                <div class="col">
                                    @dataVM.Summary.Difference
                                </div>
                                <div class="col">
                                    @dataVM.Summary.Week
                                </div>
                                </div>
                        </button>
                    </h5>
                </div>

                <div id="collapse@(counter)" class="collapse" aria-labelledby="heading@(counter)" data-parent="#accordion">
                    <div class="card-body">
                        <form method="post">
                            <input type="hidden" name="var1" value="@dataVM.Summary.CorpCustomer" />
                            <input type="hidden" name="var2" value="@dataVM.Summary.Item" />
                            <input type="submit" class="btn btn-default" value="Add to Log" asp-page-handler="AddLog" asp-route-data="@dataVM.Summary.CorpCustomer, @dataVM.Summary.Item)" />
                        </form>
                        <div class="container">
                                    @foreach (var item in dataVM.WeeksOfData)
                                {
                                        <div class="row">
                                            <div class="col">
                                                @item.Item
                                            </div>
                                            <div class="col">
                                                @item.ItemDescription
                                            </div>
                                            <div class="col">
                                                @item.CorpCustomer
                                            </div>
                                            <div class="col">
                                                @item.UoM
                                            </div>
                                            <div class="col">
                                                @item.SummedOrder
                                            </div>
                                            <div class="col">
                                                @item.SummedForecast
                                            </div>
                                            <div class="col">
                                                @item.Difference
                                            </div>
                                            <div class="col">
                                                @item.Week
                                            </div>
                                        </div>
                            }
                                </div>
                    </div>
                </div>
            </div>
            counter++;
        }
    </div>
</div>

【问题讨论】:

    标签: css bootstrap-4 asp.net-core-2.0 razor-pages


    【解决方案1】:

    原因是您的btn btn-link 按钮嵌套在&lt;h5&gt; 中。 Bootstrap 中的.btn 类的样式为display: inline-block;,不占用100% 的宽度。

    即使您在按钮上设置了width: 100%;,您的列仍然不会对齐,因为:

    1. .btn 的样式为 white-space: nowrap;,因此可折叠标题内的文本不会换行,而可折叠正文内的文本会。
    2. .btn 类有 .75rem 左右的填充,这将占据整个行宽。
    3. 您的可折叠主体中有一个嵌套容器。容器左右有 15px 的内边距,这也将占据整个行宽。

    提示:您可能需要考虑不同的设计/布局。

    例如去掉标题中嵌套的按钮,使用anchor istead:

    <div class="container">
        @for (int i = 0; i < 5; i++)
        {
            <div class="card">
                <div class="card-header">
                    <a href="#" data-toggle="collapse" data-target="#collapse@(i)">
                        <div class="row">
                            <div class="col">Item</div>
                            <div class="col">Item Description</div>
                            <div class="col">Corp Customer</div>
                            <div class="col">UoM</div>
                            <div class="col">Summed Order</div>
                            <div class="col">Summed Forecase</div>
                            <div class="col">Difference</div>
                            <div class="col">Week</div>
                        </div>
                    </a>
                </div>
                <div id="collapse@(i)" class="collapse">
                    <div class="card-body">
                        <div class="row">
                            <div class="col">Item</div>
                            <div class="col">Item Description</div>
                            <div class="col">Corp Customer</div>
                            <div class="col">UoM</div>
                            <div class="col">Summed Order</div>
                            <div class="col">Summed Forecase</div>
                            <div class="col">Difference</div>
                            <div class="col">Week</div>
                        </div>
                        <div class="row">
                            <div class="col">Item</div>
                            <div class="col">Item Description</div>
                            <div class="col">Corp Customer</div>
                            <div class="col">UoM</div>
                            <div class="col">Summed Order</div>
                            <div class="col">Summed Forecase</div>
                            <div class="col">Difference</div>
                            <div class="col">Week</div>
                        </div>
                        <div class="row">
                            <div class="col">Item</div>
                            <div class="col">Item Description</div>
                            <div class="col">Corp Customer</div>
                            <div class="col">UoM</div>
                            <div class="col">Summed Order</div>
                            <div class="col">Summed Forecase</div>
                            <div class="col">Difference</div>
                            <div class="col">Week</div>
                        </div>
                    </div>
                </div>
            </div>
        }
    </div>
    

    截图:

    【讨论】:

    • 我对网络缺乏经验,手风琴是我能找到的最好的父子数据布局。也许我只是将标题放在按钮和嵌套容器中?
    • 看起来很不错,我的工作已经搞定了,谢谢!
    猜你喜欢
    • 2021-01-17
    • 2018-10-05
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 2020-03-25
    • 2018-07-14
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多