You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Bootstrap中水平表单标签换行问题?

解决Bootstrap 4水平表单标签换行问题

问题描述

尝试让水平表单标签显示在单行,但目前标签出现了换行情况,期望标签名称保持单行显示。

表单标签换行效果

当前使用的代码:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<div class="container">
  <h2 class="mt32">Bootstrap 4 Horizontal Form</h2>

  <form class="mt32" action="#">
    <div class="row">
      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
        <div class="form-group row">
          <label for="fname" class="control-label col-sm-2">First Name</label>
          <div class="col-sm-10">
            <input
              type="text"
              class="form-control"
              id="fname"
              placeholder="First name"
            />
          </div>
        </div>
      </div>

      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
        <div class="form-group row">
          <label for="fname" class="control-label col-sm-2">Last Name</label>
          <div class="col-sm-10">
            <input
              type="text"
              class="form-control"
              id="lname"
              placeholder="Last name"
            />
          </div>
        </div>
      </div>

      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
        <div class="form-group row">
          <label for="fname" class="control-label col-sm-2">Sports</label>
          <div class="col-sm-10">
            <input
              type="text"
              class="form-control"
              id="sportsname"
              placeholder="Sports name"
            />
          </div>
        </div>
      </div>

      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
        <div class="form-group row">
          <label for="fname" class="control-label col-sm-2">School Name</label>
          <div class="col-sm-10">
            <input
              type="text"
              class="form-control"
              id="sname"
              placeholder="Shcool name"
            />
          </div>
        </div>
      </div>
    </div>
  </form>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>

问题原因

标签换行是因为给标签分配的col-sm-2列宽度不足以容纳标签文本(比如"School Name"这类较长的文本),当容器宽度缩小时,列宽不足会触发文本换行。

解决方案

1. 调整标签列宽度

把标签的col-sm-2改为更宽的列类,确保列宽能容纳标签内容,同时对应调整输入框的列宽,保持一行总列数为12:

<label for="sname" class="control-label col-sm-3">School Name</label>
<div class="col-sm-9">
  <input type="text" class="form-control" id="sname" placeholder="Shcool name" />
</div>

2. 强制文本不换行

使用Bootstrap内置的text-nowrap类,强制文本单行显示:

<label for="sname" class="control-label col-sm-2 text-nowrap">School Name</label>

如果文本过长超出容器,可配合text-truncate类实现截断显示(需设置标签为块级元素):

<label for="sname" class="control-label col-sm-2 text-nowrap text-truncate d-block">School Name</label>

3. 优化响应式布局

针对不同屏幕尺寸调整标签列宽,小屏幕下让标签独占一行,避免拥挤:

<label for="sname" class="control-label col-sm-12 col-md-2">School Name</label>
<div class="col-sm-12 col-md-10">
  <input type="text" class="form-control" id="sname" placeholder="Shcool name" />
</div>

内容的提问来源于stack exchange,提问作者Pakal Nilavu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:55:53