gpt4 book ai didi

html - 垂直对齐的 inline-flexbox 的宽度随着 child 的数量而增长

转载 作者:行者123 更新时间:2023-11-28 14:29:52 25 4
gpt4 key购买 nike

<分区>

我想使用某种“ block ”类比来可视化 HTML 中类似源代码的结构。但无论出于何种原因,我的 flexbox 遇到了一些奇怪的尺寸问题。以下代码片段显示了一个“通常”会像这样打印的程序的可视化:

while(true) {
goForward();
goForward();
goForward();
goForward();
goForward();
}

while 的外框显示为 inline-flex 以占用尽可能少的水平空间。但是正如您在屏幕截图中看到的(或者您可以自己运行代码片段),浪费了很多空间:

Wasted horizontal space

我期望的是这样的:

No wasted horizontal space

但是,如果您单击 goForward() block (用 display: none 标记它们),父级 block 的宽度会突然缩小。据我所知,它缩小了与现在隐藏 block 的宽度一样多。

goForward() block 之间的“换行符”是使用 height: 0width: 100% 元素实现的。我还尝试在没有空元素和 break-after: always 的情况下进行中断,但这会导致外部 flexbox 的某些行为。我在最新版本的 Firefox 和 Chrome 中观察到了这种行为。

为什么最外层的 inline-flex 元素的宽度(看似)随着它垂直显示的元素数而变化?我怎样才能“正确地”实现这种我基本上想要具有任意“换行符”的 block 布局的布局?

// Hide blocks on click to demonstrate width changes
Array.from(document.querySelectorAll(".forward")).forEach(
elem => elem.addEventListener('click', () => elem.classList.add("hide"))
);
.code-block {
border: 2px solid blue;
border-radius: 5px;
padding: 5px;
display: inline-flex;
flex-flow: row wrap;
align-items: baseline;
}

.line-break {
width: 100%;
}

.forward {
cursor: pointer;
}

.hide {
display: none;
}
<div class="code-block">
<div class="terminal">while(</div>
<div class="code-block">true</div>
<div class="terminal">)</div>
<div class="line-break"></div>
<div class="code-block forward">
<div class="terminal">goForward()</div>
</div>
<div class="line-break"></div>
<div class="code-block forward">
<div class="terminal">goForward()</div>
</div>
<div class="line-break"></div>
<div class="code-block forward">
<div class="terminal">goForward()</div>
</div>
<div class="line-break"></div>
<div class="code-block forward">
<div class="terminal">goForward()</div>
</div>
<div class="line-break"></div>
<div class="code-block forward">
<div class="terminal">goForward()</div>
</div>
</div>

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com