CSS中flex属性的的使用以及应用场景有哪些

news2025/2/28 19:46:23

文章目录

  • 一. flex属性?(虚假的) --- 这里主要是回顾
    • 1.1 flex-grow
    • 1.2 flex-shrink
    • 1.3 flex-basis
  • 二. flex属性 ! (真正的!!!)
  • 三. flex一些常见的值, 以及使用场景
    • 3.1 flex:initial 使用场景
    • 3.2 flex:0 和 flex:node 适用场景
    • 3.3 flex:1 和 flex:auto
    • 3.4 总结

一. flex属性?(虚假的) — 这里主要是回顾

flex是用于flex布局中项目的的属性; 它是一种简写形式;(这篇文章中使用display:flex的元素称为容器, 容器内的元素称为项目)

它是flex-grow,flex-basis,flex-shrink的简写

css语法

	flex: flex-grow felx-shrink flex basis | auto | initial | inherit

所以在了解flex的使用前,我们需要回顾一下flex-grow,flex-basis,flex-shrink; 他们的使用, 如果你对这些有了解并知道他们的使用,请看 第二部分

1.1 flex-grow

flex-grow属性定义项目的放大比例, 默认为0, 即如果存在剩余空间也不放大,

如果所有项目都是flex-grow属性都为1,则他们将均等分剩余空间(如果有的话)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <style>
        .box1, .box2 {
            height: 300px;
            display: flex;
            background-color: lavender;
            align-items: center; /*从轴居中*/
        }

        .box1 div, .box2 div {
            width: 100px;
            height: 100px;
        }

        .box1 div{
            flex-grow: 1;
        }

        section div:first-child {
            background-color: #4CAF50;
        }

        section div:nth-child(2) {
            background-color: #535bf2;
        }

        section div:nth-child(3) {
            background-color: #2c3e50;
        }


    </style>

</head>
<body>

<h3>实验组:</h3>
<section class="box1">

    <div class="b1c1">b1c1</div>
    <div class="b1c2">b1c2</div>
    <div class="b1c3">b1c3</div>

</section>

<br>
<br>

<h3>对照组:</h3>
<section class="box2">
    <div class="b2c1">b2c1</div>
    <div class="b2c2">b2c2</div>
    <div class="b2c3">b2c3</div>
</section>

</body>
</html>

在这里插入图片描述

1.2 flex-shrink

flex-shrink属性定义了项目的缩小比例,默认为1, 即如果空间不足,该项目则缩小,

如果所有项目的flex-shrink属性都为1,当剩余空间不足时,都将等比例缩小

        .box1 div{ /实验组中的div*/
            flex-grow: 1;
            flex-shrink:0;
        }

在这里插入图片描述

1.3 flex-basis

flex-basis属性定义了在分配多余空间之前,该项目占据主轴的空间

浏览器根据这个属性,计算主轴是否有多余空间,它的默认值为auto,即项目本来大小

它可以给一个大小值(比如200px), 则项目初始将占据该大小的空间, 实际占据空间还是需要根据项目中是否使用了flex-shrinkflex-grow属性

        .b1c1{
            flex-basis: 200px;
        }

在这里插入图片描述

设个时候如果给该项目使用flex-growflex-shrink属性仍然是有效的;

        .box1 div{
            flex-grow: 1;
        }

        .b1c1{
            flex-basis: 200px;
        }

在这里插入图片描述
box1 和 box2 为 150px时

在这里插入图片描述
但要注意的是flex-shrink缩小的时候是按照项目所占空间等比例进行缩小,

二. flex属性 ! (真正的!!!)

上部分说到flex属性,是一个简写属性;它是对flex grow , flex-shrink , flex-basis属性的简写,

css语法:
flex: flex grow flex-shrink flex-basis | auto | initial | inherit

下面是这些值的一些描述;

描述
flex-grow一个数字,规定项目将相对于其他灵活的项目进行扩展的量
flex-shrink一个数字,规定项目将相对于其灵活的项目进行缩小的量
flex-basis项目的长度,合法值:‘auto’,'inherit’或后面跟"%",“px”,"em"或任何其他长度单位的数字
auto与 1 1 auto 相同
none与 0 0 auto 相同
initial设置该属性位默认值 即 0 1 auto
inherit从父元素继承该属性

三. flex一些常见的值, 以及使用场景

3.1 flex:initial 使用场景

flex: initial 等同于设置 flex: 0 1 auto是 flex属性的默认值

适用场景

initial表示CSS属性的初始值, 通常用来还原已经设置的CSS属性,一般父节点设置display:flex,子节点不设置属性则css默认默认表现为flex:initial

在这里插入图片描述
上图所示的布局效果常见于按钮,标题,小图标等小组件的排版布局

3.2 flex:0 和 flex:node 适用场景

flex:0等同于设置flex:0 1 0

flex: auto 等同于设置 flex: 0 0 auto

	    .box1 div{ /*实验组*/
            flex: 0;
        }

在这里插入图片描述

        .box1 div{ /*实验组*/
            flex: none;
        }

在这里插入图片描述

3.3 flex:1 和 flex:auto

flex:1 等同于设置 flex:1 1 0
flex:auto等同于设置flex: 1 1 auto

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <style>
        .box1, .box2 {
            width: 300px;
            height: 300px;
            display: flex;
            background-color: lavender;
            align-items: center; /*从轴居中*/
        }

        .box1 div, .box2 div {
            width: 100px;
            height: 100px;
        }
        .b1c1{
            flex: auto;
        }
        .b1c2{
            flex:1;
        }
        section div:first-child {
            background-color: #4CAF50;
        }
        section div:nth-child(2) {
            background-color: #535bf2;
        }
        section div:nth-child(3) {
            background-color: #2c3e50;
        }


    </style>
</head>
<body>

<h3>实验组:</h3>
<section class="box1">
    <div class="b1c1">b1c1 使用flex:auto</div>
    <div class="b1c2">b1c2 使用flex:1</div>
    <div class="b1c3">b1c3</div>
</section>

<br>
<br>

<h3>对照组:</h3>
<section class="box2">
    <div class="b2c1">b2c1</div>
    <div class="b2c2">b2c2</div>
    <div class="b2c3">b2c3</div>
</section>

</body>
</html>

在这里插入图片描述

        .box1, .box2 {
            width: 500px;
            height: 300px;
            display: flex;
            background-color: lavender;
            align-items: center; /*从轴居中*/
        }

在这里插入图片描述

上面两图体现了flex:1flex:auto的区别,虽然都是充分分配容器的尺寸,但是flex:1的尺寸表现得更加内链(他会优先牺牲自己的宽度),flex:auto的尺寸表现更为霸道(优先扩展自己的尺寸)

适用flex:1的场景

当希望元素充分利用剩余空间,同时不会侵占其他元素应有的宽度的时候,适合使用flex:1,
这样的场景在Flex布局中非常的多

例如所有的等分列表,或者等比例列表都适合使用flex:1或者其他的flex数值,

适用flex:auto的场景
当希望元素充分利用剩余空间,但是各子的尺寸按照各子内容进行分配的时候,适合使用flex:auto
例如导航菜单,整体设置为200px,内部设置flex:auto,会自动按照内容比例进行分配宽度

3.4 总结

最后总结一下:

  • flex:initial表示默认的状态,无需设置,适合小控件元素的分布布局,或者某一项内容动态变化的布局

  • flex:0适用场景较少,适合设置在替换元素的父元素上,

  • flex:none适用于不换行的呢绒固定或者较少的小控件元素上,如按钮

  • flex:1适合等分布局

  • flex:auto适合基于内容动态适配的布局

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

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

相关文章

54 openEuler搭建Mariadb数据库服务器-Mariadb介绍

文章目录54 openEuler搭建Mariadb数据库服务器-Mariadb介绍54.1 MariaDB的架构54.2 MariaDB的存储引擎54 openEuler搭建Mariadb数据库服务器-Mariadb介绍 MariaDB数据库管理系统是MySQL的一个分支&#xff0c;主要由开源社区在维护&#xff0c;采用GPL授权许可。MariaDB的目的…

零售数据分析操作篇14:利用内存计算做销售筛选分析

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 上一讲讲了图表间联动的应用场景&#xff0c;即当我们点击某个图表时&#xff0c;会影响其他图表一起变化&#xff0c;而变化背…

Vue3 Element-plus el-menu无限级菜单组件封装

对于element中提供给我们的el-menu组件最多可以实现三层嵌套&#xff0c;如果多一层数据只能自己通过变量去加一层&#xff0c;如果加了两层、三层这种往往是行不通的&#xff0c;所以只能进行封装 效果图一、定义数据 MenuData.ts export default [{id: "1",name:…

spring boot 访问HTML

HTML整合spring boot简介默认文件路径访问自定义文件路径访问或通过Controller控制器层跳转访问简介 SpringBoot默认的页面映射路径&#xff08;即模板文件存放的位置&#xff09;为“classpath:/templates/*.html”。静态文件路径为“classpath:/static/”&#xff0c;其中可…

三菱FX3U PLC计米轮功能块(完整ST代码)

计米轮功能块(wheel_FB)详细计米、测速原理请参看下面的博客: PLC高速脉冲输入计米轮模块(编码器测速/计米详细讲解)_RXXW_Dor的博客-CSDN博客线缆行业单绞机PLC控制算法详细解读可以参看下面的文章链接:线缆行业单绞机控制算法(详细图解+代码)_RXXW_Dor的博客-CSDN博客在…

大佬入局AI,职场人有新机会了?

卸任搜狗CEO一年半后&#xff0c;王小川宣布在AI大模型领域创业&#xff0c;与前搜狗COO茹立云联合成立人工智能公司百川智能&#xff0c;打造中国版的OpenAI&#xff0c;并对媒体表示&#xff1a;“追上ChatGPT水平&#xff0c;我觉得今年内可能就能够实现&#xff0c;但对于G…

第六天 CUDA内存管理

操作内存分配和数据复制过程概述 在gpu上开辟一块空间&#xff0c;并把地址记录在mem_device上在cpu上开辟一块空间&#xff0c;并把地址记录在mem_host上&#xff0c;并修改了该地址所指区域的第二个值把mem_host所指区域的数据都复制到mem_device的所指区域在cpu上开辟一块空…

面试代码——排序算法【建议收藏】

最近家里小朋友准备计算机类的研究生复试&#xff0c;可能会考到常见的排序算法&#xff0c;于是帮助整理一波&#xff0c;顺带复习下相关知识&#xff0c;考验下自己的编码能力&#xff1b; 关于排序算法&#xff0c;网上关于排序算法的帖子和代码也比较多&#xff0c;有的帖…

万字长文介绍R package “vegan”——入门学习与重复文献数据

vegan介绍与入门 vegan是一个用于群落生态学&#xff08;community ecology&#xff09;分析的包&#xff0c;可以进行排序、多样性和差异性分析&#xff08;ordination, diversity and dissimilarity&#xff09;。 vegan包含了多样性分析、排序方法和差异性分析的工具。 示…

L2-043 龙龙送外卖

L2-043 龙龙送外卖 题目描述&#xff1a; 给你n个点&#xff0c;m次询问&#xff0c;n个点构成一棵树 给出n个点&#xff0c;每个点的父节点 你现在在根结点&#xff0c;对于每次询问i&#xff0c;你都要回答&#xff0c;从根结点出发&#xff0c;至少经历1到i次询问的每个点1…

构建用户画像完整版

01 画像平台产品架构 上图是基于快看数据中台画像平台产品的理解和定位整理出来的产品架构。 画像平台首先是服务于业务的&#xff0c;运营可以基于画像平台对单个用户或者人群包做画像的洞察&#xff0c;平台服务的业务应用层包含&#xff1a; &#xff08;1&#xff09;个…

【C++初阶】(入门)命名空间

在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污染&#xff0c;namespace关键字…

【文章学习系列之模型】FEDformer

本章内容文章概况模型流程主要结构Frequency Enhanced Decomposition Architecture&#xff08;频率增强分解结构&#xff09;Fourier enhanced blocks and Wavelet enhanced blocks&#xff08;傅里叶增强模块和小波增强模块&#xff09;Fourier Enhanced Structure&#xff0…

基于Segment anything的实例分割半自动标注

介绍 使用Meta AI的SAM,并添加了一个基本界面来标记图像,并保存COCO格式的掩码。 源码 https://github.com/anuragxel/salt 安装 安装SAM;创建conda虚拟环境,使用conda env create -f environment.yaml;安装coco-viewer来快速可视化标注结果。使用方法 1、将图片放入到…

WSL下的Kafka开发容器:Docker搭建、API、整合

背景介绍 Kafka是一个分布式流处理平台&#xff0c;可以处理大规模数据流并支持实时数据流的处理。 本文介绍了如何在WSL下使用Docker搭建Kafka容器&#xff0c;并使用Python的kafka-python库和FastAPI框架实现了一个简单的API。同时&#xff0c;还将该服务整合到一个整体的d…

ssm异常处理

ssm异常处理 类上和方法上都要有注解&#xff1a; 类上的注解&#xff1a; 异常处理用到的注解&#xff0c;里面包含了其他的一些必须的注解&#xff0c;详解看下图 方法上的注解&#xff1a; 上面的要懂打配合 现在创建一个处理异常的工具类&#xff0c;加上前面提到的注…

CSRF与SSRF比较

CSRF与SSRF比较 参考&#xff1a;简述CSRF、SSRF的区别 CSRF CSRF&#xff0c;全名 Cross-site requestforgery&#xff0c;也就是 跨站请求伪造。XSS是跨站脚本攻击。与XSS比较&#xff0c;XSS攻击是跨站脚本攻击&#xff0c;CSRF是跨站请求伪造&#xff0c;也就是说CSRF攻…

【Redis】入门篇之相关概念与Redis的安装

目录 一、关系型数据库与非关系型数据库 1、非关系数据库的种类 2、关系型数据库与非关系型数据库的区别 二、认识Redis 1、概念 2、特点 1.键值型 2.单线程 3.低延迟、速度快 4.支持数据持久化 5.支持主从集群、分片集群 6.支持多语言客户端 三、Redis的安装 1、…

IO-IO基础

简介 IO流&#xff0c;以计算机内存为主体&#xff0c;从内存到网络/磁盘等其他地方叫输出流(内存往外出)&#xff1b;网络/磁盘等其他地方写到内存叫输入流&#xff08;往内存输入&#xff09;。 Java中的IO流 4个抽象基类 InputStream/Reader(读到内存里) 所有的输入流的基…

环境变量详解

目录 环境变量是什么&#xff1f; 常见环境变量 查看环境变量 指令查看 代码查看 系统调用查看 本地变量 环境变量全局性 环境变量是什么&#xff1f; 我们要执行一个我们所写的c/c程序时&#xff0c;需要./可执行文件&#xff0c;告诉操作系统你在哪里&#xff0c…