Bootstrap 5行间距设置:是否需同时使用gutter与margin类?
问题
在Bootstrap 5中,gutter类(比如gy-*)似乎无法在不同的row元素之间添加垂直间距,只有当单个row内的列总宽度超过12、显示时自动换行时才会生效。
我开发的主平台是iPad,内容以单行row呈现,所以用mb-2类添加行与行之间的间距;但在手机等小设备上,row内的内容会换行,此时换行后的列之间没有间距,因此又添加了gy-2类。想请教:多数情况下是否需要为row同时添加mb(margin bottom)类与gy(垂直gutter)类?
示例代码
<div class="row gy-2 mb-2"> <div class="col"> <span class="ps-2"> <label> All tracks composed by </label> <span> <a href="/composer.start?cid=0$=Composer$2682&title=Composers+%2F+Johann+Sebastian+Bach" class="small figure-caption"> Johann Sebastian Bach </a> <label class="small figure-caption"> </label> </span> </span> </div> </div> <div class="row gy-2 mb-2"> <div class="col-12 col-sm-auto"> <span> <button id="show_movements_button" type="btn" class="btn btn-outline-primary" data-bs-toggle="collapse" data-bs-target="#movements_id"> Show Movements </button> </span> <span> <button id="show_credits_button" type="btn" class="btn btn-outline-secondary" data-bs-toggle="collapse" data-bs-target="#credits_id"> Show All Credits </button> </span> </div> <div class="col-12 col-sm-auto ms-sm-auto"> <span> <span class="input-group"> <span for="filter" id="filterlabel" class="input-group-text"> Filter </span> <input type="text" id="filter" name="filter" onkeyup="filterOnly()" class="form-control"> </span> </span> </div> </div>
回答
这种场景下确实需要同时添加mb-*和gy-*类,二者作用完全不同:
gy-*负责控制同一个row内部,列换行后产生的垂直间距,它本质是通过给列添加上下内边距(padding)实现的,不会影响不同row之间的距离;mb-*负责控制不同row元素之间的垂直间距,属于margin属性,作用在row本身的底部,和row内部的列无关。
你的场景刚好覆盖了两种需要间距的情况:
- iPad等中等屏幕上,每个
row都是单行布局,row内部没有换行,gy-*不会生效,此时mb-*负责给上下row之间加间距; - 手机等小屏幕上,部分
row内部的列会换行,此时gy-*能给换行后的列之间补上垂直间距,而mb-*依然负责不同row之间的间距。
如果只加其中一种,都会导致某一种场景下的间距缺失,所以多数类似的响应式布局场景中,同时使用这两个类是合理的做法。
内容的提问来源于stack exchange,提问作者Paul Taylor
相关产品推荐
相关产品推荐

