html - 使用 flexbox 的边框行为
问题描述
我正在尝试使用 flexbox 创建具有特定装订线大小的基于列的布局。
例如,我想包括将类添加col-2
到给定元素的选项,这将使该元素的大小与该行中其他元素的 2 个相同。col-3
对于 3 个元素的大小,col-4
对于 4 个等。
我通过更改添加类flex
的元素的属性来做到这col-n
一点。
SCSS 混合
// number of columns
$columns: 8;
// column proportions mixin
@mixin column-prop($n) {
flex: $columns * $n;
}
.col-2 {
@include column-prop(2);
}
.col-3 {
@include column-prop(3);
}
.col-4 {
@include column-prop(4);
}
...
HTML
<div class="grid">
<div>flex: 8</div>
<div>flex: 8</div>
<div class="col-2">flex: 16</div>
</div>
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
<div class="grid">
<div>flex: 8</div>
<div>flex: 8</div>
<div>flex: 8</div>
<div>flex: 8</div>
<div class="col-4">flex: 32</div>
</div>
如果我不使用任何填充,则此方法有效:
但是,如果我添加填充,则尽管我已对所有子元素
进行了设置,但填充的大小会附加到内容(就好像它是一个内容框一样) 。
我相信不适用于弹性物品。box-sizing: border-box;
box-sizing: border-box;
我怎样才能简单地将填充包含在每个元素的大小中,就好像它们是boxer-box
元素一样?
解决方案
编辑:CSS-grid 包括对排水沟的支持。让我来破解它...
HTML
<div class="grid-32">
<div>flex: 8</div>
<div>flex: 8</div>
<div class="col-2">flex: 16</div>
</div>
<div class="grid-32">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
<div class="grid-64">
<div>flex: 8</div>
<div>flex: 8</div>
<div>flex: 8</div>
<div>flex: 8</div>
<div class="col-4">flex: 32</div>
</div>
SASS
// number of columns
$columns: 8;
@mixin make-grid($n) {
.grid-#{$n} {
display: grid;
width: 100%;
grid-template-columns: repeat($n, 1fr);
grid-column-gap: 1em;
margin-bottom: 1em;
div {
grid-column-end: span $columns;
background: #ccc;
@for $i from 1 through 4 {
&.col-#{$i} {
grid-column-end: span $i*$columns;
background: hsl($i * 256/$columns, 50%, 50%);
}
}
}
}
}
@include make-grid(4*$columns);
@include make-grid(8*$columns);
我学到的是,尽管 css-grid 完美地处理了排水沟,但您确实需要提前知道总列数。如果您知道,这是获得所需内容的好方法。
推荐阅读
- c++ - 使用长度未知的向量的向量
- computer-vision - 哪种 CNN 架构适合植物叶片病害检测?
- php - 将文件转换为字符串,将这些字符串导入第 3 方下载器并下载文件
- javascript - 如何判断是否在我的页面上显示较少的 GPU 密集型图形?
- php - php生成一个下拉年份为-5年和+5年的选择框
- c# - C#,控制台应用程序的重定向进程的 WaitForInputIdle() 是否有同样的事情?
- java - 如何在 Single 方法中为不同的端点创建对象,而不是 java 中的 if 循环
- dart - 重定向的构造函数具有不兼容的参数
- c - 为什么读取用户输入时c中的scanf会跳过字符值?
- maven - 如何通过 pom.xml 将参数传递给 testng.xml 从 jenkins 运行单个测试用例