【问题标题】:Bootstrap 5 floating labels in an input group在输入组中引导 5 个浮动标签
【发布时间】:2021-10-13 11:52:53
【问题描述】:

我想同时使用 Bootstrap 的“浮动标签”和“输入组”组件。 我遇到的麻烦是当输入聚焦时标签是隐藏的。 在下面的代码示例中,我有以下场景:

  1. 两个组件(请注意,单击输入时标签会消失)。
  2. 仅浮动标签

有谁知道使这些组件协同工作的方法吗?

<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet"/>

<div class="form-floating input-group mb-3">
    <input type="text" class="form-control" name="code1" placeholder="Code 1">
    <label for="code1">Code 1</label>
    <span class="input-group-text"><i class="fas fa-times"></i></span>
</div>

<div class="form-floating mb-3">
    <input type="text" class="form-control" name="code4" placeholder="Code 4">
    <label for="code4">Code 4</label>
</div>

【问题讨论】:

    标签: javascript html bootstrap-5


    【解决方案1】:

    将浮动标签放在另一个 input-group div 中。

    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet"/>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js"></script>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
    
    <div class="input-group mb-3">
      <div class="form-floating flex-grow-1">
          <input type="text" class="form-control" name="code1" placeholder="Code 1">
          <label for="code1">Code 1</label>
      </div>
      <span class="input-group-text"><i class="fas fa-times"></i></span>
    </div>

    【讨论】:

      【解决方案2】:

      为了改进@Unmitigated 的答案,我最终删除了输入的两个右角的半径。

      .form-floating-group input {
        border-bottom-right-radius: 0;
        border-top-right-radius: 0;
      }
      <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet"/>
      <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js"></script>
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
      
      <div class="input-group mb-3">
        <div class="form-floating form-floating-group flex-grow-1">
            <input type="text" class="form-control" name="code1" placeholder="Code 1">
            <label for="code1">Code 1</label>
        </div>
        <span class="input-group-text"><i class="fas fa-times"></i></span>
      </div>

      【讨论】:

        【解决方案3】:
        .input-group .form-floating input {
            border-top-right-radius: 0!important;
            border-bottom-right-radius: 0!important;
        }
        

        感谢正确的嵌套,为什么要使用新的类命名空间?

        【讨论】:

        【解决方案4】:

        我也遇到过同样的需求。

        这是我的解决方案:

        形式:

        <div class="col-12">
          <div class="input-group mb-3">
            <span class="input-group-text">Label :</span>
            <div class="form-floating">
              @Html.EditorFor(model => model.FieldA, new { htmlAttributes = new { @class = "form-control", placeholder = "Field A" } })
              @Html.LabelFor(model => model.FieldA)
            </div>
            <div class="form-floating">
              @Html.EditorFor(model => model.FieldB, new { htmlAttributes = new { @class = "form-control", placeholder = "Field B" } })
              @Html.LabelFor(model => model.FieldB)
            </div>
          </div>
        </div>
        

        注意:我使用的是 ASP.NET,请将 Editor 和 Label -For 调用替换为您的相应代码:

        <input type="text" class="form-control" name="code1" placeholder="Code 1">
        <label for="code1">Code 1</label>
        <span class="input-group-text"><i class="fas fa-times"></i></span>
        

        找到Bootstrap处理圆角边框的原始方式(V5.1)。以下是原始代码行:

        .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
        .input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {
          border-top-right-radius: 0;
          border-bottom-right-radius: 0;
        }
        .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),
        .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {
          border-top-right-radius: 0;
          border-bottom-right-radius: 0;
        }
        .input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
          margin-left: -1px;
          border-top-left-radius: 0;
          border-bottom-left-radius: 0;
        }
        
        .input-group > .form-control,
        .input-group > .form-select {
          position: relative;
          flex: 1 1 auto;
          width: 1%;
          min-width: 0;
        }
        

        这是我的自定义 css,基于我对 css 选择器的了解(我实际上是后端开发人员):

        .input-group:not(.has-validation) .form-floating:not(:last-child) > :not(.dropdown-toggle):not(.dropdown-menu),
        .input-group:not(.has-validation) .form-floating > .dropdown-toggle:nth-last-child(n+3) {
          border-top-right-radius: 0;
          border-bottom-right-radius: 0;
        }
        .input-group.has-validation .form-floating:nth-last-child(n+3) > :not(.dropdown-toggle):not(.dropdown-menu),
        .input-group.has-validation .form-floating > .dropdown-toggle:nth-last-child(n+4) {
          border-top-right-radius: 0;
          border-bottom-right-radius: 0;
        }
        .input-group .form-floating:not(:first-child) > :not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
          /*margin-left: -1px;*/
          border-top-left-radius: 0;
          border-bottom-left-radius: 0;
        }
        
        /* for form to be responsive */
        .input-group > .form-floating {
          position: relative;
          flex: 1 1 auto;
          width: 1%;
          min-width: 0;
        }
        

        我想选择器可以大大改进,因为某些情况不会再发生,请随时提交改进!

        【讨论】:

          【解决方案5】:

          rounded-0 rounded-start 需要避免输入文本右侧的边界半径

          <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet" />
          <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js"></script>
          <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" />
          
          <div class="container mt-5">
            <div class="input-group">
              <div class="flex-grow-1 form-floating">
                <input placeholder="Search address" aria-label="Search address" aria-describedby="basic-wallet" type="text" class="rounded-0 rounded-start form-control" value="New York">
                <label>Your wallet address</label>
              </div>
              <span class="input-group-text"><i class="fas fa-times"></i></span>
            </div>
          </div>

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-10-08
            • 2015-11-10
            • 2021-09-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-26
            • 2021-08-21
            相关资源
            最近更新 更多