设置white-space: nowrap文字为一行显示,导致父盒子被撑大的问题及解决方案

开发移动端项目的时候碰到文字太长的情况,想进行不换行处理,超出显示省略号

 这里为了使一行显示3个按钮,开发时采用了vant组件库中的van-grid

 所以要设置文字不换行,并且多余部分显示省略号处理方法如下:

    ::v-deep .van-button__text {
      width: 80% !important;
      overflow: hidden;
      white-space: nowrap;
      text-overflow: ellipsis;
    }

 设置后实现的效果虽然文字超出显示省略号了,但是由于部分文字内容过长,导致父盒子被撑大显示,影响整体的布局效果。

解决的办法:在父级设置 min-width: 0;

这样的原因是因为父组件里使用了display:flex布局,在 flex 弹性布局中, min-width 默认值为 auto,当元素设置了 white-space: nowrap; 该元素宽度就被撑开了,导致了flex溢出

原理
By default, flex items won’t shrink below their minimum content size (the length of the longest word or fixed-size element). To change this, set the min-width or min-height property. (See §4.5 Implied Minimum Size of Flex Items.)
默认情况下,flex选项不会缩小低于他的最小内容尺寸(长单子的长度或固定尺寸元素),改变这个问题可以去设置min-wdith或min-height属性,具体可以参考4.5的flex选项的潜在最小尺寸

所以在本项目中,再去父级元素设置min-width:0即可

::v-deep .van-grid-item {
    min-width: 0;
  }

最终实现效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值