【问题标题】:How to change the style of only the last Column in a Bootstrap grid如何仅更改 Bootstrap 网格中最后一列的样式
【发布时间】:2021-05-26 00:06:30
【问题描述】:

所以我有一个 React 组件,它可以将数组映射到 react-bootstrap 列,就像这样

<Container fluid>
  <Row xs={1} md={props.title === 'big rules' ? 1 : 2} lg={props.title === 'big rules' ? 2 : 4}>
    {props.rules.map((rule, index) => (
      <Col key={index}>
        {rule}
      </Col>
    ))}
  </Row>
</Container>

我有一个 .sass 文件,它在右侧为每一列提供了一个边框,

.col {
 padding: 1rem;
 border-style: groove;
 border-top: none;
 border-bottom: none;
 border-left: none;
}

如果列数根据屏幕大小而变化,我该如何设置我的 css 以便忽略每行中的最后一列?

编辑:添加一些图像以希望更好地解释问题

此行按预期工作,因为只有 3 个项目映射到列中。

这一行添加了 12 个条目,直到最后一个条目的最后一列有边框。

【问题讨论】:

  • 所以现在我可以看到这 12 个元素在同一行中,这就是问题存在的原因。
  • @SebMaz93 是的,你知道解决这个问题的方法吗?
  • 我尝试了很多类似getboundingclientrect 和其他东西的方法,但是对于您所询问的元素是否是动态的,没有简单的解决方案,您必须更改您的结构。
  • @SebMaz93 那么你建议如何布局以保持我的功能相似

标签: css reactjs react-bootstrap


【解决方案1】:

这里是工作示例:

export default function App() {
  return (
    <div className="containere">
      <div className="row">
        {[1, 1, 1, 1, 1, 1].map((rule, index) => (
          <div className="col" key={index}>
            {rule}
          </div>
        ))}
      </div>
      <hr />
      <div className="row">
        {[1, 1, 1, 1, 1, 1].map((rule, index) => (
          <div className="col" key={index}>
            {rule}
          </div>
        ))}
      </div>
      <hr />
      <div className="row">
        {[1, 1, 1, 1, 1, 1].map((rule, index) => (
          <div className="col" key={index}>
            {rule}
          </div>
        ))}
      </div>
    </div>
  );
}
 

scss:

.container {
 
}

.row {
  display: flex;
}

.col {
  padding: 1rem;
  border-style: groove;
  border-top: none;
  border-bottom: none;
  border-left: none;
  border-right: 1px solid black;
  &:last-child {
    border-right: none;
  }
}

刚刚在该 .col 类上添加了 &:last-child {} 选择器

【讨论】:

  • 我之前尝试过这个,但它只删除了网格中最后一项的边框,所以如果网格只有 1 行,但对于更多行,最后一列仍然有边框
  • @DanielCollins 它应该可以工作,因为我们正在选择行内的每个最后一个孩子,而不仅仅是一行,如果您可以共享可以提供更多帮助的更大代码,似乎问题出在其他地方
  • @DanielCollins 我已经更新了示例中的代码,检查它的工作与我们有多少行无关。也许它不起作用,因为从 Bootstrap 端使用了更强大的选择器,尝试使用 !important 或更具体的选择器
  • 在您的示例中,代码只是重复,我的问题是我提供的要映射的数组有时大于该行的指定列数,因此看起来像一个新行在 UI 中创建,但实际上代码中没有第二行组件,如果这有意义的话。我在最初的问题中添加了图片,希望能提供一些清晰
猜你喜欢
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多