千家信息网

如何在CSS中解决flex-basis文本溢出问题

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,本篇内容主要讲解"如何在CSS中解决flex-basis文本溢出问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何在CSS中解决flex-basis文
千家信息网最后更新 2025年02月05日如何在CSS中解决flex-basis文本溢出问题

本篇内容主要讲解"如何在CSS中解决flex-basis文本溢出问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何在CSS中解决flex-basis文本溢出问题"吧!

1. flex 家族

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

.container {  display: flex;}.container > .left {  flex: 1;}.container > .right {  flex: 1;}

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

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

                  Document            
我比较短

我很长,不是开玩笑的,可以长到没边

我们想要的效果:

但实际的效果:

为什么会出现这个情况?

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/height 决定的;

  • 后来有个bug 1032922 ,flex-basis 的计算就变成了沿主轴的宽度决定了;

  • 后来又出现了一个 bug 1093316 ,又变回了由 width/height 决定且出现了一个新的概念 content 来自动计算宽/高;

所以当我们没有给 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 元素:

普通元素:

3. 解决方式

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

  • 首先自然是设置 width 属性即可了,只要 width 小于剩余空间即可,一般设置为 width: 0; 这样可百分之百确定小于剩余空间;

  • 不设置 width 但用 min-width 来限制也是一样的,既然 flex 项 的 min-width:auto ,那我们也设置一个小于剩余空间的值,一般也是 min-width: 0;

  • 设置 overflow:hidden 来限制溢出效果也是一致的。

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

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

那么第二种呢?

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

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

翻译成人话就是:

  • preferred minimum width:最小宽度

  • available width:可用宽度,也就是content box的宽度

  • preferred width:首选宽度,除了明确换行外的不换行时的宽度

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

那么来计算一下:

  • 最小宽度:0

  • 可用宽度:272px

  • 首选宽度:200 - 一些七七八八的值剩余部分(98px)

由计算可得:

max(0, 272) = 272

min(272, 98) = 98

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

到此,相信大家对"如何在CSS中解决flex-basis文本溢出问题"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

宽度 剩余 元素 空间 问题 实际 效果 文本 最小 原因 属性 情况 限制 主轴 也就是 内容 就是 方式 比例 算法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电脑验证服务器通信失败 数据库课设学生选课系统 魔兽2区服务器怎么样 广东项目软件开发哪家好 通信及网络安全 企业里的网关会用到数据库吗 长沙棋牌软件开发有限公司 文旅部文化技术人才数据库 网络技术联盟战 Python转行网络安全 中学生网络安全攻略图 国家网络安全宣传周多久一次 广州凌峰网络技术有限公司 电脑开发服务器 某互联网银行运用金融科技 成都西门子软件开发 千锋教育网络安全视频网盘下载 贵州玉钰网络技术服务是干嘛的 关于软件开发的确认 越秀区软件开发学费 重庆公车管理网络或服务器不可用 南宁中关村软件开发招聘 说到网络安全会想到什么 中科大网络安全研究生招生目录 关于网络安全与执法专业发言 合肥光学设计软件开发 网络安全测评的实现方法 电脑挂服务器有啥用 万方数据库包括网上的文章吗 互联网科技碰撞测试
0