iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在CSS中解决flex-basis 文本溢出问题
  • 632
分享到

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

2023-06-08 05:06:22 632人浏览 薄情痞子
摘要

怎么在CSS中解决flex-basis 文本溢出问题?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. flex 家族flex 里有很多的属性,我们经常用到的就是如下操作:.c

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

1. flex 家族

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

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

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

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

<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <meta Http-equiv="X-UA-Compatible" content="ie=edge" />    <title>Document</title>    <style>      div {        padding: 5px;        border: 1px solid #ccc;      }      .no-effect {        align-items: center;        margin: 100px;        width: 200px;        color: #999;      }      .no-effect > div:first-of-type {        margin-right: 10px;      }      p {        color: red;      }      .no-wrap {        overflow: hidden;        white-space: nowrap;        text-overflow: ellipsis;      }    </style>  </head>  <body>    <div style="display: flex;" class="no-effect">      <div style="flex: 0 0 80px">我比较短</div>      <div style="flex: auto">        <p class="no-wrap">我很长,不是开玩笑的,可以长到没边</p>      </div>    </div>  </body></html>

我们想要的效果:

怎么在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/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 元素:

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

普通元素:

怎么在CSS中解决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 文本溢出问题 

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

--结束END--

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

本文链接: https://www.lsjlt.com/news/252014.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在CSS中解决flex-basis 文本溢出问题
    怎么在CSS中解决flex-basis 文本溢出问题?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. flex 家族flex 里有很多的属性,我们经常用到的就是如下操作:.c...
    99+
    2023-06-08
  • CSS中flex-basis文本溢出问题如何解决
    本篇内容介绍了“CSS中flex-basis文本溢出问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. flex 家族flex ...
    99+
    2023-07-05
  • 如何使用CSS解决文本溢出问题
    这篇文章主要介绍了如何使用CSS解决文本溢出问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用CSS解决文本溢出问题文章都会有所收获,下面我们一起来看看吧。   CS...
    99+
    2024-04-02
  • FastJson long溢出问题怎么解决
    这篇文章主要介绍“FastJson long溢出问题怎么解决”,在日常操作中,相信很多人在FastJson long溢出问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”FastJ...
    99+
    2023-06-26
  • jvm栈溢出问题怎么解决
    JVM栈溢出问题通常是由于递归调用过深或者线程过多导致的。以下是解决JVM栈溢出问题的几种方法: 增加栈的大小:可以通过设置JV...
    99+
    2024-02-29
    jvm
  • Java中的内存溢出问题怎么解决
    本篇内容主要讲解“Java中的内存溢出问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的内存溢出问题怎么解决”吧!一、内存溢出原因内存溢出就是内存不够,引起内存溢出的原因有很...
    99+
    2023-06-15
  • log4net堆栈溢出问题怎么解决
    Log4net的堆栈溢出问题可能是由于日志消息的递归输出或无限循环造成的。以下是一些可能的解决方案:1. 确保日志消息中没有无限循环...
    99+
    2023-09-16
    log4net
  • win10缓冲区溢出问题怎么解决
    Win10缓冲区溢出问题可以通过以下几种方法来解决:1. 更新操作系统:缓冲区溢出问题通常是由于操作系统中的漏洞引起的。因此,更新操...
    99+
    2023-06-10
    缓冲区溢出
  • java堆内存溢出问题怎么解决
    Java堆内存溢出问题的解决方法有以下几种: 增加堆内存大小:可以通过修改JVM的启动参数,增加堆内存的大小,例如增加-Xmx参...
    99+
    2023-10-27
    java
  • 关于overflow:hidden溢出隐藏问题怎么解决
    要解决溢出隐藏问题,可以尝试以下方法:1. 使用`overflow:auto`替代`overflow:hidden`:`overfl...
    99+
    2023-09-13
    问题
  • 【Flutter】Flutter 实现 Text 自动换行 解决长文本溢出问题
    文章目录 一、前言二、Flutter Text 组件简介三、Flutter Text 自动换行的重要性四、Flutter Text 自动换行的实现五、Flutter Text 自动换行的高级应...
    99+
    2023-09-23
    flutter javascript 前端 原力计划
  • CSS中DIV弹出层问题怎么解决
    这篇文章主要讲解了“CSS中DIV弹出层问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS中DIV弹出层问题怎么解决”吧!DIV弹出层问题解决...
    99+
    2024-04-02
  • 如何解决angular4中JavaScript内存溢出问题
    这篇文章主要介绍如何解决angular4中JavaScript内存溢出问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近在写基于angular4的项目的时候,在build --p...
    99+
    2024-04-02
  • Flex中ListItemRenderer渲染问题怎么解决
    在Flex中,ListItemRenderer用于在List或DataGrid等组件中显示数据。如果遇到ListItemRender...
    99+
    2023-09-09
    Flex
  • 怎么解决BASIS中ERP系统无法登录问题
    这篇文章主要介绍“怎么解决BASIS中ERP系统无法登录问题”,在日常操作中,相信很多人在怎么解决BASIS中ERP系统无法登录问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • mybatis一级缓存内存溢出问题怎么解决
    MyBatis一级缓存是默认开启的,它是基于线程的,即同一个线程内的多个查询会共享一级缓存。当同一个线程多次执行相同的查询时,查询结...
    99+
    2023-10-23
    mybatis
  • css怎么实现文本溢出显示省略号
    这篇文章主要介绍“css怎么实现文本溢出显示省略号”,在日常操作中,相信很多人在css怎么实现文本溢出显示省略号问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css怎么实现文...
    99+
    2024-04-02
  • 怎样快速解决图片溢出div的问题
    本篇文章给大家分享的是有关怎样快速解决图片溢出div的问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前两天编写了一个前端页面,在本机上显示...
    99+
    2024-04-02
  • Java通过导出超大Excel文件解决内存溢出问题
    前言 将业务数据导出到Excel表中,导出任务数据量较大时,导出的项目就会内存溢出,本文通过Java操作Poi的SXSSFWorkbook类进行导出,解决内存溢出问题。 1.采用Po...
    99+
    2024-04-02
  • css-loader打包出问题怎么解决
    这篇文章主要讲解了“css-loader打包出问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css-loader打包出问题怎么解决”吧! 各种...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作