当前位置: 首页 > news >正文

理解CSS3 的 max/min-content及fit-content等width值

本文首发在我的个人博客:
理解CSS3 的 max/min-content及fit-content等width值https://www.brandhuang.com/article/1744253362074

width/height 的属性值 fit-content

这是一个 CSS3 属性,用来设置元素的宽度和高度,值为 fit-content,表示元素的宽度和高度会根据内容自动适应。

先看兼容性(除了IE,主流浏览器本都支持了):https://caniuse.com

发现这个属性值还是在去年的项目中,在此之前从来没用过这个,甚至都不知道有这个 😰 。

有如下结构的 html 代码

<div class="container">
    <div class="left_content">31231</div>
    <div class="right_content">31231</div>
</div>

container 占满整个区域(即 container 宽高基本固定),当内部内容宽高超过 container 的宽高时可以滚动, 在 container 容器中, left_content 和 right_content 高度都是根据后端接口返回数据渲染出来,高度不确定,需要根据内容自适应高度。

初始 css 如下

 .container {
    display: flex;
    width: 300px;
    height: 300px;
    overflow: auto;
    background-color: aqua;
}
.left_content {
    flex: 1;
    background-color: rosybrown;
}
.right_content {
    flex: 1;
    background-color: lightgreen;
}

当 left_content 和 right_content 高度都比 container 低时,显示很正常

如图

图片描述

当 left_content 和 right_content 高度比 container 高时,container 出现滚动条,但 left_content 或者 right_content 的高度不会改变,始终和 container 保持一致,但left_content 和 right_content 的内容会溢出。显示异常

如图

图片描述

此时将 left_content 和 right_content 的 css 修改一下

.left_content {
   ...
   height: fit-content
}
.right_content {
    height: fit-content
}

效果如图:

图片描述

盒子高度始终和内容高度保持一致

fit-content 在其他场景下的应用,我暂时还没遇到。毕竟之前都没用过...

除 fit-content 外,还有其他2个属性值也有点意思

1、min-content

  1. 在文本不换行的情况下,将容器压缩到最小宽度;
  2. 如果内容是文本,会以单词为单位换行,中文会以单个字为单位换行,

2、max-content

  1. 在文本不换行的情况下,将容器压缩到最大宽度,即在一行展示内容;

初始 html 代码和 css 代码如下:

 <div class="parent">
    <div class="box" style="background-color: gray;overflow: hidden;">
       <img src="./R.jpeg" width="100" alt="">
        <div>3123, 131, 231,31231,31231,312313,23131,231312,3131,313,123,1312,313,1231</div>
    </div>
</div>
.parent {
    width: 300px;
    height: 300px;
    background-color: blueviolet;
}

当 box 容器不设置width时,他默认会撑满整个父容器

如图:

图片描述

给 box 设置 deplay为inline-block,此时 box 的宽度会收缩到能包裹子元素的最小宽度

图片描述

看图理解 min-content

只给 box 容器设置 width 为 min-content

效果如下图

图片描述

因为此时图片的宽度为可被压缩的最小宽度,所以,box 会收缩到刚好能包裹图片的宽度。

如果box内的元素的文本最小长度超过图片宽度,box 的宽度会收缩到刚好能包裹文本的最小宽度。效果如下图

图片描述

看图理解 max-content

只给 box 容器设置 width 为 min-content
效果如图, 当内容过多时会溢出

图片描述

fit-content 结合了 min-content 和 max-content

即,如果 box 设置了 width:fit-content, 默认限制为 100%:

  • 当 box 内的元素设置了 min-content 时,box 的宽度会按 min-content 效果展现
  • 当 box 内的元素设置了 max-content 时,box 的宽度会按 max-content 效果展现
  • 当 box 内的既有元素设置了 max-content 又有元素设置了 min-content,box 的宽度会按 max-content 和 min-content 以及 其他未设置 width 为这三个属性的最大宽度效果展现

如图:

图片描述

另外,如果 box 设置了 width:fit-content, 只需给 box 设置 margin: 0 auto 即可实现水平居中

好了,就这么多,你理解了吗 😏 ?自己动手试试

感谢你的阅读。 😀

相关文章:

  • 这是一个文章标题
  • 《网络管理》实践环节04:SNMP监控数据采集流程及SNMP协议详细分析
  • 边缘分布的定义与公式详解
  • 探索 OSPF 协议:构建高效网络的基石
  • [蓝桥杯 2024 省 B] 拔河
  • 心有猛虎,细嗅蔷薇
  • Netty之内存池的原理和实战
  • WebStorm中使用live-server插件
  • Ubuntu 安装 MySQL
  • 国产三维皇冠CAD在「工业自动控制系统装置制造」建模教程:千分表指示器
  • vue项目打包里面pubilc里的 tinymce里的js文件问题
  • Linux 驱动中的资源获取与自动管理机制:深入理解与实战
  • iphone各个机型尺寸
  • Java权限修饰符深度解析
  • 【机器学习算法】基于python商品销量数据分析大屏可视化预测系统(完整系统源码+数据库+开发笔记+详细启动教程)✅
  • springboot starter机制,自动装配
  • LangChain-检索系统 (Retrieval)
  • Unity Standard Shader 解析(三)之ForwardBase(简化版)
  • WSL2安装多个版本的Ubuntu
  • 塑造现代互联网的力量:Berkeley在网络领域的影响与贡献
  • 1688一件代发跨境电商/seo网站优化案例
  • 大形电商网站开发费用/知乎关键词优化软件
  • 电子网站建设公司/中国最权威的网站排名
  • 东莞市建设网站/平台推广是做什么的
  • 网站防站/对百度竞价排名的看法
  • 上辽宁建设工程信息网站/百度seo关键词优化推荐