背景
当设计期望在图文混排时,末尾的文字能够超出显示,这里的的末尾文字可能是在图片之前,也可能是图片之后的。
如果你刚好使用了flex布局,发现超出省略不可用,主要是出现省略号的效果不可用。
下面分不同的情况为大家分析,我们应该如何处理。
仍然父元素使用flex布局
左边元素内容是相对固定宽度的 ,判断其是否能显示完整,图片也能显示完整,那么左侧根据实际宽度,右边占据剩余宽度,然后右侧使用超出省略号即可。
<less>
.flex-demo1{
display:flex;
overflow:hidden;
height:50px;
line-height:50px;
.img{
width:100px;
}
.right-content{
flex:1;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
}
</less>
<div class='flex-demo1'>
<span>1 左边测试</span>
<img class='img' src='https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic3.zhimg.com%2Fv2-400c9f754471500acf943afdb5cc58c3_xl.jpg&refer=http%3A%2F%2Fpic3.zhimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1642419082&t=32b5ffd10ac8fb84b3868d8855a4c39f' alt='' title=''/>
<span class='right-content'>eerteerteterteterteterteterteterteterteteerteterteteerteterteteertetertetetertett</span>
</div>
不确定左侧和右侧那边会超出,均分,然后均使用超出省略,左侧部分也设置这个效果
缺点:浪费文本的自动占用其正确的空间
<less>
.flex-demo1{
display:flex;
overflow:hidden;
height:50px;
line-height:50px;
align-items:center;
.img{
width:100px;
}
.content{
flex:1;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
}
</less>
为什么一定要使用flex
就最终效果来说,如果超出省略是最难解决的效果,并且确实不确认文本是什么情况,这种时候,优先建议使用常规流布局,放弃flex布局,如果原本是希望flex实现多元素垂直居中,那么文本的垂直居中用行高,图片的垂直居中使用vertical-align:middle .
想提醒给大家的是,不要因为增加了flex弹性盒的布局方案,就忘记了常规的布局,以及常规布局中如何解决垂直居中的问题。
<less>
.flex-demo1{
overflow:hidden;
height:50px;
line-height:50px;
text-overflow:ellipsis;
white-space:nowrap;
.img{
width:100px;
vertical-align:middle;
}
.content{
line-height:50px;
}
}
</less>