代码之家  ›  专栏  ›  技术社区  ›  viggity

在bootstrap 4中轻松更改水平形式列对齐方式

  •  0
  • viggity  · 技术社区  · 6 年前

    我用bootstrap 4创建了很多水平窗体,但是查找替换更改 col-md-X 当我的标签需要变长或变短时,用于表单的“左”或标签部分。

    我正在考虑添加一个新的空css类 col-left 左栏。还添加了一组新的类,我可以在 form 要素 col-left-md-X .

    <form class="col-left-md-4 col-right-md-8">
        <div class="row">
            <label for="FirstName" class="col-form-label col-left">First Name</label>
            <div class="col-right">
                <input class="form-control" name="FirstName" />
                <div class="validation-error hidden"></div>
            </div>
        </div>
        ...
    </form>
    

    css规则如下:

    .col-left-md-4 .col-left {
        flex: 0 0 33.33333%;
        max-width: 33.33333%;
    }
    

    这样安排会以某种方式踢我屁股吗?有没有更好的方法来处理这个问题?也许bootstrap 4中已经有了什么东西?

    我只想(在表单上)更改一次我的列大小,而不是更改行中每一列的大小。

    1 回复  |  直到 6 年前
        1
  •  0
  •   viggity    6 年前

    我写了SCS来生成css中的所有不同类。您可以在自己的SCSS构建中随意加入。到目前为止似乎工作得非常好。

    $meta-sizes: 'left', 'mid', 'right';
    
    @mixin make-meta-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
        // Common properties for all breakpoints
        %grid-column {
            position: relative;
            width: 100%;
            min-height: 1px; // Prevent columns from collapsing when empty
            padding-right: ($gutter / 2);
            padding-left: ($gutter / 2);
        }
    
        @each $breakpoint in map-keys($breakpoints) {
    
            $infix: $breakpoint;
    
            @each $meta-size in $meta-sizes {
                // Allow columns to stretch full width below their breakpoints
                @for $i from 1 through $columns {
                    .col-#{$meta-size}-#{$infix}-#{$i} .col-#{$meta-size} {
                        @extend %grid-column;
                        @include make-col($i, $columns);
                    }
                }
            }
        }
    }
    
    @include make-meta-grid-columns();