CSS 笔记——Flexbox(弹性盒布局)

news2025/4/15 1:04:44

目录

1. Flex 容器与 Flex 项目

2. 主轴与交叉轴

3. Flex 容器的属性

display

flex-direction

justify-content

align-items

align-content

flex-wrap

4. Flex 项目的属性

flex-grow

flex-shrink

flex-basis

flex

align-self

5. Flexbox 的优点

6. Flexbox 的应用场景

示例代码

总结


        CSS Flexbox(弹性盒布局)是一种强大的布局模型,用于创建灵活且响应式的用户界面。以下是对 Flexbox 布局中主要知识点的详细介绍:

1. Flex 容器与 Flex 项目

  • Flex 容器通过设置 display: flex;display: inline-flex;,将一个元素变成 Flex 容器。

  • Flex 项目Flex 容器的直接子元素称为 Flex 项目。

       直接子元素是指那些直接嵌套在某个元素内部的元素,而不包括嵌套在中间的其他元素内的元素。

代码示例 

<div class="container"> <!-- Flex 容器 -->
    <div class="item"></div> <!-- Flex 项目 -->
    <div class="item"></div>
    <div class="item"></div>
</div>

2. 主轴与交叉轴

  • 主轴(Main Axis)Flex 容器的主要方向,默认是水平方向。

  • 交叉轴(Cross Axis)与主轴垂直的方向,默认是垂直方向。

3. Flex 容器的属性

以下是 Flex 容器可以设置的属性:

display
  • flexinline-flex

  • 作用将容器设置为 Flexbox 布局。

.container {
    display: flex; /* 或 inline-flex */
}
flex-direction
  • 作用定义主轴的方向。

  • 常见值

    • row:主轴为水平方向(默认值)。

    • row-reverse:主轴为水平方向,但反向排列。

    • column:主轴为垂直方向。

    • column-reverse:主轴为垂直方向,但反向排列。

.container {
    flex-direction: row; /* 水平排列 */
}
justify-content
  • 作用定义子元素在主轴上的对齐方式。

  • 常见值

    • flex-start:子元素对齐主轴的起点。

    • flex-end:子元素对齐主轴的终点。

    • center:子元素在主轴上居中对齐。

    • space-between:子元素之间的间距相等,首尾元素分别对齐主轴的起点和终点。

    • space-around:子元素之间的间距相等,首尾元素与容器边缘的间距为其他间距的一半。

.container {
    justify-content: center; /* 主轴居中对齐 */
}
align-items
  • 作用定义子元素在交叉轴上的对齐方式。

  • 常见值

    • stretch:子元素在交叉轴上拉伸,填满整个容器(默认值)。

    • flex-start:子元素对齐交叉轴的起点。

    • flex-end:子元素对齐交叉轴的终点。

    • center:子元素在交叉轴上居中对齐。

    • baseline:子元素的基线对齐。

.container {
    align-items: center; /* 交叉轴居中对齐 */
}
align-content
  • 作用定义多行子元素在交叉轴上的对齐方式(仅当子元素换行时有效)。

  • 常见值

    • flex-start:子元素对齐交叉轴的起点。

    • flex-end:子元素对齐交叉轴的终点。

    • center:子元素在交叉轴上居中对齐。

    • space-between:子元素之间的间距相等。

    • space-around:子元素之间的间距相等,首尾元素与容器边缘的间距为其他间距的一半。

    • stretch:子元素在交叉轴上拉伸,填满整个容器。

.container {
    align-content: space-between; /* 多行子元素间距相等 */
}
flex-wrap
  • 作用定义子元素是否可以换行。

  • 常见值

    • nowrap:子元素不换行(默认值)。

    • wrap:子元素在必要时换行。

    • wrap-reverse:子元素在必要时换行,但反向排列。

.container {
    flex-wrap: wrap; /* 子元素可以换行 */
}

4. Flex 项目的属性

以下是 Flex 项目可以设置的属性:

flex-grow
  • 作用定义子元素在主轴上的伸缩比例。

  • :数字,表示子元素可以占用的剩余空间比例。

.item {
    flex-grow: 1; /* 子元素可以占用所有剩余空间 */
}
flex-shrink
  • 作用定义子元素在主轴上的收缩比例。

  • :数字,表示子元素在空间不足时的收缩比例。

.item {
    flex-shrink: 1; /* 子元素可以收缩 */
}
flex-basis
  • 作用定义子元素在主轴上的初始大小。

  • :可以是具体的长度(如 100px)或 auto(默认值)。

.item {
    flex-basis: 100px; /* 子元素的初始宽度为 100px */
}
flex
  • 作用flex-growflex-shrinkflex-basis 的简写形式。

  • flex: <flex-grow> <flex-shrink> <flex-basis>;

  • 常用值

    • flex: 1;:等同于 flex: 1 1 0;,表示子元素可以伸缩。

    • flex: auto;:等同于 flex: 1 1 auto;,表示子元素可以伸缩,初始大小为 auto

    • flex: none;:等同于 flex: 0 0 auto;,表示子元素不可伸缩。

.item {
    flex: 1; /* 子元素可以伸缩 */
}
align-self
  • 作用定义单个子元素在交叉轴上的对齐方式,覆盖 align-items 的设置。

  • 常见值:与 align-items 的值相同。

.item {
    align-self: center; /* 单个子元素在交叉轴上居中对齐 */
}

5. Flexbox 的优点

  1. 灵活性:Flexbox 可以轻松实现复杂的布局,如水平和垂直居中、等分空间等。

  2. 响应式:Flexbox 布局可以根据容器大小动态调整子元素的排列。

  3. 简单性:相比传统的布局方式(如浮动、定位),Flexbox 的代码更简洁,逻辑更清晰。

6. Flexbox 的应用场景

  • 水平和垂直居中:通过 justify-content: center;align-items: center; 实现。

  • 等分空间:通过 flex: 1;space-between 实现。

  • 响应式布局:通过 flex-wrap 和媒体查询实现。

  • 复杂布局:如导航栏、卡片布局、网格布局等。

示例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flexbox 示例</title>
    <style>
        .container {
            display: flex;
            flex-direction: row;
            justify-content: space-between;
            align-items: center;
            width: 300px;
            height: 100px;
            background-color: #f0f0f0;
            border: 1px solid #ccc;
        }

        .item {
            width: 80px;
            height: 60px;
            background-color: #4285f4;
            color: white;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-shrink: 0; /* 子元素不收缩 */
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
    </div>
</body>
</html>

总结

        Flexbox 是一种非常强大的布局工具,适合处理一维布局(水平或垂直)。通过灵活的属性设置,可以轻松实现复杂的布局需求。掌握 Flexbox 的核心概念和常用属性,可以在现代 Web 开发中事半功倍。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2331905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cpp(c++)win 10编译GDAL、PROJ、SQLite3、curl、libtiff

cpp&#xff08;c&#xff09;编译GDAL、PROJ、SQLite3 Sqlite3libtiffcurlprojGDAL Sqlite3 1、下载 Sqlite3 源码、工具、二进制预编译 exe Sqlite3 官网&#xff1a;https://www.sqlite.org/download.html 下载 sqlite-amalgamation-3430200.zipsqlite-dll-win64-x64-3430…

每日一题(小白)暴力娱乐篇23

由题意得知给我们一串数字&#xff0c;我们每次交换两位&#xff0c;最少交换多少次成功得到有顺序的数组。我们以平常的思维去思考&#xff0c;加入给你一串数字获得最少的交换次数&#xff0c;意味着你的交换后续基本不会变&#xff0c;比如说2 1 3 5 4 中1与2交换后不变&…

01-Redis-基础

1 redis诞生历程 redis的作者笔名叫做antirez&#xff0c;2008年的时候他做了一个记录网站访问情况的系统&#xff0c;比如每天有多少个用户&#xff0c;多少个页面被浏览&#xff0c;访客的IP、操作系统、浏览器、使用的搜索关键词等等(跟百度统计、CNZZ功能一样)。最开始存储…

【从零开始学习JVM | 第一篇】快速认识JVM

什么是JVM&#xff1f; JVM--Java虚拟机&#xff0c;它是Java实现平台无关性的基石。 Java程序运行的时候&#xff0c;编译器将Java代码编译为平台无关的Java字节码文件&#xff08;.class&#xff09;&#xff0c;接下来对应平台的JVM对字节码进行运行解释&#xff0c;翻译成…

使用RabbitMQ实现异步秒杀

搭建RabbitMQ 在虚拟机上用docker搭建RabbitMQ&#xff0c;首先拉取镜像 docker run --privilegedtrue -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management mkdir -p /usr/local/docker/rabbitmq再创建rabbitmq容器&#xff0c;下面的命令已经能够创建之后…

解决华硕主板Z890m下载ubuntu20.04后没有以太网问题

问题描述&#xff1a; 华硕主板Z890m下载双系统ubuntu20.04后&#xff0c;发现ubuntu不能打开以太网。 问题原因&#xff1a; 华硕主板的网卡驱动是r8125,而ubuntu20.04的驱动版本是r8169&#xff0c;所以是网卡驱动不匹配造成 解决方案 开机界面按下F2进入BOIS模式&#…

xLua的Lua调用C#的2,3,4

使用Lua在Unity中创建游戏对象&#xff0c;组件&#xff1a; 相关代码如下&#xff1a; Lua --Lua实例化类 --C# Npc objnew Npc() --通过调用构造函数创建对象 local objCS.Npc() obj.HP100 print(obj.HP) local obj1CS.Npc("admin") print(obj1.Name)--表方法希…

Debian系统_主板作为路由器_测试局域网设备间网速

Debian系统_主板作为路由器_测试局域网设备间网速 一、360软件测网速 360测出来的网速实际上是宽带的速度&#xff0c;并不是路由器LAN口到电脑这一段的网速 二、使用iperf3 进行双向带宽测试 1、开发板端下载软件 //Debian系统或者/Ubuntu sudo apt update && sudo…

从 macos 切换到 windows 上安装的工具类软件

起因 用了很多年的macos, 已经习惯了macos上的操作, 期望能在windows上获得类似的体验, 于是花了一些时间来找windows上相对应的软件. 截图软件 snipaste​​​​​​ windows和macos都有的软件, 截图非常好用 文件同步软件 oneDrive: 尝试了不同的同步软件, 还是微软在各…

JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)

目录 JavaScript中通过array.map(&#xff09;实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等&#xff0c;array.map&#xff08;&#xff09;的使用详解&#xff08;附实际应用代码&#xff09; 一、什么时候该使用Array.map()&#xff0…

SQL优化技术分享:从 321 秒到 0.2 秒的性能飞跃 —— 基于 PawSQL 的 TPCH 查询优化实战

在数据库性能优化领域&#xff0c;TPC-H 测试集是一个经典的基准测试工具&#xff0c;常用于评估数据库系统的查询性能。本文将基于 TPCH 测试集中的第 20个查询&#xff0c;结合 PawSQL 自动化优化工具&#xff0c;详细分析如何通过 SQL 重写和索引设计&#xff0c;将查询性能…

密码学基础——DES算法

前面的密码学基础——密码学文章中介绍了密码学相关的概念&#xff0c;其中简要地对称密码体制(也叫单钥密码体制、秘密密钥体制&#xff09;进行了解释&#xff0c;我们可以知道单钥体制的加密密钥和解密密钥相同&#xff0c;单钥密码分为流密码和分组密码。 流密码&#xff0…

在 Linux 终端中轻松设置 Chromium 的 User-Agent:模拟手机模式与自定义浏览体验

在 Linux 系统中&#xff0c;通过终端灵活控制 Chromium 的行为可以大幅提升工作效率。本文将详细介绍如何通过命令行参数和环境变量自定义 Chromium 的 User-Agent&#xff0c;并结合手机模式模拟&#xff0c;实现更灵活的浏览体验。 为什么需要自定义 User-Agent&#xff1f;…

http页面的加载过程

HTTP/2 核心概念 1.1 流&#xff08;Stream&#xff09; • 定义&#xff1a;HTTP/2 连接中的逻辑通道&#xff0c;用于传输数据&#xff0c;每个流有唯一标识符&#xff08;Stream ID&#xff09;。 • 特点&#xff1a; ◦ 支持多路复用&#xff08;多个流并行传输&#…

MySQL【8.0.41版】安装详细教程--无需手动配置环境

一、MySQL 介绍 1. 概述 MySQL 是一个开源的关系型数据库管理系统&#xff0c;由瑞典公司 MySQL AB 开发&#xff0c;现属于 Oracle 旗下。它基于 SQL&#xff08;结构化查询语言&#xff09;进行数据管理&#xff0c;支持多用户、多线程操作&#xff0c;广泛应用于 Web 应用、…

鸿蒙ArkTS实战:从零打造智能表达式计算器(附状态管理+路由传参核心实现)

还在为组件状态混乱、页面跳转丢参数而头疼&#xff1f; 这篇博客将揭秘如何用鸿蒙ArkTS打造一个漂亮美观的智能计算器&#xff1a; ✅ 输入完整表达式&#xff0c;秒出结果——字符串切割简单计算 ✅ 状态管理黑科技——Provide/Consume 实现跨组件实时响应 ✅ 路由传参实战—…

qq邮箱群发程序

1.界面设计 1.1 环境配置 在外部工具位置进行配置 1.2 UI界面设计 1.2.1 进入QT的UI设计界面 在pycharm中按顺序点击&#xff0c;进入UI编辑界面&#xff1a; 点击第三步后进入QT的UI设计界面&#xff0c;通过点击按钮进行界面设计&#xff0c;设计后进行保存到当前Pycharm…

K8S学习之基础七十九:关闭istio功能

关闭istio功能 kubectl get ns --show-labels kubectl label ns default istio-injection-有istio-injectionenabled的命名空间&#xff0c;pod都会开启istio功能 反之&#xff0c;如果要开启istio&#xff0c;在对应命名空间打上该标签即可

上门预约洗鞋店小程序都具备哪些功能?

现在大家对洗鞋子的清洗条件越来越高&#xff0c;在家里不想去&#xff0c;那就要拿去洗鞋店去洗。如果有的客户没时间去洗鞋店&#xff0c;这个时候&#xff0c;有个洗鞋店小程序就可以进行上门取件&#xff0c;帮助没时间的客户去取需要清洗的鞋子&#xff0c;这样岂不是既帮…

蓝桥杯——走迷宫(Java-BFS)

这是一个经典的BFS算法 1. BFS算法保证最短路径 核心机制&#xff1a;广度优先搜索按层遍历所有可能的路径&#xff0c;首次到达终点的路径长度即为最短步数。这是BFS的核心优势。队列的作用&#xff1a;通过队列按先进先出的顺序处理节点&#xff0c;确保每一步探索的都是当…