【css问题】flex布局中,子标签宽度超出父标签宽度,导致布局出现问题

场景:文章标题过长时,只显示一行,且多余的部分用省略号显示。

最终效果图:

实现时,flex布局,出现问题:

发现text-overflow: ellipsis不生效,省略符根本没有出现。
而且因为设置了 nowrap ,发现文字将f-content 撑开,导致内容超出了屏幕。

原始代码:

<div class="flex">
  <div class="f-avatar">
    <xc-name-avatar nameavatar="'图片'"></xc-name-avatar>
  </div>
  <div class="f-content">
    <div class="row line">文章标题文章标题文章标题文章标题文章标题文章标题文章标题</div>
    <div class="row margin-t-sm">
      <span class="article-tag">文章标签</span>
      <span class="pull-right">2023.08.04</span>
    </div>
  </div>
</div>
<style>
  .flex{display: flex}
  .f-avatar{padding-right: 10px}
  .f-content{flex: 1}
  .line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
</style>

解决办法:

尝试取消.flex容器的display: flex,省略号出现。又想到省略号,需要固定父级宽度。

方法一:尝试对父元素.f-content设置width: 100%无效,但是设置width: 0可行,即

.f-content{flex: 1;width: 0}

方法二、如果不设置宽度,.f-content可以被子节点无限撑开;因此.line总有足够的宽度在一行内显示所有文本,也就不能触发截断省略的效果。

.f-content{flex: 1;overflow: hidden}

上面的二种方法都可以达到我们需要的效果。


补充说明:当页面上有通过display:none→ display:block的时候,如果.f-content设overflow:hidden。该小弹窗也会被隐藏,所以.f-content最好设为width: 0

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smart_dream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值