假设有一个具有可变大小间隙的弹性容器:

gap: clamp(20rem, 50%, 40rem);

并且该容器具有包含文本A flex item that will wrap at some point的两个项.

如何才能强制将夹紧的间隙值减小到边界before的最小值,其中任一项中的文本开始换行为多行?我们的愿望是,当事情变得紧张时,文本换行是最后一件事.

约束条件:

  1. 文本内容不能提前预测(可能会在页面通过第三方JS呈现后动态更改).
  2. 容器宽度无法提前预测(在通过第三方JS呈现页面后,容器宽度可能会动态变化).
  3. 弹性项的数量不能提前预测(在通过第三方JS呈现页面之后可能会动态变化).
  4. 内容物不得水平溢出任何容器.
  5. 不能使用页面上加载的JS,因为它可能会导致布局改变,从而对网络命脉产生负面影响.

can件事:

  1. Flex是可选的!如果有一种不灵活的方法,请随时提出建议!

请看下面的例子.

(
  new ResizeObserver(entries => {
    const item_1 = document.querySelector('.item:first-child');
    const item_2 = document.querySelector('.item:last-child');
    const gap = item_2.getBoundingClientRect().left - item_1.getBoundingClientRect().right;
    document
      .querySelector('.read-out')
      .textContent = 'Flex gap: ' + gap;
  })
).observe(document.querySelector('body'));
h2, .read-out {
  text-align: center;
}

.flex-container {
  position: relative;
  display: flex;
  gap: clamp(20rem, 50%, 40rem);
  justify-content: center;
}

.item {
  display: inline-block;
  background: red;
  padding: 1rem;
}
<h2>Goal: Ensure that the 'gap' property reduces down to 320 pixels BEFORE text in either item wraps </h2>
<div class="flex-container">
  <div class="item">A flex item that will wrap at some point</div>
  <div class="item">A flex item that will wrap at some point</div>
</div>
<div class="read-out"></div>

Original design intention: Banner showing unsightly large gaps and buttons whose text has wrapped too early

推荐答案

有时真相令人失望,拒绝接受它只会导致冲突.

我确信这不是CSS可以完成的事情(时间戳为12.18.2023). 如果任何人可以证明,否则,请张贴一个答案,我将移动接受的地位.

Html相关问答推荐

卸载伪元素 destruct 了CSS

Blazor中有1像素高行的表格

Angular 15 p-对话框不使用组件 Select 器呈现HTML

为什么我的网页底部是蓝色背景而不是渐变色?

如何从卷轴中排除粘性元素?

天使17:令人惊叹的动画

平移变换下的SVG剪辑路径行为

文本css后面未显示背景 colored颜色

在css中是否可以在遮罩图像中结合线性渐变和径向渐变?

视频重新加载而不是在 Swift 中暂停 WKWebView

带标签 css 的 div 内的中心图标

如何垂直对齐列表中的图像和文本?

显示填充正方形的图形的简单页面的 HTML 代码

那边界从何而来?

获取 div 中每个元素的 href 并使用它

如何根据行中的其中一列将行居中?

涉及短代码时如何在页面上定位元素?

当我希望它只横向滚动时,可滚动菜单也会上下移动

基本上,我想要两列包含文本和图像,但第二列是倒置的

我可以将两个元素之间的所有空间都放在弹性框或网格中吗?