【问题标题】:How to use form-inline bootstrap 3?如何使用表单内联引导程序 3?
【发布时间】:2015-11-19 07:28:24
【问题描述】:

我有一个 HTML 和 Razor 视图,我正在尝试构建一个如下所示的表单:

但是,我能做到的最好的情况如下:

如您所见,标签未内联。 为了实现这一点,我已经阅读了 Bootstrap 3 (http://getbootstrap.com/components/#navbar-forms) 中的 form-inline 类,但无论我如何使用 form-inline,我都无法将标签放到正确的位置,而不会使整个布局变得一团糟。

这是我当前的代码(没有表单内联):

 <fieldset class="group-border">
                    <legend class="group-border">Info</legend>

                    <div class="row">
                        <div class="col-lg-4">
                            <div class="form-group">
                                @Html.LabelFor(doc => doc.NumDoc, new { @class = "control-label" })
                                @Html.TextBoxFor(doc => doc.NumDoc, new { @class = "form-control input-sm", placeholder = "Nº Documento", disabled = "disabled" })
                            </div>
                        </div>
                        <div class="col-lg-4">
                            <div class="form-group">
                                @Html.LabelFor(doc => doc.ProcessNum, new { @class = "control-label" })
                                @Html.TextBoxFor(doc => doc.ProcessNum, new { @class = "form-control input-sm", placeholder = "Nº Processo", disabled = "disabled" })
                            </div>
                        </div>
                        <div class="col-lg-4">
                            <div class="form-group">
                                @Html.LabelFor(doc => doc.State, new { @class = "control-label" })
                                @Html.TextBoxFor(doc => doc.State, new { @class = "form-control input-sm", placeholder = "Estado", disabled = "disabled" })
                            </div>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-lg-6">
                            <div class="form-group">
                                @Html.LabelFor(doc => doc.Name, new { @class = "control-label" })
                                @Html.TextBoxFor(doc => doc.Name, new { @class = "form-control input-sm", placeholder = "Nome Documento", disabled = "disabled" })
                            </div>
                        </div>
                        <div class="col-lg-6">
                            @Html.LabelFor(doc => doc.IsArchived, new { @class = "control-label" })
                            @Html.CheckBoxFor(doc => doc.IsArchived, new { @class = "input-sm", disabled = "disabled" })
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-lg-6">
                            <div class="form-group">
                                @Html.LabelFor(doc => doc.Description, new { @class = "control-label" })
                                @Html.TextBoxFor(doc => doc.Description, new { @class = "form-control input-sm", placeholder = "Descrição", disabled = "disabled" })
                            </div>
                        </div>
                        <div class="col-lg-6">
                            <div class="form-group">
                                @Html.LabelFor(doc => doc.Date, new { @class = "control-label" })
                                @Html.TextBoxFor(doc => doc.Date, new { @class = "form-control input-sm", placeholder = "dd/MM/yyyy", disabled = "disabled" })
                            </div>
                        </div>
                    </div>

                </fieldset>

Bellow 是 HTML CSS 和 Javascript 中的代码 sn-p,试图复制我所拥有的。

<style> legend.group-border {
  width: inherit;
  /* Or auto */
  padding: 0 10px;
  /* To give a bit of padding on the left and right */
  border-bottom: none;
}
fieldset.group-border {
  border: 1px groove #ddd !important;
  padding: 0 1.4em 1.4em 1.4em !important;
  margin: 0 0 1.5em 0 !important;
  -webkit-box-shadow: 0px 0px 0px 0px #000;
  box-shadow: 0px 0px 0px 0px #000;
}
</style>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<fieldset class="group-border">
  <legend class="group-border">Info</legend>

  <div class="row">
    <div class="col-lg-4">
      <div class="form-group">
        <label class="control-label" for="NumDoc">Nº Documento</label>
        <input class="form-control input-sm" data-val="true" data-val-number="The field Nº Documento must be a number." data-val-required="O campo Nº Documento é necessário." disabled="disabled" id="NumDoc" name="NumDoc" placeholder="Nº Documento" type="text"
        value="21354">
      </div>
    </div>
    <div class="col-lg-4">
      <div class="form-group">
        <label class="control-label" for="ProcessNum">Nº Processo</label>
        <input class="form-control input-sm" data-val="true" data-val-number="The field Nº Processo  must be a number." data-val-required="O campo Nº Processo  é necessário." disabled="disabled" id="ProcessNum" name="ProcessNum" placeholder="Nº Processo" type="text"
        value="54463">
      </div>
    </div>
    <div class="col-lg-4">
      <div class="form-group">
        <label class="control-label" for="State">Estado</label>
        <input class="form-control input-sm" disabled="disabled" id="State" name="State" placeholder="Estado" type="text" value="Em Inbox">
      </div>
    </div>
  </div>

  <div class="row">
    <div class="col-lg-6">
      <div class="form-group">
        <label class="control-label" for="Name">Nome</label>
        <input class="form-control input-sm" disabled="disabled" id="Name" name="Name" placeholder="Nome Documento" type="text" value="A134-MULTAS">
      </div>
    </div>
    <div class="col-lg-6">
      <label class="control-label" for="IsArchived">Arquivado?</label>
      <input checked="checked" class="input-sm" data-val="true" data-val-required="O campo Arquivado? é necessário." disabled="disabled" id="IsArchived" name="IsArchived" type="checkbox" value="true">
      <input name="IsArchived" type="hidden" value="false">
    </div>
  </div>

  <div class="row">
    <div class="col-lg-6">
      <div class="form-group">
        <label class="control-label" for="Description">Descrição</label>
        <input class="form-control input-sm" disabled="disabled" id="Description" name="Description" placeholder="Descrição" type="text" value="Fast and Furious">
      </div>
    </div>
    <div class="col-lg-6">
      <div class="form-group">
        <label class="control-label" for="Date">Data Documento</label>
        <input class="form-control input-sm" data-val="true" data-val-date="The field Data Documento must be a date." data-val-required="O campo Data Documento é necessário." disabled="disabled" id="Date" name="Date" placeholder="dd/MM/yyyy" type="text" value="25/08/2015 15:03:26">
      </div>
    </div>
  </div>

</fieldset>

如您所见,我有一行,分为 3 列(每列占用 4 个单位的宽度),里面有我使用 Razor 的表单。

如何修改我当前的 HTML 代码以实现模型中的结果?

【问题讨论】:

  • 您使用了&lt;form class="form group"&gt;。 Twitter-Bootstrap 3 提供了一些关于 inline form 的文档,您可以在此处访问:getbootstrap.com/css/#forms-inline.
  • 我已经知道form-inline,但它似乎不适用于我的布局。

标签: html css forms twitter-bootstrap razor


【解决方案1】:

这里是代码 sn-p,我只是将 form-group 类更改为 form-inline,更改了列数及其宽度,并添加 containerrowcol-md-12 divs,我也尝试垂直对齐 checkbox 看起来更像你的第一个模型图像

<style> legend.group-border {
  width: inherit;
  /* Or auto */
  padding: 0 10px;
  /* To give a bit of padding on the left and right */
  border-bottom: none;
}
fieldset.group-border {
  border: 1px groove #ddd !important;
  padding: 0 1.4em 1.4em 1.4em !important;
  margin: 0 0 1.5em 0 !important;
  -webkit-box-shadow: 0px 0px 0px 0px #000;
  box-shadow: 0px 0px 0px 0px #000;
}
</style>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
            <div class="row">
                <div class="col-md-12">
                    <fieldset class="group-border">
                        <legend class="group-border">Info</legend>

                        <div class="row">
                            <div class="col-lg-4">
                                <div class="form-inline">
                                    <label class="control-label" for="NumDoc">Nº Documento</label>
                                    <input class="form-control input-sm" data-val="true" data-val-number="The field Nº Documento must be a number." data-val-required="O campo Nº Documento é necessário." disabled="disabled" id="NumDoc" name="NumDoc" placeholder="Nº Documento" value="21354" type="text">
                                </div>
                            </div>
                            <div class="col-lg-4">
                                <div class="form-inline">
                                    <label class="control-label" for="ProcessNum">Nº Processo</label>
                                    <input class="form-control input-sm" data-val="true" data-val-number="The field Nº Processo  must be a number." data-val-required="O campo Nº Processo  é necessário." disabled="disabled" id="ProcessNum" name="ProcessNum" placeholder="Nº Processo" value="54463" type="text">
                                </div>
                            </div>
                            <div class="col-lg-4">
                                <div class="form-inline">
                                    <label class="control-label" for="State">Estado</label>
                                    <input class="form-control input-sm" disabled="disabled" id="State" name="State" placeholder="Estado" value="Em Inbox" type="text">
                                </div>
                            </div>
                        </div>
                        <br>
                        <div class="row">
                            <div class="col-lg-1">
                                <label class="control-label" for="Name">Nome</label>
                            </div>
                            <div class="col-lg-7">
                                <input class="form-control input-sm" disabled="disabled" id="Name" name="Name" placeholder="Nome Documento" value="A134-MULTAS" type="text">
                            </div>
                            <div style="float: left;" class="col-lg-4 text-left">
                                <input style="float: left;" checked="checked" class="input-sm" data-val="true" data-val-required="O campo Arquivado? é necessário." disabled="disabled" id="IsArchived" name="IsArchived" value="true" type="checkbox">
                                <label style="margin-top: 10px; margin-left: 9px;" class="control-label" for="IsArchived">Arquivado?</label>
                                <input name="IsArchived" value="false" type="hidden">
                            </div>
                        </div>
                        <br>
                        <div class="row">
                            <div class="col-lg-1">
                                <label class="control-label" for="Description">Descrição</label>
                            </div>
                            <div class="col-lg-7">
                                <input class="form-control input-sm" disabled="disabled" id="Description" name="Description" placeholder="Descrição" value="Fast and Furious" type="text">
                            </div>
                            <div class="col-lg-4">
                                <div class="form-inline">
                                    <label class="control-label" for="Date">Data Documento</label>
                                    <input class="form-control input-sm" data-val="true" data-val-date="The field Data Documento must be a date." data-val-required="O campo Data Documento é necessário." disabled="disabled" id="Date" name="Date" placeholder="dd/MM/yyyy" value="25/08/2015 15:03:26" type="text">
                                </div>
                            </div>
                        </div>
                    </fieldset>
                </div>
            </div>
        </div>

【讨论】:

    【解决方案2】:

    在检查了替代方案后,我们最终使用了from-horizontal。根据引导文档,如果您想使用列(在本例中为 col-lg-X),此解决方案应该更可行,因为添加此类将使内部子项的行为就像它们在 row 对象中一样,这是人们所需要的正确对齐一个表单。

    文档可以在这里查看:

    我还在 CSS 中添加了一些其他样式。

    这个解决方案非常适合我们的需求,它确实避免了像以前的解决方案那样弄乱边距和以像素为单位设置值。出于所有目的,如果您想要一个简单网格中的表单,这就是 imo 的方式。

    但是,鉴于 Enrique Zavaleta 的努力和客观性,我决定选择他的答案而不是这个答案。坚持下去!

    下面是我的代码 sn-p。希望大家喜欢!

        legend {
          margin-bottom: 0px;
        }
        legend.group-border {
          width: inherit;
          /* Or auto */
          padding: 0 10px;
          /* To give a bit of padding on the left and right */
          border-bottom: none;
        }
        fieldset.group-border {
          border: 1px groove #ddd !important;
          padding: 0 1.4em 1.4em 1.4em !important;
          margin: 0 0 1.5em 0 !important;
          -webkit-box-shadow: 0px 0px 0px 0px #000;
          box-shadow: 0px 0px 0px 0px #000;
        }
        .small input {
          height: 22px;
          padding: 2px 5px;
          font-size: 12px;
          line-height: 1.5;
          border-radius: 3px;
        }
        /*left align all labels*/
        .form-horizontal .control-label {
          text-align: left !important;
        }
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
    <fieldset class="group-border">
      <legend class="group-border">Info</legend>
    
      <div class="row">
        <div class="col-lg-4 form-horizontal">
          <div class="form-group">
            <label class="control-label col-lg-6" for="NumDoc">Nº Documento</label>
            <div class="col-lg-6">
              <input class="form-control input-sm" data-val="true" data-val-number="The field Nº Documento must be a number." data-val-required="O campo Nº Documento é necessário." disabled="disabled" id="NumDoc" name="NumDoc" placeholder="Nº Documento" type="text"
              value="21354">
            </div>
          </div>
        </div>
    
        <div class="col-lg-4 form-horizontal">
          <div class="form-group">
            <label class="control-label col-lg-5" for="ProcessNum">Nº Processo</label>
            <div class="col-lg-7">
              <input class="form-control input-sm" data-val="true" data-val-number="The field Nº Processo  must be a number." data-val-required="O campo Nº Processo  é necessário." disabled="disabled" id="ProcessNum" name="ProcessNum" placeholder="Nº Processo" type="text"
              value="54463">
            </div>
          </div>
        </div>
    
        <div class="col-lg-4 form-horizontal">
          <div class="form-group">
            <label class="control-label col-lg-3" for="State">Estado</label>
            <div class="col-lg-9">
              <input class="form-control input-sm" disabled="disabled" id="State" name="State" placeholder="Estado" type="text" value="Em Inbox">
            </div>
          </div>
        </div>
      </div>
    
      <div class="row">
        <div class="col-lg-8 form-horizontal">
          <div class="form-group">
            <label class="control-label col-lg-2" for="Name">Nome</label>
            <div class="col-lg-10">
              <input class="form-control input-sm" disabled="disabled" id="Name" name="Name" placeholder="Nome Documento" type="text" value="A134-MULTAS">
            </div>
          </div>
        </div>
        <div class="col-lg-4 form-horizontal">
          <div class="form-group">
            <label class="control-label col-lg-5" for="IsArchived">Arquivado?</label>
            <div class="col-lg-7">
              <input checked="checked" class="input-sm" data-val="true" data-val-required="O campo Arquivado? é necessário." disabled="disabled" id="IsArchived" name="IsArchived" type="checkbox" value="true">
              <input name="IsArchived" type="hidden" value="false">
            </div>
          </div>
        </div>
      </div>
    
      <div class="row">
        <div class="col-lg-8 form-horizontal">
          <div class="form-group">
            <label class="control-label col-lg-2" for="Description">Descrição</label>
            <div class="col-lg-10">
              <input class="form-control input-sm" disabled="disabled" id="Description" name="Description" placeholder="Descrição" type="text" value="Fast and Furious">
            </div>
          </div>
        </div>
        <div class="col-lg-4 form-horizontal">
          <div class="form-group">
            <label class="control-label col-lg-2" for="Date">Data</label>
            <div class="col-lg-8">
              <input class="form-control input-sm" data-val="true" data-val-date="The field Data must be a date." data-val-required="O campo Data é necessário." disabled="disabled" id="Date" name="Date" placeholder="dd/MM/yyyy" type="text" value="26/08/2015 10:48:43">
            </div>
            <span class="glyphicon glyphicon-calendar"></span>
          </div>
        </div>
      </div>
    
    </fieldset>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多