Flex布局中,文字超出隐藏不生效?

新手上路,请多包涵

当我给一个div容器添加文字超出隐藏时(使用white-space: nowrap;和超出隐藏),盒子的宽度仍被撑大,即使我给该容器设置了宽度(25%)后,超出隐藏效果生效,但盒子依然是撑大状态。

 title=

该盒子的父元素是一个设置了flex:16;的div,把其width设置为0后效果正常,但不明白其相关原理。

 title=

想问一下问什么会出现这种问题,感谢解答

相关Demo如下:
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      border: 1px solid #ccc;
    }
    .text-ellipsis{
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
  </style>
  
</head>

<body>

  <div>

    <div style="display: flex;">
      <div style="flex:4;">left</div>
      <div style="flex:16;">right</div>
    </div>

    <div style="display: flex;">
      <div style="flex:4;">left</div>
      <div style="flex:16;">
        <div class="text-ellipsis">
          Cg-4WlVQcm2If6MdAAT82WzB7C8AADYFAHANTUABPzx218Cg-4WlVQcm2If6MdAAT82WzB7C8AADYFAHANTUABPzx218Cg-4WlVQcm2If6MdAAT82WzB7C8AADYFAHANTUABPzx218.jpg
        </div>
      </div>
    </div>
    
  </div>
</body>

</html>

阅读 3.1k
2 个回答
flex-basis 属性下的最小尺寸是由内容决定的,而 width 属性下的最小尺寸是由 width 属性的计算值决定的。

简写的 flex: n 其实就是 flex: n n 0%

因为设置了 flex: n 属性的元素的最小尺寸是最小内容的宽度(文字内容在所有换行点换行后的尺寸),而设置了标题不换行导致最小尺寸比较大,最终尺寸大于 flex:n 给到的 flex-basis:0%

具体可以看我的这篇笔记,当时研究过这个问题 Flex 容器宽度被内容撑开的问题
还有另外一篇的 简写的 flex:1 具体简写了些什么?

新手上路,请多包涵
<div>

    <div style="display: flex;">
      <div style="flex:4;">left</div>
      <div style="flex:16;">right</div>
    </div>

    <div style="display: flex;">
      <div style="flex:4;">left</div>
      <div style="flex:16;" class="text-ellipsis">
        <div >
          Cg-4WlVQcm2If6MdAAT82WzB7C8AADYFAHANTUABPzx218Cg-4WlVQcm2If6MdAAT82WzB7C8AADYFAHANTUABPzx218Cg-4WlVQcm2If6MdAAT82WzB7C8AADYFAHANTUABPzx218.jpg
        </div>
      </div>
    </div>

把文字溢出的样式放外面盒子就行了

推荐问题
宣传栏