如何解决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
相关产品推荐
相关产品推荐

