flex:1

1.flex-grow:1,

现在有一个上下盒子,上面是固定值,下面是随页面高度变换的,

上面是120px高,给下面的外盒子高度设置为calc(100% - 120px);

如何让下面盒子的子盒子高度适应外部的高度呢?

答:给外部盒子添加display:flex,内部盒子设置为flex-grow:1。

2.flex-shrink,在flex布局中经常会遇到页面宽度不够而导致的文字换行问题,由于flex布局默认flex-shrink为1,就是默认可以缩小然后会导致换行,需要设置flex-shrink:0,默认不缩小就可以了。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      display: flex;
      border: 1px solid black;
      /* 较窄的容器,不足以容纳两个子元素 */
      overflow: hidden;
      /* 隐藏超出容器的内容 */
    }

    .item {
      background-color: lightblue;
      padding: 10px;
      margin: 5px;
    }

    .no-shrink {
      flex-shrink: 0;
      /* 不缩小 */
    }

    .shrink {
      flex-shrink: 1;
      /* 默认值,可以缩小 */
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="item no-shrink">No Shrink (Short)</div>
    <div class="item shrink">Shrink (Long Text to Demonstrate Shrink)</div>
  </div>
</body>

</html>

3.flex-basis:0% 表示元素应该尽可能地小,以便分配额外空间

flex-basis:100%表示他占比整个宽度的100%

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      display: flex;
      border: 1px solid black;
      overflow: hidden;
      /* 隐藏超出容器的内容 */
    }

    .item {
      background-color: lightblue;
      padding: 10px;
      margin: 5px;
      /* box-sizing: border-box; */
      /* 包含内边距和边框在总宽度中 */
    }

    .half-width {
      flex-basis: 100%;
      /* 占用容器宽度的一半 */
    }

    .fixed-width {
      flex-basis: 20px;
      /* 固定宽度 */
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="item half-width">Half Width Item (50%)</div>
    <div class="item fixed-width">Fixed Width Item (200px)</div>
  </div>
</body>

</html>

4.flex: 1; 是一个非常常用的简写属性,用于在 Flexbox 布局中使子元素自动填充容器的可用空间,

每个 .nav-item 都设置为 flex: 1;,这意味着它们将自动填充 .navbar 中的剩余空间,并且在容器宽度变化时等分空间。

  • flex-grow: 1; - 定义了元素如何分配额外的空间。如果所有子元素都有相同的正数 flex-grow 值,它们将会平均分配剩余空间。

  • flex-shrink: 1; - 定义了元素如何减少其大小以避免溢出。在这个上下文中,1 是一个默认值,表示元素可以缩小。(但是会造成高度的变化,属于flex的默认属性)

  • flex-basis: 0%; - 定义了元素在分配额外空间前的初始大小。0% 表示元素应该尽可能地小,以便分配额外空间。

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .navbar { display: flex; /* 分布子元素 */ padding: 10px; background-color: #f0f0f0; border: 1px solid black; }
      .nav-item {
        flex: 1;
        /* 自动填充剩余空间 */
        background-color: #ddd;
        padding: 10px 20px;
        margin: 5px;
        border: none;
        cursor: pointer;
        border: 1px solid red;
      }
    </style>
    
    </head> <body>
    <button class="nav-item">Home</button> <button class="nav-item">About</button> <button class="nav-item">Contact</button>
    </body> </html>
相关推荐
m0_7482561413 分钟前
前端 MYTED单篇TED词汇学习功能优化
前端·学习
小马哥编程1 小时前
Function.prototype和Object.prototype 的区别
javascript
小白学前端6661 小时前
React Router 深入指南:从入门到进阶
前端·react.js·react
web130933203982 小时前
前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
前端
王小王和他的小伙伴2 小时前
解决 vue3 中 echarts图表在el-dialog中显示问题
javascript·vue.js·echarts
学前端的小朱2 小时前
处理字体图标、js、html及其他资源
开发语言·javascript·webpack·html·打包工具
outstanding木槿2 小时前
react+antd的Table组件编辑单元格
前端·javascript·react.js·前端框架
好名字08212 小时前
前端取Content-Disposition中的filename字段与解码(vue)
前端·javascript·vue.js·前端框架
摇光933 小时前
js高阶-async与事件循环
开发语言·javascript·事件循环·宏任务·微任务
隐形喷火龙3 小时前
element ui--下拉根据拼音首字母过滤
前端·vue.js·ui