html - 如何在不影响flex items元素对齐的情况下减小最后一行的背景色宽度?

标签 html css flexbox frontend web-frontend

请看下图

enter image description here

我一直很尴尬地打算做的是减少最后一项背景颜色的跨度,使其与另一边相等。在摆弄之后,我无法做到这一点而不会弄乱列与行的其余部分的对齐方式。请注意,我正在尝试在不使用像素 (px) 作为要求的情况下执行此操作。

这是我的代码

HTML

<div class="container">
  <div class="row title">
    <div>Column 1</div>
    <div>Column 2</div>
    <div>Column 3</div>
    <div>Column 4</div>
  </div>

  <div class="row item-1">
    <div>Sample Title 1</div>
    <div>1</div>
    <div>10</div>
    <div>100</div>
  </div>

  <div class="row item-1">
    <div>Column 2</div>
    <div>2</div>
    <div>20</div>
    <div>200</div>
  </div>

  <div class="row item-1">
    <div>Column 3</div>
    <div>3</div>
    <div>30</div>
    <div>300</div>
  </div>
</div>

CSS

body {
  background-color: purple;
  color: #fff;
}

.container {
  margin-left: 10vw;
  margin-top: 5vw;
}

.row {
  display: flex;
  margin-top: 4vh;
  width: 45vw;
}

.row > div {
  width: 12vw;
}

.row > div:not(:first-child) {
  text-align: center;
}

.container > div:last-child {
  background-color: grey;
  border-radius: 100px;
  padding-left: 2vw;
  margin-left: -2vw;
}

代码笔链接 https://codepen.io/anon/pen/KxmJeM

我尝试更改最后一行中 flex 元素的宽度,但我找不到正确的组合并摆弄右侧的填充,但这也行不通。

谢谢你的帮助

最佳答案

您可以尝试以下方法。这有点 hack,但这就是您需要解决的问题:

body {
  background-color: purple;
  color: #fff;
}

.container {
  margin-left: 10vw;
  margin-top: 5vw;
}

.row {
  display: flex;
  margin-top: 4vh;
  width: 42vw;
}

.row > div {
  width: 12vw;
}

.row > div:not(:first-child) {
  text-align: center;
}

.container > div:last-child {
  position: relative;
  border-radius: 100px;
  padding-left: 2vw;
  margin-left: -2vw;
}
.container > div:last-child:before {
  content: "";
  display: block;
  position: absolute;
  left: 1vw;
  right: 3vw;
  background: grey;
  height: 100%;
  border-radius: 100px;
  z-index: -1;
}
<div class="container">
  <div class="row title">
    <div>Column 1</div>
    <div>Column 2</div>
    <div>Column 3</div>
    <div>Column 4</div>
  </div>
  
  <div class="row item-1">
    <div>Sample Title 1</div>
    <div>1</div>
    <div>10</div>
    <div>100</div>
  </div>
  
  <div class="row item-1">
    <div>Column 2</div>
    <div>2</div>
    <div>20</div>
    <div>200</div>
  </div>
  
  <div class="row item-1">
    <div>Column 3</div>
    <div>3</div>
    <div>30</div>
    <div>300</div>
  </div>
</div>

关于html - 如何在不影响flex items元素对齐的情况下减小最后一行的背景色宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52160400/

相关文章:

php - How to use 'time'(来自数据库的数据,数据类型: timestamp ) for plotting graph in Chart JS

Chrome 中的 HTML5 必填字段

javascript - 卡在某些 Javascript 上 - 在鼠标悬停在文本上时显示图像

CSS:带有 position:absolute 的 UL 显示带有 position:fixed 和 overflow:hidden 的外部容器

html - 如何在一行列中对齐按钮

html - 匹配整个文档中某一类型的第一个/第n个元素

html - 根据用户评分自动更改面板颜色

javascript - 堆叠的 div 等于一个高度

css - Flex 自动边距在 IE10/11 中不起作用

css - flex 速记如何处理以百分比表示的单个值?