使用水平形式对齐引导文本框

Posted

技术标签:

【中文标题】使用水平形式对齐引导文本框【英文标题】:aligning bootstrap text boxes using horizontal form 【发布时间】:2019-01-02 18:48:48 【问题描述】:

我正在处理一个带有多个输入字段的长表单,并且我试图对齐一个水平表单。 第一行有 3 个字段(col-md-4),第二行有两个字段(col-md-8 和 col-md-4)。如何让文本框正确对齐?

             <div class="row">
                <div class="col-md-12">
                    <div class="col-md-4">
                        <div class="form-group">
                            @html.LabelFor(m => m.LAST_NAME, htmlAttributes: new  @class = "control-label col-md-4" )
                            <div class="col-md-8">
                                @Html.TextBoxFor(m => m.LAST_NAME, htmlAttributes: new  @class = "form-control" )
                            </div>
                        </div>
                    </div>

                    <div class="col-md-4">
                        <div class="form-group">
                            @Html.LabelFor(m => m.FIRST_NAME, htmlAttributes: new  @class = "control-label col-md-4" )
                            <div class="col-md-8">
                                @Html.TextBoxFor(m => m.FIRST_NAME, htmlAttributes: new  @class = "form-control" )
                            </div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            @Html.LabelFor(m => m.MIDDLE_NAME, htmlAttributes: new  @class = "control-label col-md-4" )
                            <div class="col-md-8">
                                @Html.TextBoxFor(m => m.MIDDLE_NAME, htmlAttributes: new  @class = "form-control ctrl-align-right" )
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <hr class="hrcolor" />
            <div class="row">
                <div class="col-md-12">
                    <div class="form-group">
                        <div class="col-md-8">
                            @Html.LabelFor(m => m.STREET, "Street", htmlAttributes: new  @class = "control-label col-md-2" )
                            <div class="col-md-10">
                                @Html.TextBoxFor(m => m.STREET, htmlAttributes: new  @class = "form-control" )
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="form-group">
                                @Html.LabelFor(m => m.CITY, htmlAttributes: new  @class = "control-label col-md-4" )
                                <div class="col-md-8">
                                    @Html.TextBoxFor(m => m.CITY, htmlAttributes: new  @class = "form-control" )
                                </div>
                            </div>
                        </div>
                    </div>
                 </div>
            </div>
            <div class="row">
                <div class="col-md-12">
                    <div class="col-md-4">
                        <div class="form-group">
                            @Html.LabelFor(m => m.STATE, htmlAttributes: new  @class = "control-label col-md-4" )
                            <div class="col-md-8">
                                @Html.TextBoxFor(m => m.STATE, htmlAttributes: new  @class = "form-control" )
                            </div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            @Html.LabelFor(m => m.ZIP, htmlAttributes: new  @class = "control-label col-md-4" )
                            <div class="col-md-8">
                                @Html.TextBoxFor(m => m.ZIP, htmlAttributes: new  @class = "form-control" )
                            </div>
                        </div>
                    </div>

                </div>

【问题讨论】:

你能分享你的 HTML 吗?仅以上部分 更新了代码 【参考方案1】:

text-align: right 样式应用于“中间名”和“城市”列。

【讨论】:

我尝试过使用 ctrl-align-right 与你提到的 css 类,但没有帮助。【参考方案2】:

问题实际上在第二行,即“街道”和“城市”。

<!-- Your second Row -->
<div class="form-group">
    <div class="col-md-8">
        @Html.LabelFor(m => m.STREET, "Street", htmlAttributes: new  @class = "control-label col-md-2" )
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.STREET, htmlAttributes: new  @class = "form-control" )
        </div>
    </div>
    <div class="col-md-4">
        <div class="form-group">
            @Html.LabelFor(m => m.CITY, htmlAttributes: new  @class = "control-label col-md-4" )
            <div class="col-md-8">
                @Html.TextBoxFor(m => m.CITY, htmlAttributes: new  @class = "form-control" )
            </div>
        </div>
    </div>
</div>

在 col-md-8 中,配给 col-md-2 和 col-md-10 不等于第一行的 col-md-4,因为与 4 个单元格相比,具有 8 个单元格的列具有更大的面积,这就是为什么 col- md-2 和 col-md-10 未正确对齐。我尝试过,但没有找到现有引导类以及不同布局对齐方式的解决方案。

下面是我对一个自定义 CSS 类“form-group-inline”的小帮助的看法,它只是使“form-group”类变为内联。

<html>
    <head>

        <title>Form Group</title>

        <meta name="viewport" content="width=device-width, initial-scale=1">        
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">                
        <style>     
            .form-group-inline
                display: inline;
                   
        </style>
    </head>
    <body>
        <div class="container" style="margin-top: 100px;">

            <div class="row">
                <div class="form-group form-group-inline">
                    <label class="control-label col-md-1">Label</label>
                    <div class="col-md-3">
                        <input type="text" class="form-control">                        
                    </div>                  
                </div>
                <div class="form-group form-group-inline">
                    <label class="control-label col-md-1">Label</label>
                    <div class="col-md-3">
                        <input type="text" class="form-control">
                    </div>
                </div>
                <div class="form-group form-group-inline">
                    <label class="control-label col-md-1">Label</label>
                    <div class="col-md-3">                              
                        <input type="text" class="form-control">
                    </div>
                </div>
            </div>

            <hr class="divider" />

            <div class="row">
                <div class="form-group form-group-inline">
                    <label class="control-label col-md-1">Label</label>
                    <div class="col-md-7">
                        <input type="text" class="form-control">
                    </div>
                </div>
                <div class="form-group form-group-inline">
                    <label class="control-label col-md-1">Label</label>
                    <div class="col-md-3">                              
                        <input type="text" class="form-control">
                    </div>
                </div>
            </div>

        </div>      
    </body>
</html>

希望对你有帮助

【讨论】:

感谢您的回复。我会试试这个,如果有帮助,我会告诉你。

以上是关于使用水平形式对齐引导文本框的主要内容,如果未能解决你的问题,请参考以下文章

没有标签文本的复选框的引导形式水平垂直对齐

html中怎么将标签左对齐,而文本框右对齐的方法

html中怎么将标签左对齐,而文本框右对齐的方法

css如何对齐文本与文本输入框

怎么用CSS样式使文本居中对齐?

怎么用CSS样式使文本居中对齐