【问题标题】:How to make outer margin twice as the size of gutter in column grid?如何使外边距是柱状网格中装订线大小的两倍?
【发布时间】:2019-11-23 12:43:21
【问题描述】:

如何使外边距是柱状网格中装订线大小的两倍?通常我会在我的.row 元素中添加我在列上使用的相同边距。有没有办法以更合乎逻辑的方式做到这一点? (因为在一行中添加列边距对我来说似乎很奇怪。 这是我想要的结果:

这是我获得它的方式:

body {
  margin: 0;
}

.container {
  max-width: 1024px;
  margin: 0 auto
}

.row {
  display: flex;
  flex-wrap: wrap;
  margin: 0 8px
}

.col_1,
.col_2,
.col_3,
.col_4,
.col_5,
.col_6 {
  margin: 0 8px;
  border: 1px solid black;
}

.col_1 {
  width: calc(16.66667% - 16px)
}

.col_2 {
  width: calc(33.33333% - 16px)
}

.col_3 {
  width: calc(50% - 16px)
}

.col_4 {
  width: calc(66.66667% - 16px)
}

.col_5 {
  width: calc(83.33333% - 16px)
}

.col_6 {
  width: calc(100% - 16px)
}

*,
:after,
:before {
  box-sizing: border-box
}
<div class="row">
  <div class="col_3">3</div>
  <div class="col_3">3</div>

  <div class="col_6">6</div>

  <div class="col_3">3</div>
  <div class="col_3">3</div>

  <div class="col_6">6</div>
</div>

【问题讨论】:

  • 是否有可能获得您需要的图像?

标签: css margin css-grid grid-layout


【解决方案1】:

使用first-childlast-child 伪选择器,分别到达第一个孩子和最后一个孩子:

.row > div:first-child {
  margin-left: 50px;
}

.row > div:last-child {
  margin-right: 50px;
}

【讨论】:

  • 在这种情况下它不起作用,因为我可以在.row 中放置很多元素。例如,如果我的.row 中有 4×col-6,那么这些规则将无法正确应用。我的问题主要是关于这个。
  • @brachkoff first-child 仅适用于第一个孩子,即第一列。 last-child 只适用于最后一个孩子,也就是最后一列。你试过这个吗?
  • 正如我上面所说:如果列的总和大于最大列数,这将不起作用。
  • @brachkoff 请创建一个小提琴,以便我们能够重现您的确切问题。
  • @brachkoff 我想我现在明白你的问题了。您的“列”比行的最大宽度多,因此它们显示在多行中。是这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 2019-04-07
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多