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

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

2023-07-05 00:07:11 840人浏览 安东尼
摘要

本篇内容介绍了“CSS中flex-basis文本溢出问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. flex 家族flex

本篇内容介绍了“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/348458.html(转载时请注明来源链接)

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

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

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

下载Word文档
猜你喜欢
  • CSS中flex-basis文本溢出问题如何解决
    本篇内容介绍了“CSS中flex-basis文本溢出问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. flex 家族flex ...
    99+
    2023-07-05
  • 怎么在CSS中解决flex-basis 文本溢出问题
    怎么在CSS中解决flex-basis 文本溢出问题?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. flex 家族flex 里有很多的属性,我们经常用到的就是如下操作:.c...
    99+
    2023-06-08
  • 如何使用CSS解决文本溢出问题
    这篇文章主要介绍了如何使用CSS解决文本溢出问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用CSS解决文本溢出问题文章都会有所收获,下面我们一起来看看吧。   CS...
    99+
    2024-04-02
  • 如何解决angular4中JavaScript内存溢出问题
    这篇文章主要介绍如何解决angular4中JavaScript内存溢出问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近在写基于angular4的项目的时候,在build --p...
    99+
    2024-04-02
  • sql数据溢出问题如何解决
    SQL 数据溢出问题通常是由于数据类型不匹配或者数据长度超出字段定义而导致的。以下是一些常见的解决方法: 检查数据类型:确保将正...
    99+
    2024-04-09
    sql
  • 如何解决PHP开发中的内存溢出问题
    随着PHP的应用越来越广泛,PHP开发中的内存溢出问题也成为了开发者们共同面临的挑战。内存溢出是指程序在运行过程中申请的内存超过了内存空间的限制,导致程序出现异常或崩溃的情况。本文将介绍如何解决PHP开发中的内存溢出问题,并提供一些具体的代...
    99+
    2023-10-21
    解决方法 内存溢出
  • Spring Cloud Gateway内存溢出问题如何解决
    本篇内容主要讲解“Spring Cloud Gateway内存溢出问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Cloud Gateway内存溢出问题如何解决”吧!记 ...
    99+
    2023-06-20
  • c语言内存溢出问题如何解决
    C语言内存溢出问题可以通过以下几种方式来解决:1. 检查代码逻辑:检查代码中的循环、递归、动态内存分配等地方是否存在错误,比如没有正...
    99+
    2023-10-10
    c语言
  • 【Flutter】Flutter 实现 Text 自动换行 解决长文本溢出问题
    文章目录 一、前言二、Flutter Text 组件简介三、Flutter Text 自动换行的重要性四、Flutter Text 自动换行的实现五、Flutter Text 自动换行的高级应...
    99+
    2023-09-23
    flutter javascript 前端 原力计划
  • 如何理解Java中的内存溢出问题
    这篇文章主要介绍“如何理解Java中的内存溢出问题”,在日常操作中,相信很多人在如何理解Java中的内存溢出问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Java中的内存溢出问题”的疑惑有所帮助!...
    99+
    2023-06-15
  • Java中的内存溢出问题怎么解决
    本篇内容主要讲解“Java中的内存溢出问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的内存溢出问题怎么解决”吧!一、内存溢出原因内存溢出就是内存不够,引起内存溢出的原因有很...
    99+
    2023-06-15
  • C++ 递归函数的栈溢出问题如何解决?
    针对 c++++ 递归函数的栈溢出问题,解决方法有:缩小递归深度、减小栈帧大小、尾递归优化。如 fibonacci 数列函数通过尾递归优化可避免栈溢出。 C++ 递归函数的栈溢出问题如...
    99+
    2024-04-17
    c++ 递归函数
  • CSS DIV弹出层问题如何解决
    这篇文章主要讲解了“CSS DIV弹出层问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS DIV弹出层问题如何解决”吧!DIV弹出层问题解决方案一、关于如何让png背景在IE...
    99+
    2023-07-04
  • Java通过导出超大Excel文件解决内存溢出问题
    前言 将业务数据导出到Excel表中,导出任务数据量较大时,导出的项目就会内存溢出,本文通过Java操作Poi的SXSSFWorkbook类进行导出,解决内存溢出问题。 1.采用Po...
    99+
    2024-04-02
  • JavaScript中出现浮点溢出如何解决
    这篇文章将为大家详细讲解有关JavaScript中出现浮点溢出如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript浮点溢出的两种解决方...
    99+
    2024-04-02
  • java中出现内存溢出如何解决
    本篇文章为大家展示了java中出现内存溢出如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现了...
    99+
    2023-06-14
  • 如何解决Flex安全沙箱问题
    这篇文章主要为大家展示了“如何解决Flex安全沙箱问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Flex安全沙箱问题”这篇文章吧。Flex安全沙箱问题的解决关于Flex安全沙箱问题的...
    99+
    2023-06-17
  • Flex如何解决安全沙箱问题
    这篇文章将为大家详细讲解有关Flex如何解决安全沙箱问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。跨域文件读取方法一:在目标服务器上布署crossdomain.xml文件(我用的此方法很管用,放上就没...
    99+
    2023-06-17
  • 如何解决css文件乱码问题
    这篇文章主要介绍如何解决css文件乱码问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!css文件乱码的解决办法就是将css编码和html页面编码统一起来,方法如:1、用记事本打开源码,编码另存为“ANSI”;2、用...
    99+
    2023-06-14
  • Java中出现堆内存溢出如何解决
    今天就跟大家聊聊有关Java中出现堆内存溢出如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作