在具有更大和更小列的弹性列布局中,我可以让较小的列显示全宽以防它被包裹吗?
In a flex column layout with a bigger and a smaller column, can I have the smaller column display full-width in case it's wrapped?
我正在使用 Bootstrap 4. 我有一个类似
的弹性布局
.larger {
background: blue;
}
.smaller {
background: red;
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<div class="row">
<div class="col larger"> larger column </div>
<div class="col-3 smaller"> smaller column </div>
</div>
现在,当我将 window 调整为非常小的宽度时,第二列单独显示在新行中。没关系。但是,它仍然只显示为线宽的一小部分。那很糟。如果有换行符,我想让 div 填充可用大小。我该怎么做?
请使用此代码
<div class="row">
<div class="col"> larger column </div>
<div class="col-12 col-md-3"> smaller column </div>
</div>
.col-md-3
在平板电脑和大屏幕上占屏幕的三分之一,但在小屏幕上没有效果。
关注grid options.
每行由 12 列组成。如果您希望第二个元素在小屏幕及以上 (~576px) 上占据 3 列,但在小于此尺寸的屏幕上占据所有 12 列,则要使用的 类 将是 col-12 col-sm-3
.
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<div class="row">
<div class="col"> larger column </div>
<div class="col-12 col-sm-3"> smaller column </div>
</div>
由于您添加了 css
标签,这里有一个纯粹的 CSS 替代解决方案:
.container{
display: flex;
flex-wrap: wrap;
}
.larger {
background: blue;
flex: 1;
width: 100%;
min-width: 75%;
}
.smaller {
background: red;
flex: 1;
}
<div class="container">
<div class="larger"> larger column </div>
<div class="smaller"> smaller column </div>
</div>
我在这里所做的是使用 flexbox
来利用 flex-wrap
进行包装,并使用 flex-grow
使它们增长到任何可用的 space。最后,使用 min-width
将较大的列设置为行的 3/4。如果您对 flexbox
及其工作原理感兴趣,请阅读更多 here.
您没有义务使用row/col系统:
div {
outline:1px solid red
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<div class="d-flex flex-wrap">
<div class="w-75 flex-grow-1"> larger column </div>
<div class="flex-fill"> smaller column </div>
</div>
我正在使用 Bootstrap 4. 我有一个类似
的弹性布局.larger {
background: blue;
}
.smaller {
background: red;
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<div class="row">
<div class="col larger"> larger column </div>
<div class="col-3 smaller"> smaller column </div>
</div>
现在,当我将 window 调整为非常小的宽度时,第二列单独显示在新行中。没关系。但是,它仍然只显示为线宽的一小部分。那很糟。如果有换行符,我想让 div 填充可用大小。我该怎么做?
请使用此代码
<div class="row">
<div class="col"> larger column </div>
<div class="col-12 col-md-3"> smaller column </div>
</div>
.col-md-3
在平板电脑和大屏幕上占屏幕的三分之一,但在小屏幕上没有效果。
关注grid options.
每行由 12 列组成。如果您希望第二个元素在小屏幕及以上 (~576px) 上占据 3 列,但在小于此尺寸的屏幕上占据所有 12 列,则要使用的 类 将是 col-12 col-sm-3
.
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<div class="row">
<div class="col"> larger column </div>
<div class="col-12 col-sm-3"> smaller column </div>
</div>
由于您添加了 css
标签,这里有一个纯粹的 CSS 替代解决方案:
.container{
display: flex;
flex-wrap: wrap;
}
.larger {
background: blue;
flex: 1;
width: 100%;
min-width: 75%;
}
.smaller {
background: red;
flex: 1;
}
<div class="container">
<div class="larger"> larger column </div>
<div class="smaller"> smaller column </div>
</div>
我在这里所做的是使用 flexbox
来利用 flex-wrap
进行包装,并使用 flex-grow
使它们增长到任何可用的 space。最后,使用 min-width
将较大的列设置为行的 3/4。如果您对 flexbox
及其工作原理感兴趣,请阅读更多 here.
您没有义务使用row/col系统:
div {
outline:1px solid red
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<div class="d-flex flex-wrap">
<div class="w-75 flex-grow-1"> larger column </div>
<div class="flex-fill"> smaller column </div>
</div>