簡體   English   中英

在輸入組中引導 5 個浮動標簽

[英]Bootstrap 5 floating labels in an input group

我想一起使用 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>

為了改進@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>

將浮動標簽放在另一個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>

我遇到了同樣的需求。

這是我的解決方案:

表格 :

<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;
}

我想選擇器可以大大改進,因為某些情況不會再發生,請隨時提交改進!

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>

.input-group .form-floating input {
    border-top-right-radius: 0!important;
    border-bottom-right-radius: 0!important;
}

感謝正確的嵌套,為什么要使用新的類命名空間?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM