怎么在CSS中解决flex-basis文本溢出问题-创新互联

怎么在CSS中解决flex-basis 文本溢出问题?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创新互联服务项目包括彭州网站建设、彭州网站制作、彭州网页制作以及彭州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,彭州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到彭州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1. flex 家族


flex 里有很多的属性,我们经常用到的就是如下操作:

.container {
  display: flex;
}

.container > .left {
  flex: 1;
}

.container > .right {
  flex: 1;
}

这样可以很方便的实现一个左右等分的布局。

我们来看一个引起问题的例子:



  
    
    
    
    Document
    
  
  
    
      我比较短
               我很长,不是开玩笑的,可以长到没边

      
    
  

我们想要的效果:

怎么在CSS中解决flex-basis 文本溢出问题

但实际的效果:

怎么在CSS中解决flex-basis 文本溢出问题

为什么会出现这个情况?

2. flex-basis 从中作梗

flex: auto 实际上是三个属性的集合:

flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;

flex-grow 表示放大比例,flex-shrink 表示收缩比例,flex-basis 表示分配多余空间前,项目占据的主轴空间。

我们左边 div 不放大,不缩小,固定 80px 宽度;右边 div 自动铺满剩余宽度也就是 200px - 80px = 120px,实际效果却远远超出了 120px,这是因为 flex-basis 为 auto 时的计算导致的。

我们来看看 flex-basis: auto 的历史:

所以当我们没有给flex-basis 元素设置width 时,flex-basis: auto 由内部的content 决定宽度,且受max/min-width 限制。

如此一来,在内部content 自由的情况下,那么flex-basis 元素的宽度就看max/min-width 了。

max-width 的默认值是none ,而min-width 的默认值一般是0 ,而此处却是auto ,这也是出现“异常”的原因了。

flex-basis 元素:

怎么在CSS中解决flex-basis 文本溢出问题

普通元素:

怎么在CSS中解决flex-basis 文本溢出问题

 3. 解决方式

知道原因后,那我们就可以对症下药了。

介绍了三种解决方式,再来聊聊前两种为什么可以解决的原因吧。

第一种很简单,width 设置为 0,但是flex-basis 会让元素填满剩余空间,所以就会铺满,由于 P 元素有不换行显示省略号,会正常显示。

那么第二种呢?

第二种的情况比较复杂,当我们设置了min-width 不为 auto 的值后,这里会用到 shrink-to-fit 算法,这个算法的计算机制如下:

min(max(preferred minimum width, available width), preferred width)

翻译成人话就是:

shrink-to-fit 的宽度 = min ( max (最小宽度, 可用宽度) , 选宽度)

那么来计算一下:

由计算可得:

max(0, 272) = 272

min(272, 98) = 98

所以最终宽度是剩余部分 98px,当我们手动设置min-width: 110px 时就可以看到超过溢出去了。

怎么在CSS中解决flex-basis 文本溢出问题

看完上述内容,你们掌握怎么在CSS中解决flex-basis 文本溢出问题的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


当前标题:怎么在CSS中解决flex-basis文本溢出问题-创新互联
标题网址:http://pwwzsj.com/article/dcsjhe.html

其他资讯