use*_*510 4 css grid css3 flexbox css-grid
我无法使文本溢出省略号在CSS网格中工作。文本被截断,但省略号不显示。这是我的CSS:
.grid {
display: grid;
margin: auto;
width: 90%;
grid-template-columns: 2fr 15fr
}
.gridItem {
border: 1px solid red;
display: flex;
height: calc(50px + 2vw);
align-items: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}Run Code Online (Sandbox Code Playgroud)
<div class="grid">
<div class="gridItem">Why no ellipsis on this div?</div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
<div class="gridItem"></div>
</div>Run Code Online (Sandbox Code Playgroud)
为了使省略号起作用,您需要定位文本而不是容器。
在代码中,您要在flex容器(网格项)上设置省略号:
.gridItem {
display: flex;
align-items: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
height: calc(50px + 2vw);
border:1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
容器的子项是文本。除了您不能将任何CSS直接应用于文本之外,因为它是一个匿名的flex项目(即,其周围没有定义标签的flex项目)。因此,您需要将文本包装到一个元素中,然后应用省略号代码。
由此:
<div class="gridItem">Why no ellipsis on this div?</div>
Run Code Online (Sandbox Code Playgroud)
对此:
<div class="gridItem"><span>Why no ellipsis on this div?</span></div>
Run Code Online (Sandbox Code Playgroud)
然后,您必须应对弹性商品的最小尺寸调整算法。默认情况下设置的此规则指出,弹性项目不能小于其沿主轴的内容。解决此问题的方法是将flex项目设置为min-width: 0,它将覆盖默认值min-width: auto。
.gridItem {
display: flex;
align-items: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
height: calc(50px + 2vw);
border:1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
<div class="gridItem">Why no ellipsis on this div?</div>
Run Code Online (Sandbox Code Playgroud)
这些帖子提供了更详细的说明: