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>
相关推荐
qq_3643717230 分钟前
Vue 内置组件 keep-alive 中 LRU 缓存淘汰策略和实现
前端·vue.js·缓存
y先森1 小时前
CSS3中的弹性布局之侧轴的对齐方式
前端·css·css3
new出一个对象5 小时前
uniapp接入BMapGL百度地图
javascript·百度·uni-app
你挚爱的强哥6 小时前
✅✅✅【Vue.js】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本
javascript·vue.js·jquery
y先森6 小时前
CSS3中的伸缩盒模型(弹性盒子、弹性布局)之伸缩容器、伸缩项目、主轴方向、主轴换行方式、复合属性flex-flow
前端·css·css3
前端Hardy6 小时前
纯HTML&CSS实现3D旋转地球
前端·javascript·css·3d·html
susu10830189117 小时前
vue3中父div设置display flex,2个子div重叠
前端·javascript·vue.js
IT女孩儿8 小时前
CSS查缺补漏(补充上一条)
前端·css
吃杠碰小鸡9 小时前
commitlint校验git提交信息
前端
emmm4599 小时前
html兼容性问题处理
html