当前位置: 首页 > 面试题库 >

flex子项上的文本溢出省略号不起作用

单于山
2023-03-14
问题内容

我有的容器flex。我希望中间的孩子能占据整个空间,所以我定了它flex: 1。到目前为止,一切都很好。

下一个级别是中间的孩子有2个孩子,因此我也希望将其设置为flex(如果您迷路了,请跳到摘要),第一个孩子设置省略号样式。现在,省略号停止工作。

如果您单击该按钮,您会看到所有带有短文本的内容都很好;

有任何想法吗?

function toggle() {

  var el = document.querySelector('.el');

  el.textContent = el.textContent === 'short' ? 'long long long text' : 'short';

}


.wrapper {

  display: flex;

  width: 200px;

  align-content: stretch;

  padding: 5px;

  min-width: 0;

  border: 1px solid

}



.wrapper .child2 {

  flex-grow: 1;

}



.flex {

  display: flex;

  min-width: 0;

}



.el {

  white-space: nowrap;

  overflow: hidden;

  text-overflow: ellipsis;

}



.child1 {

  background: red;

}



.child2 {

  background: blue;

}



.child3 {

  background: green;

}



.wrapper>* {

  padding: 5px;

}


<div class="wrapper">

  <div class="child1">child1</div>

  <div class="child2">

    <div class="flex">

      <div class="el">long long long text</div>

      <div>a</div>

    </div>

  </div>

  <div class="child3">child3</div>

</div>



<button onclick="toggle()">Toggle ellipsis text</button>

问题答案:

添加overflow: hidden;.wrapper .child2

其实,MOSH Feu的建议在他的回答,min- width: 0也应该工作,确实,跨浏览器,IE虽然是越野车和需要overflow

之所以也child2需要它,是因为它也是一个伸缩项目,在这种情况下min- width,伸缩项目的默认值为auto,并且不允许其小于其内容,因此可以添加overflow: hidden(或除以外的任何值visible),或min-width: 0,将允许它。

function toggle() {

  var el = document.querySelector('.el');

  el.textContent = el.textContent === 'short' ? 'long long long text' : 'short';

}


.wrapper {

  display: flex;

  width: 200px;

  align-content: stretch;

  padding: 5px;

  min-width: 0;

  border: 1px solid

}



.wrapper .child2 {

  flex-grow: 1;

  overflow: hidden;

}



.flex {

  display: flex;

  min-width: 0;

}



.el {

  white-space: nowrap;

  overflow: hidden;

  text-overflow: ellipsis;

}



.child1 {

  background: red;

}



.child2 {

  background: lightblue;

}



.child3 {

  background: green;

}



.wrapper>* {

  padding: 5px;

}


<div class="wrapper">

  <div class="child1">child1</div>

  <div class="child2">

    <div class="flex">

      <div class="el">long long long text</div>

      <div>a</div>

    </div>

  </div>

  <div class="child3">child3</div>

</div>



<button onclick="toggle()">Toggle ellipsis text</button>


 类似资料:
  • 我的容器带有。我希望中间的孩子将占据整个空间,因此我将其设置为。到现在为止,一直都还不错。 下一个级别是中间的孩子有2个孩子,所以我也想设置它flex(如果你失去了我,就跳到片段)和第一个孩子我设置省略号样式。现在,省略号停止工作。 如果你会点击按钮,你会看到一切都好短的文字; 有什么想法吗?

  • 问题内容: 这是我尝试过的: 本质上,当窗口变小时,我希望跨度以省略号缩小。我做错什么了? 问题答案: 您需要具有CSS ,(或)和。

  • 我不知道为什么这个简单的CSS不起作用... null null 应该在第4次“测试”前后切断

  • 我知道这些帖子: 在flexbox中防止子元素溢出其父元素 flex子节点上的文本溢出省略号不工作 为什么flex项不缩小过去的内容大小? 没有答案从那里修复我在下面的代码片段中的问题。这是html树: 父柔性柱 子柔性行 标签flex(因此我可以垂直对齐文本) 我能让它工作的唯一方法是将标签设为,但我真的希望保留flex。 我已经做了: 关于儿童: 设置 设置 设置溢出:隐藏 设置

  • 问题内容: 我有一条路径列表(由于缺少更好的词,也许面包屑痕迹可以更好地描述它们)。有些值太长而无法在其父项中显示,因此我正在使用。问题在于重要信息在右侧,因此我希望省略号出现在左侧。像这样的ASCII艺术: 请注意,第一行足够短,因此仍保持左对齐,而其他两行又太长,因此省略号出现在左侧。 我更喜欢仅CSS的解决方案,但是如果无法避免,JS很好。如果该解决方案仅适用于Firefox和Chrome,

  • 我正在尝试用flex创建一个布局(将是一个音乐播放器)。 我有3个按钮(上一个、播放和下一个,用红色方块表示),我总是希望它们在同一条线上。 然后,我想在按钮右侧显示一些歌曲信息(当前时间、歌曲标题和总时间)。 我几乎总是希望总时间在最右边,歌曲标题填满剩余的宽度(使用),但随着窗口变小,用省略号截断。 有人知道如何调整它以使其正常工作吗? https://jsfiddle.net/13ohs7j