Bootstrap 4: 一行中各列之间的间距
Bootstrap 4: gutter between columns in a row
此布局 几乎 在那里,但我无法让间距出现在连续 div 列之间(右侧,绿色)。此外,配置包含所有行(蓝色)的 div 的宽度也很麻烦。代码在 this jsfiddle 中,布局如下图所示。主要的右侧列将动态添加一些未知数量的项目。左侧及其项目是静态的。
它的核心非常通用;也许问题出在 overflow-y 滚动上?但我已经尝试了很多调整,但没有任何效果:
<div class="wrapper-right" style="max-height:80%; overflow-y: scroll">
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p class="mt-0">item #1</p>
</div>
<div class="col-6 item-right px-2">
<p class="mt-0">item #2</p>
</div>
</div>
etc.
</div>
如果您希望在两栏之间有一个白色 space,您可以将您的栏用作内容的容器,并在栏内创建新的内容容器。这会给你一个可见的 space 在两列之间。
然后您可以将两个主要列设置为 100% 的高度以填充 space,并将您的 content_right
容器设置为 flex 和列的方向。从右侧包装器中删除所有样式(边框除外)并添加 overflow: auto
.
#banner {
background-color: goldenrod;
height: 20%;
border: 1px solid red;
}
#content {
border: 1px solid red;
height: 77%;
position: relative;
}
#content .row {
border: 1px solid green;
}
#content_left {
background-color: #ccc;
height: 100%;
overflow-y: auto;
}
#content_right {
background-color: #ddd;
height: 100%;
position: relative;
/* overflow-y: scroll; */
}
.item-left {
min-height: 50px;
background-color: yellow;
;
}
.item-right {
min-height: 85px;
background-color: beige;
border-right: solid 0.375rem white;
/* border: 2px dotted #ddd; */
}
.item-right + .item-right {
border-left: solid 0.375rem white;
border-right: none;
}
.wrapper-right {
overflow: auto;
border: 1px solid blue;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container mt-1" style="height: calc(100vh - 12px); border: 1px solid #00ff00;">
<div id="banner" class="w-100 my-1 p-2">
<p>banner</p>
</div>
<div id="content" class="row mx-0">
<div class="col-sm-6 h-100">
<div id="content_left" class="p-2">
<div class="h5 w-100" style="background:#fff; text-align:center;">Left</div>
<div class="content-wrapper p-1">
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #1</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #2</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #3</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #4</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #5</p>
</div>
</div>
</div>
</div> <!-- content_left-->
<div class="col-sm-6 h-100">
<div id="content_right" class=" d-flex flex-column p-2">
<div class="h5 w-100" style="background:#fff; text-align:center;">Right</div>
<div class="wrapper-right">
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p class="mt-0">(r) item #1</p>
</div>
<div class="col-6 item-right px-2">
<p class="mt-0">(r) item #2</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #3</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #4</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #5</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #6</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #7</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #8</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #9</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #10</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #11</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #12</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #13</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #14</p>
</div>
</div>
</div>
</div>
</div> <!-- content_right -->
</div> <!-- content -->
</div>
为了将来参考,最好使用代码段工具包含您的代码,而不是使用 link 到第三方站点。
此布局 几乎 在那里,但我无法让间距出现在连续 div 列之间(右侧,绿色)。此外,配置包含所有行(蓝色)的 div 的宽度也很麻烦。代码在 this jsfiddle 中,布局如下图所示。主要的右侧列将动态添加一些未知数量的项目。左侧及其项目是静态的。
它的核心非常通用;也许问题出在 overflow-y 滚动上?但我已经尝试了很多调整,但没有任何效果:
<div class="wrapper-right" style="max-height:80%; overflow-y: scroll">
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p class="mt-0">item #1</p>
</div>
<div class="col-6 item-right px-2">
<p class="mt-0">item #2</p>
</div>
</div>
etc.
</div>
如果您希望在两栏之间有一个白色 space,您可以将您的栏用作内容的容器,并在栏内创建新的内容容器。这会给你一个可见的 space 在两列之间。
然后您可以将两个主要列设置为 100% 的高度以填充 space,并将您的 content_right
容器设置为 flex 和列的方向。从右侧包装器中删除所有样式(边框除外)并添加 overflow: auto
.
#banner {
background-color: goldenrod;
height: 20%;
border: 1px solid red;
}
#content {
border: 1px solid red;
height: 77%;
position: relative;
}
#content .row {
border: 1px solid green;
}
#content_left {
background-color: #ccc;
height: 100%;
overflow-y: auto;
}
#content_right {
background-color: #ddd;
height: 100%;
position: relative;
/* overflow-y: scroll; */
}
.item-left {
min-height: 50px;
background-color: yellow;
;
}
.item-right {
min-height: 85px;
background-color: beige;
border-right: solid 0.375rem white;
/* border: 2px dotted #ddd; */
}
.item-right + .item-right {
border-left: solid 0.375rem white;
border-right: none;
}
.wrapper-right {
overflow: auto;
border: 1px solid blue;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container mt-1" style="height: calc(100vh - 12px); border: 1px solid #00ff00;">
<div id="banner" class="w-100 my-1 p-2">
<p>banner</p>
</div>
<div id="content" class="row mx-0">
<div class="col-sm-6 h-100">
<div id="content_left" class="p-2">
<div class="h5 w-100" style="background:#fff; text-align:center;">Left</div>
<div class="content-wrapper p-1">
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #1</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #2</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #3</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #4</p>
</div>
<div class="item-left mb-1 px-2">
<p class="mt-0">(l) item #5</p>
</div>
</div>
</div>
</div> <!-- content_left-->
<div class="col-sm-6 h-100">
<div id="content_right" class=" d-flex flex-column p-2">
<div class="h5 w-100" style="background:#fff; text-align:center;">Right</div>
<div class="wrapper-right">
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p class="mt-0">(r) item #1</p>
</div>
<div class="col-6 item-right px-2">
<p class="mt-0">(r) item #2</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #3</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #4</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #5</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #6</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #7</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #8</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #9</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #10</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #11</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #12</p>
</div>
</div>
<div class="row mx-1 mb-1">
<div class="col-6 item-right px-2">
<p>(r) item #13</p>
</div>
<div class="col-6 item-right px-2">
<p>(r) item #14</p>
</div>
</div>
</div>
</div>
</div> <!-- content_right -->
</div> <!-- content -->
</div>
为了将来参考,最好使用代码段工具包含您的代码,而不是使用 link 到第三方站点。