CSS —— 界面布局

flexbox - 弹性盒子布局(弹性布局)

采用flex布局的元素,称为 Flex 容器(flex container),简称"容器"

flex-direction

用于设置主轴方向;子元素默认是按照主轴线排列的,所以 flex-direction 也指定了弹性子元素在弹性容器中的排列方式

  • row(默认):主轴为水平方向,起点在左端
  • row-reverse:主轴为水平方向,起点在右端
  • column:主轴为垂直方向,起点在上沿
  • column-reverse:主轴为垂直方向,起点在下沿

主轴 &交叉轴:交叉轴垂直于主轴

flex-wrap

用于设置自动换行;如果flexbox 容器 (container) 的宽度不足以存放 所有 flex元素 , 就会出现滚动条,确保所有的 flex元素 都在一行;若想实现超出container的宽度就自动换行,可设置flex-wrap: wrap

  • nowrap(默认):不换行
  • wrap:换行,换到下面
  • wrap:换行,换到上面

flex-flow

flex-direction和flex-wrap的简写形式,默认为row nowrap

flex-basis

正常情况下,一个flex元素的宽度是由其内容决定的;如果容器还有剩余空间,那么这个flex元素可以分得最多到 flex-basis 指定的宽度

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        .wrapper {
            /* 内部显示规则为flexbox布局;外部显示规则时block (div class="wrapper") */
            display: flex; 
            /* 指定flex元素的间距 */
            gap: .5em; 
            /* 设置水平为主轴,左侧为起点,换行 */
            flex-flow: row wrap;
        }
        .wrapper > div {
            /* 边框  属性值:边框线粗细像素 线条种类 线条颜色 */
            border:1px solid black;
        }
    </style>
</head>
<body>
        <div class="wrapper">  
        <div>1</div>
        <div>2</div>
        <div> 3
          <br>3
          <br>3
          <br>3
        </div>
        <div>444</div>
        <div style="flex-basis: 300px">5</div>
        <div style="flex-basis: 200px">6</div>
        <div style="flex-basis: 100px">777777777777777</div>
        <div>8888888888888</div>
      </div>
</body>
</html>

flex-grow

如果有剩余空间,这个元素可以分配到多少的比例

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        .wrapper {
            display: flex;
            gap: .5em; 
            flex-flow: row wrap;
            border:1px solid red;
        }
        .wrapper > div {
            border:1px solid black;
        }
    </style>
</head>
<body>
    <div class="wrapper">  
        <div>1</div>
        <div>2</div>
        <div> 3
          <br>3
          <br>3
          <br>3
        </div>
        <div style="flex-grow: 3">5</div>
        <div style="flex-grow: 2">6</div>
        <div style="flex-grow: 1">7</div>
        <div>8888888888888</div>  
      </div>
</body>
</html>

flex-shrink

如果 flex容器空间比所有 flex元素空间总和小,这个元素空间缩减的比例

主轴对齐------justify-content

  • flex-start:flex元素和容器主轴方向开始位置对齐(左对齐;flex-direction默认值为row)
  • flex-end:flex元素和容器主轴方向结束位置对齐(右对齐)
  • center:flex元素和容器主轴方向中间位置对齐
  • space-between:flex元素 均匀分布在主轴上,间距相同;第一个 flex元素 和 container的主轴方向开始位置平齐,最后一个 flex元素 和 container的主轴方向结束位置平齐
  • space-around:flex元素 均匀分布在主轴上,间距相同;第一个 flex元素 和 container的主轴方向开始位置的间距 以及 最后一个 flex元素 和 container的主轴方向结束位置的间距都是flex元素间距的一半
  • space-evenly:flex元素 均匀分布在主轴上,间距相同;第一个 flex元素 和 container 的主轴方向开始位置的间距 以及 最后一个 flex元素 和 container的主轴方向结束位置的间距都于flex元素间距相同

从轴对齐------align-items

该属性缺省的条件下,所有的 flex元素和最高的flex元素保持一致

  • flex-start:flex元素和容器从轴方向的开始位置对齐(上边对齐)
  • flex-end:flex元素和容器从轴方向的结束位置对齐(下边对齐)
  • center:flex元素和容器从轴方向的中间位置对齐

grid - 网格布局

本文参考自:

22 flex布局容器六大属性_flex容器属性-CSDN博客

界面布局 - Flexbox | 白月黑羽

界面布局 - Flexbox | 白月黑羽

相关推荐
冬奇Lab几秒前
每日一个开源项目(第137篇):Penpot - 真正开源的设计协作工具,SVG 原生格式消灭设计-开发鸿沟
前端·开源·设计
nuIl18 分钟前
实现一个 Coding Agent(7):Skills
前端·agent·cursor
nuIl23 分钟前
实现一个 Coding Agent(8):会话持久化与多会话
前端·agent·cursor
jt君424261 小时前
React Native JSI 深入剖析 — 第 5 部分中文技术整理:用 HostObject 把 C++ 类暴露给 JavaScript
前端·react native
胡萝卜术1 小时前
滑动窗口最大值:从暴力到单调队列,层层优化全解析
前端·javascript·面试
fluffyox2 小时前
Notion 的公式栏里,藏着一台虚拟机——逆向 + 用 600 行 JS 复刻它的编译器与栈式 VM
前端
kyriewen3 小时前
2026 年了,这 6 个 npm 包可以卸载了——浏览器原生 API 已经能替代
前端·javascript·npm
Csvn5 小时前
Monorepo 迁移血泪史:从 Multi-Repo 到 Turborepo,这 3 个坑我帮你踩完了
前端
星栈6 小时前
Dioxus 多页面怎么做:`dioxus-router`、嵌套路由、`Outlet` 和页面组织,一篇给你讲顺
前端·rust·前端框架
用户987409238876 小时前
用 Remotion + edge-tts 打造中文教学视频全自动流水线
前端