【问题标题】:Bootstrap 5 - Position floating label inside form-control with width: auto?Bootstrap 5 - 在表单控件内定位浮动标签,宽度:自动?
【发布时间】:2021-09-28 15:46:11
【问题描述】:

我正在使用 Bootstrap 5。我正在尝试使用带有居中表单控件的浮动标签,该控件的宽度为 auto,而不是 Bootstrap 的默认 100%。我不确定如何让浮动标签始终位于输入字段内。我目前有以下表格和相关的 CSS:

    <form action="/login" method="post">
        <div class="form-floating mb-3">
            <input type="text" class="form-control" name="username" id="floatingUsername" placeholder="Username" autocomplete="off" autofocus>
            <label for="floatingUsername">Username</label>
        </div>
        <div class="form-floating mb-3">
            <input type="password" class="form-control" name="password" id="floatingPassword" placeholder="Password" autocomplete="off">
            <label for="floatingPassword">Password</label>
        </div>
        <button class="btn btn-light border" type="submit">Log In</button>
    </form>
main .form-control
{
    /* Center form controls and override 100% width */
    display: inline-block;
    width: auto;
}

main
{
    /* Scroll horizontally*/
    overflow-x: auto;

    text-align: center;
}

这就是它的样子: labels not inside inputs

我尝试在 .form-floating、标签等中使用一堆对齐和显示属性。我还尝试为标签设置 width:auto ,但这也没有改变任何东西。有点不知所措,因为我只有很少的经验,而且浮动标签似乎是股票 Bootstrap 的一个相对较新的补充,所以谷歌/SO 没有找到太多。也许只是不可能使输入变小(不是宽度:100%)并有工作的浮动标签?

【问题讨论】:

  • 尝试将宽度auto应用到form-floating div上,如果不行,请放一个JSFiddle,我们可以看看!
  • @SiddharthBhansali 只是为了通知您,我确实尝试了您的方法:可悲的是,宽度自动在应用于 .form-floating 时没有做任何事情。但是 HDP 在下面发布的解决方案有效(我使用了 flex)。感谢您的意见!

标签: html css forms bootstrap-5 floating-labels


【解决方案1】:

您可以在不使用自定义 css 的情况下使用 bootstrap flex 行为和网格系统。

示例1

flex behaviors

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>

<div class="d-flex justify-content-center text-center">
    <form action="/login" method="post">
        <div class="form-floating mb-3">
            <input type="text" class="form-control" name="username" id="floatingUsername" placeholder="Username" autocomplete="off" autofocus>
            <label for="floatingUsername">Username</label>
        </div>
        <div class="form-floating mb-3">
            <input type="password" class="form-control" name="password" id="floatingPassword" placeholder="Password" autocomplete="off">
            <label for="floatingPassword">Password</label>
        </div>
        <button class="btn btn-light border" type="submit">Log In</button>
    </form>
    </div>

示例2

Grid system

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>

<div class="container">
  <div class="row justify-content-center text-center">
<div class="col-md-4">
  <form action="/login" method="post">
    <div class="form-floating mb-3">
      <input type="text" class="form-control" name="username" id="floatingUsername" placeholder="Username" autocomplete="off" autofocus>
      <label for="floatingUsername">Username</label>
    </div>
    <div class="form-floating mb-3">
      <input type="password" class="form-control" name="password" id="floatingPassword" placeholder="Password" autocomplete="off">
      <label for="floatingPassword">Password</label>
    </div>
    <button class="btn btn-light border" type="submit">Log In</button>
  </form>
</div>
  </div>
</div>

【讨论】:

  • 非常感谢您的帮助,@HDP!我认为第一个解决方案更优雅,我应用了它,我正在阅读相关文档。太方便了!
猜你喜欢
  • 2021-07-05
  • 2021-09-05
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
相关资源
最近更新 更多