html - 使元素填充剩余的宽度

标签 html css

我正在使用一个系统,该系统允许我在单个元素上附加其他样式,但按顺序呈现元素,而我无法在整个集合中引入对元素子集的分组。 (所以我不能将这些子集/组包装在任何元素中。)

本质上可以归结为:

<span>a</span><span>b</span><span>c</span><span class="rest"></span>
<!-- There's not actually a line break here -->
<span>a</span><span>b</span><span>c</span><span class="rest"></span>

最重要的是,我试图跨越该行其余部分的元素之前的元素加起来不是一个固定的(大多数黑客对此假设)所以我不能说 calc(100% - 100px)或类似的东西。

我可以用 white-space: pre 来打破这条线和 \n在内容的末尾(我可以修改)。我什至可以转储 <br />在那里 - 我可以在元素中有额外的 HTML - 但我需要组中的最后一个元素一直向右延伸所以 background/border可以应用于它等等。

我希望有多个这样的换行元素,每个元素的起始长度都与组的开头不同。 (这不是表格。)

我可以将样式应用于容器所有的元素,但同样,不能包装各个组。

鉴于我的限制,我不相信这可以完成,但它有可能实现 - 如何实现?

最佳答案

您可以将 float 属性与 white-spaceBFC 一起使用( block 格式化上下文) :

A block formatting context is a part of a visual CSS rendering of a Web page. It is the region in which the layout of block boxes occurs and in which floats interact with each other.

span {
  float:left;
  white-space:pre-wrap;/* remove this to get the purpose */
}
.rest {
  background:gray;/* see me */
  float:none;/* prepare BFC */
  display:block;
  overflow:hidden;
  min-height:1.2em;/* if empty, it needs some heights */
  margin-bottom:0.2em;/* or add it to height value */
}
<span>a</span><span>b</span><span>c</span><span class="rest"></span>
<!-- There's not actually a line break here -->
<span>a</span><span>b</span><span>c</span><span class="rest"></span>
<span> whatever </span><span> else </span><span> what </span><span class="rest"></span>

关于html - 使元素填充剩余的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834511/

相关文章:

html - 使一组特定的 float 元素响应调整大小

javascript - 我一直在尝试用 javascript 制作一个时钟,但有时它显示为未定义

jquery - HTML-CSS;为层次结构中的每个下一个嵌套 ul li 添加 5px 到 margin-left

html - 是否可以有一个按固定增量增加宽度的元素?

html - 如何让 anchor 标签在 DIV 中居中?

css - 基于 css 媒体查询的设备宽度

html - CSS 从溢出中排除元素

html - SVG 使用 <embed> : css not picking up styles

javascript - Sass 中的三连字符

HTML 和 CSS 编程