html - 使用生成的内容对齐 Flex 元素之间的内容

标签 html css flexbox

我有一些化妆品内容,我想在 flex 元素之间对齐,这些元素之间用空格对齐。

这些元素具有动态宽度。

以下演示中的结果就是我正在寻找的结果,除了,因为内容纯粹是装饰性的 - 我想为它们使用生成的内容,而不是实际元素。

ul {
  display: flex;
  justify-content: space-between;
  align-items: center;
  
  list-style: none;
  padding: 0;
}
li:nth-child(odd) {
  background-color: lime;
  padding: 10px 20px
}
li:nth-child(even) {
  margin: 0 auto;
}
<ul class="wpr">
  <li>this is item 1</li>
  <li>X</li>
  <li>item 2</li>
  <li>X</li>
  <li>item 3 is considerably wider</li>
  <li>X</li>
  <li>item 4</li>
</ul>

Codepen demo (调整大小查看效果)

我尝试通过使用绝对定位来做到这一点 - 但我不知道是否有一种机制可以通过这种方式使元素之间的内容居中:

ul {
  display: flex;
  justify-content: space-between;
  align-items: center;
  
  list-style: none;
  padding: 0;
}
li {
  background-color: lime;
  padding: 10px 20px;
  position: relative;
}
li:after {
  content: 'X';
  position: absolute;
  right: -50%; /* this obviously won't produce the correct centering */
}
<ul class="wpr">
  <li>this is item 1</li>
  <li>item 2</li>
  <li>item 3 is considerably wider</li>
  <li>item 4</li>
</ul>

CSS 是否可以使用生成的内容而不是实际元素来添加此内容?

最佳答案

这是一个有小缺点的想法,因为我不得不省略最后一个 li 中的元素:

ul {
  display: flex;
  justify-content: space-between;
  align-items: center;
  list-style: none;
  padding: 0;
}

li {
  display: flex;
  align-items:center;
  flex:1;
}

li span {
  background-color: lime;
  padding: 10px 20px;
  white-space:nowrap;
}

li:after {
  content: "X";
  flex: 1;
  text-align:center;
}
li:last-child {
 flex:initial;
}
li:last-child::after {
 content:none;
}
<ul class="wpr">
  <li><span>this is item 1</span></li>
  <li><span>item 2</span></li>
  <li><span>item 3 is considerably wider</span></li>
  <li><span>item 4</span></li>
</ul>

关于html - 使用生成的内容对齐 Flex 元素之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131771/

相关文章:

html - 底部带有元数据的 Css flex div 拉伸(stretch)到相同的高度

css - flexbox 下 FF 和 IE11 中的最大高度和最大宽度意外行为

html - 对齐我的输入字段

css - 将背景图像居中到具有最小宽度的 div,即使页面比 div 窄

jquery - Bootstrap 定位图形元素

javascript - 动态添加规则到 CSS 文件

javascript - 如何阻止页面滚动移动网站?

html - 具有 3 列、100% 高度和固定宽度侧列的 Flex 容器

javascript - 在跨度的 onclick 事件提交表单时,如何避免浏览器发出确认消息?

javascript - 通过单击另一个展开/折叠 div