弹性盒子布局,flex布局

弹性盒子布局(Flexbox)是CSS3引入的一种新的布局模式,它提供了一种更加有效的方式来设计、布局和对齐容器中的项目,即使容器的大小动态改变或者项目的数量未知。

弹性盒子布局的主要特点是能够轻松地在不同的屏幕大小和设备上实现一致的布局,通过为父容器(弹性容器)设置display: flex;display: inline-flex;来定义。弹性容器内的子元素(弹性项)会自动成为容器的成员,并按照弹性盒子的规则进行布局。

弹性盒子布局有以下主要优点:

  1. 灵活性:弹性盒子布局可以轻松地适应不同屏幕尺寸和设备,无论是桌面设备还是移动设备。

  2. 方向性:可以设置主轴的方向(水平或垂直),从而决定弹性项是水平排列还是垂直排列。

  3. 对齐方式:可以轻松地在主轴和交叉轴上对齐弹性项,包括两端对齐、居中、空间分布等。

  4. 顺序调整:通过order属性,可以改变弹性项在容器中的排列顺序。

  5. 弹性:弹性项可以根据需要增长或缩小,以适应可用空间。

  6. 包裹:如果弹性项在主轴上超出了容器的空间,可以设置弹性容器是否允许弹性项换行显示。

弹性盒子布局由两部分组成:弹性容器(flex container)和弹性项(flex items)。弹性容器通过一系列CSS属性来控制其子元素(弹性项)的布局,而弹性项则自动成为容器的成员并遵循容器的布局规则。

在弹性盒子布局中,有一些关键的CSS属性,如flex-directionjustify-contentalign-itemsflex-wrapflex-growflex-shrinkflex-basis等,这些属性可以用来控制弹性容器和弹性项的行为和外观。

总之,弹性盒子布局是一种强大而灵活的布局模式,可以帮助开发人员更轻松地创建适应性强、易于维护的网页布局。

flex术语

序号

简记术语
1二成员容器和项目(container / item)
2二根轴主轴与交叉轴(main-axis / cross-axis)

3

二根线起始线与结束线(flex-start / flex-end)

弹性容器属性

  1. flex-direction
    • 定义主轴的方向,即弹性项默认的排列方向。
    • 可选值:row(默认值,水平方向从左到右)、row-reverse(水平方向从右到左)、column(垂直方向从上到下)、column-reverse(垂直方向从下到上)。
  2. justify-content
    • 定义弹性项在主轴上的对齐方式。
    • 可选值:flex-start(默认值,起点对齐)、flex-end(终点对齐)、center(居中对齐)、space-between(两端对齐,弹性项之间的间隔相等)、space-around(每个弹性项两侧的间隔相等)、space-evenly(弹性项之间的间隔和两侧的间隔都相等)。
  3. align-items
    • 定义弹性项在交叉轴上的对齐方式(当弹性项为单行时)。
    • 可选值:stretch(默认值,如果弹性项未设置高度或设为auto,将占满整个容器的高度)、flex-startflex-endcenterbaseline(以第一行文字的基线对齐)。
  4. flex-wrap
    • 定义弹性项是否换行显示。
    • 可选值:nowrap(默认值,不换行)、wrap(换行,第一行在上方)、wrap-reverse(换行,第一行在下方)。
  5. align-content
    • 定义多行弹性项在交叉轴上的对齐方式(当弹性项换行时)。
    • 可选值与 align-items 类似,但额外支持 stretch(默认值,如果弹性项未设置高度或设为auto,将占满整个容器的高度,但仅适用于多行)。
  6. flex-flow
    • 简化flex-direction,flex-wrap属性

弹性项属性

  1. flex-grow
    • 定义弹性项的放大比例。默认为 0,表示不放大。如果有剩余空间,则根据所有弹性项的 flex-grow 值来分配剩余空间。
  2. flex-shrink
    • 定义弹性项的缩小比例。默认为 1,表示如果空间不足,该项目将缩小。如果有空间不足的情况,则根据所有弹性项的 flex-shrink 值来缩小项目。
  3. flex-basis
    • 定义弹性项在主轴上的初始大小。默认为 auto,表示项目的大小由其内容决定。
  4. flex
    • 是 flex-growflex-shrink 和 flex-basis 的简写属性,用于同时设置这三个值。例如,flex: 1 0 200px; 就等同于 flex-grow: 1; flex-shrink: 0; flex-basis: 200px;
  5. order
    • 定义弹性项的排列顺序(整数,默认为0)。数值越小,排列越靠前。
  6. align-self
    • 允许单个弹性项覆盖由 align-items 设置的交叉轴对齐方式。可选值与 align-items 相同。

创建flex容器与项目

1.属性

display:flex                        创建flex块级容器

display:inline-flex              创建flex行内容器

主轴方向与多行容器

 <style>
        .container {
            width: 300px;
            height: 150px;
            background-color: pink;

            /* 可选值:
            row(默认值,水平方向从左到右)、
            row-reverse(水平方向从右到左)、
            column(垂直方向从上到下)、
            column-reverse(垂直方向从下到上)。 */

            display: flex;
            /* 设置主轴方向:水平方向 */
            /* flex-direction: row; */
            /* flex-direction: row-reverse; */

            /* 设置主轴方向:垂直方向 */
            flex-direction: column;
            /* flex-direction: column-reverse;  */


            /* 设置多行容器 */
            /* 可选值:nowrap(默认值,不换行)、
            wrap(换行,第一行在上方)、
            wrap-reverse(换行,第一行在下方)。 */

            /* 默认单行容器,不允许换行显示,项目自动收缩适应容器大小 */
            /* flex-wrap: nowrap; */
            flex-wrap: wrap;


        }


        .item {
            width: 100px;
            height: 50px;
            background-color: lightcyan;

        }
    </style>
</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
    </div>
</body>

主轴项目对齐方式

 <style>
        .container {
            width: 300px;
            height: 150px;
            background-color: pink;
            display: flex;

            /* 默认从主轴的起始线排列 */
            justify-content: flex-start;

            /* 对齐到终止线 */
            justify-content: flex-end;

            /* 对齐到主轴的中间线,居中对齐 */
            justify-content: center;

            /* 两端对齐  剩余空间在头尾项目之外的项目间平均分配 */
            justify-content: space-between;

            /* 分散对齐  剩余空间在每个项目之间平均分配*/
            justify-content: space-around;

            /* 平均对齐 */
            justify-content: space-evenly;
        }


        .item {
            width: 50px;
            height: 50px;
            background-color: lightcyan;

        }
    </style>
    </head>

    <body>
        <div class="container">
            <div class="item">1</div>
            <div class="item">2</div>
            <div class="item">3</div>
            <div class="item">4</div>
        </div>
    </body>

交叉轴项目对齐方式

<style>
        /* 可选值:
        stretch(默认值,如果弹性项未设置高度或设为auto,将占满整个容器的高度)、
        flex-start、flex-end、center、baseline(以第一行文字的基线对齐)。 */
        .container {
            width: 300px;
            height: 150px;
            background-color: pink;
            display: flex;

            /* 主轴为水平方向 */
            flex-flow: row nowrap;

            /* 默认:从交叉轴的起始线开始排列,对齐到起始线 */
            align-items: flex-start;

            /* 对齐到终止线 */
            align-items: flex-end;

            /* 居中对齐 */
            align-items: center;




        }


        .item {
            width: 50px;
            height: 50px;
            background-color: lightcyan;

        }
    </style>
    </head>

    <body>
        <div class="container">
            <div class="item">1</div>
            <div class="item">2</div>
            <div class="item">3</div>
            <div class="item">4</div>
        </div>
    </body>

多行容器项对齐方式

<style>
    .container {
        width: 300px;
        height: 400px;
        background-color: pink;
        display: flex;

        /* 主轴为水平方向 */
        flex-flow: row wrap;

        /* 默认 */
        align-content: stretch;

        /* 与起始线对齐 */
        align-content: flex-start;

        /* 与终止线对齐 */
        align-content: flex-end;

        /* 居中对齐 */
        align-content: center;

        /* 两端对齐 */
        align-content: space-between;

        /* 分散对齐 */
        align-content: space-around;

        /* 平均对齐 */
        align-content: space-evenly;

    }


    .item {
        width: 100px;
        height: 50px;
        background-color: lightcyan;

    }
</style>
</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
        <div class="item">7</div>

    </div>
</body>

设置单个项目在交叉轴上的对齐方式

<style>
    .container {
        width: 300px;
        height: 200px;
        background-color: pink;
        display: flex;


    }


    .item {
        width: 100px;
        height: 50px;
        background-color: lightcyan;

    }


    .item:first-child {
        align-self: flex-start;
        /* auto 是默认值,继承的是容器中的align-items */
        align-self: auto;
    }

    .item:nth-child(2) {
        /* 第二个项目与中间线对齐 */
        align-self: center;
    }

    .item:nth-child(3) {
        /* 第三个项目拉伸 */
        align-self: stretch;
    }

    .item:last-child {
        /* 和基线对齐 */
        /* 所有项目基线对齐才会有效果 */
        align-self: baseline;
    }
</style>




</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>


    </div>
</body>

设置单个项目的排列顺序

<style>
        .container {
            width: 300px;
            height: 200px;
            background-color: pink;
            display: flex;


        }


        .item {
            width: 100px;
            height: 50px;
            background-color: lightcyan;

        }


        /* order数值越小顺序越靠前 ,默认为0,按照书写顺序*/
        .item:first-child {
            order: 2;
        }

        .item:nth-child(2) {
            order: -1;
        }


        .item:last-child {
            order: 0;
        }
    </style>




</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>



    </div>
</body>

单个项目的放大因子

<style>
        .container {
            width: 300px;
            height: 200px;
            background-color: pink;
            display: flex;


        }


        .item {
            width: 50px;
            height: 50px;
            background-color: lightcyan;

        }


        /* 默认值为0 */
        放大比列计算方法

        /* 1.计算出需要分配的主轴上剩余空间:300 - (50*3) */
        /* 2.计算放大因子:(0 + 1 + 2) = 3 */
        /* 将剩余空间150px分成三等分 150 / 3 */
        /* 第一个:50  + (0 * 50) = 50
        第二个:50 + (1 * 50) = 100
        第三个:50 + (2 * 50) = 150 */
        .item:first-child {
            flex-grow: 0;
        }

        .item:nth-child(2) {
            flex-grow: 1;
        }


        .item:last-child {
            flex-grow: 2;
        }
    </style>




</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>



    </div>
</body>

单个项目的收缩因子

<style>
        .container {
            width: 300px;
            height: 200px;
            background-color: pink;
            display: flex;

            /* flex-wrap: wrap; */

        }


        .item {
            width: 150px;
            height: 50px;
            background-color: lightcyan;

        }



        .item:first-child {
            flex-shrink: 0;
        }

        .item:nth-child(2) {
            flex-shrink: 1;
        }


        .item:last-child {
            flex-shrink: 2;
        }
    </style>




</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>



    </div>
</body><style>
        .container {
            width: 300px;
            height: 200px;
            background-color: pink;
            display: flex;

            /* flex-wrap: wrap; */

        }


        .item {
            width: 150px;
            height: 50px;
            background-color: lightcyan;

        }



        .item:first-child {
            flex-shrink: 0;
        }

        .item:nth-child(2) {
            flex-shrink: 1;
        }


        .item:last-child {
            flex-shrink: 2;
        }
    </style>




</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>



    </div>
</body>

设置项目在主轴上的计算基准尺寸

<style>
        .container {
            width: 300px;
            height: 200px;
            background-color: pink;
            display: flex;
            flex-wrap: wrap;

        }


        .item {
            width: 50px;
            height: 50px;
            background-color: lightcyan;

            /* 默认 */
            /* flex-basis: auto; */

            /* flex-basis设置的值会覆盖掉原始项目的值 */
            flex-basis: 80px;

            /* min-width的值会覆盖掉flex-basis的值 */
            min-width: 90px;
            

        }
    </style>




</head>

<body>
    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>



    </div>
</body>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

虚拟局域网(VLAN)

关键词&#xff1a;veth、vlan、bridge、iptables、nat、tcpdump、icmp、cidr、arp、路由表、计算机网络协议栈 前言 在过去的几十年里&#xff0c;互联网发展得非常快。许多新兴技术迅速崛起&#xff0c;也有不少曾经的主流技术被淘汰。然而&#xff0c;有些技术因为其基础性…

iPhone实况照片从Windows资源管理器复制的JPG+MOV无法正常还原到iPhone

背景&#xff1a; 之前使用的iPhone 15 Pro&#xff0c;使用的Windows资源管理器当中复制导出的实况照片&#xff0c;复制出来的格式例如IMG_0001.JPG, IMG_0001.MOV。之后手机就卖掉了。现在使用的iPhone 14 Pro Max&#xff0c;想要导回之前备份的实况照片。尝试使用爱思助手…

解决vue版本不一致导致不能正常编译

解决vue版本不一致导致不能正常编译 异常现象分析原因解决方案 异常现象 项目原本运行无异常&#xff0c;但安装了一个el-table-infinite-scroll的插件后&#xff0c;编译报错&#xff0c;截图如下 分析原因 vue版本与compile版本不一致&#xff0c;应该统一起来&#xff0…

网创教程:WordPress插件网创自动采集并发布

网创教程&#xff1a;WordPress插件网创自动采集并发布 使用插件注意事项&#xff1a; 如果遇到404错误&#xff0c;请先检查并调整网站的伪静态设置&#xff0c;这是最常见的问题。需要定制化服务&#xff0c;请随时联系我。 本次更新内容 我们进行了多项更新和优化&#x…

1.存储部分

1.Flash Memory--闪速存储器&#xff08;注&#xff1a;U盘&#xff0c;SD卡就是闪存&#xff09;在EEPROM基础上发展而来的&#xff0c;断电后也能保存信息&#xff0c;且可进行多次 快速擦除重写。注意&#xff1a;由于闪存需要先擦除再写入&#xff0c;因此闪存写的速度要比…

ssm141餐厅点菜管理系统+vue

餐厅点菜管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管…

Unity-Sprite Atlas+UGUI系统的运行原理

每日一句&#xff1a;别听世俗耳语&#xff0c;看自己的风景就好 目录 SA的原理&#xff1a; SA的优点&#xff1a; SA的缺点&#xff1a; DrawCall是什么&#xff1f; 批处理是什么&#xff1f; 我们先了解一下UGUI系统的运行原理吧&#xff01; 提到图集优化&#xff0…

性能测试--线程的监控

1.线程的状态 1.1.线程的5种状态 java的线程总共有5种状态&#xff0c;如下&#xff1a; * 新建&#xff1a;new 【新建之后不启用都是new】* 运行&#xff1a;runnable* 等待&#xff1a;waitting(无限期等待),timed waitting(限期等待)* 阻塞&#xff1a;blocked* 结束&am…

C++ 求 f(x) = sin x / x 的函数极限

Python&#xff1a; import sympy from sympy import oo #注意无究符号表示形式为两个小定字母o import numpy as np x sympy.Symbol(x) #注意Symbol首字母大写f sympy.sin(x) / x # 定义极限表达式lim sympy.limit(f,x,oo) print(lim)输出&#xff1a; 0 C #include…

计网(部分在session学习章)

TCP/UDP TCP:面向连接,先三次握手建立连接,可靠传输。 UDP:无连接,不可靠,传递的快。 TCP可靠传输 1.分块编号传输; 2.校验和,校验首部和数据的检验和,检测数据在传输中的变化; 3.丢弃重复数据; 4.流量控制,TCP 利⽤滑动窗⼝实现流量控制。TCP的拥塞控制采⽤…

数据可视化第9天(利用wordcloud和jieba分析蝙蝠侠评论的关键字)

数据可以在这里下载 https://github.com/harkbox/DataAnalyseStudy WordCloud wordcloud可以很方便的生成词云图&#xff0c;方便的提供可视化可以直接使用pip install wordcloud进行安装如果使用的是Anaconda,可以使用conda install进行安装 下面看一个简单的例子 txt &qu…

在linux下的ROS中下载超级终端Terminator ROS开发得力助手

在一般我们运行机器人包时要打开三个终端来运行&#xff0c;关闭时还要一个一个关闭&#xff08;ctrlc&#xff09;过于麻烦 现在下载用了terminator后&#xff0c;就支持一键关闭多个终端了&#xff0c;很方便&#xff0c;具体操作如下&#xff1a; sudo apt install termin…

第十三期Big Demo Day聚焦Web3前沿,FaceN.AI项目路演揭幕创新技术

第十三期Big Demo Day活动即将于2024年5月28日在香港数码港的CyberArena隆重举行。FaceN.AI将亮相本次Big Demo Day&#xff0c;参与精彩的项目路演&#xff0c;展示其在跨链去中心化数字身份、On-chain to Off-chain数据应用、DIDFi探索以及元宇宙与AIGC人格化发展等领域的领先…

Gb 2024-05-22开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3非开发语言项目2Jupyter Notebook项目2Rust项目2JavaScript项目1Lua项目1编程面试大学:成为软件工程师的全面学习计划 创建周期:2…

talib 安装

这里写自定义目录标题 talib 安装出错 talib 安装出错 https://github.com/cgohlke/talib-build/releases 这里找到轮子 直接装。

BUUCTF [GUET-CTF2019]zips 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 密文&#xff1a; 得到一个attachment.zip文件 解题思路&#xff1a; 1、解压attachment.zip&#xff0c;得到222.zip文件。尝试解压需要密码&#xff0c;使用Ziperello爆破密码…

java连接ldap实现查询

文章目录 一、项目背景二、准备工作三、验证结果四、易错点讲解易错点1&#xff1a;java: 无法访问org.springframework.ldap.core.LdapTemplate易错点2&#xff1a;java: 无法访问org.springframework.context.ConfigurableApplicationContext易错点3&#xff1a;[LDAP: error…

WGCAT工单系统如何配置通知

WGCAT工单系统可以配置邮件通知 只要配置了邮件通知&#xff0c;那么一旦我们账号有新的工单需要处理&#xff0c;就会接受到邮件通知 除了邮件之外&#xff0c;还可以配置其他方式的通知&#xff0c;比如微信钉钉短信等方式&#xff0c;参考如下 https://www.wgstart.com/wgc…

RDD介绍

RDD设计背景 在实际应用中,存在许多迭代式计算,这些应用场景的共同之处是 : 不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入. 而目前的MapReduce框架都是把中间结果写入到HDFS中,带来了大量的数据复制、磁盘IO和序列化开销; 如果能将结果保存在内…

Docker安装、入门及VSCode链接(地平线OE docker镜像)

最近在地平线的SDK X3上做开发&#xff0c;有高手做了一些编译方法的对比&#xff1a; [X3容器应用开发探索-0]开篇&#xff1a;从裸机编译到交叉编译 X86 Qemu for Hobot X3 PI(AARCH64) vs Hobot X3 PI 这里想借助Docker编译提速&#xff0c;做个笔记&#xff1a; 目录 一、…