css 具有动态内容的Flexbox应保持初始大小[重复]

bq9c1y66  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(115)

此问题在此处已有答案

How to make Flexbox items the same size(10个答案)
昨天关门了。
我有下面的flex布局,其中有几个框,包括一个短标签和一个长值。这些值动态变化,但它们在每个状态下消耗的宽度或多或少是相似的。
当内容改变时,框的宽度也会改变一点,这会导致框的跳跃。我希望框保持初始宽度,而不给出固定宽度,除非值变得太大,以至于框中不再适合它(但这是一种特殊情况,很少发生)。

.outer
{
    flex-grow: 1;
    border: 1px solid red;
    padding: 10px;
    margin: 10px;
            
}
    
.inner
{
    border: 1px solid green;
}
<div style="display: flex; flex-wrap: wrap; border: 1px solid black;">
        <div class="outer">
            <div class="inner">
                <p>label 1</p>
                <label>7684433487</label>
            </div>
        </div>
        <div class="outer">
            <div class="inner">
                <p>label 2</p>
                <label>7632423887</label>
            </div>
        </div>
        <div class="outer">
            <div class="inner">
                <p>label 3</p>
                <label id="x">7682342487</label>
            </div>
        </div>
        <div class="outer">
            <div class="inner">
                <p>label 4</p>
                <label>76882353257</label>
            </div>
        </div>
    </div>
  <button onclick="document.getElementById ('x').innerHTML = '442424244';">change content</button>
xj3cbfub

xj3cbfub1#

标准的方法是使用flex: 1,它偷偷地将flex-basis设置为0;

.outer {
    flex: 1;  
    border: 1px solid red;
    padding: 10px;
    margin: 10px;          
}
    
.inner {
    border: 1px solid green;
}
<div style="display: flex; flex-wrap: wrap; border: 1px solid black;">
        <div class="outer">
            <div class="inner">
                <p>label 1</p>
                <label>7684433487</label>
            </div>
        </div>
        <div class="outer">
            <div class="inner">
                <p>label 2</p>
                <label>7632423887</label>
            </div>
        </div>
        <div class="outer">
            <div class="inner">
                <p>label 3</p>
                <label id="x">7682342487</label>
            </div>
        </div>
        <div class="outer">
            <div class="inner">
                <p>label 4</p>
                <label>76882353257</label>
            </div>
        </div>
    </div>
  <button onclick="document.getElementById ('x').innerHTML = '442424244';">change content</button>

相关问题