详解CSS中的flex布局

news2024/11/19 5:25:15

详解CSS中的flex布局

    • 1、概念
    • 2、容器属性
      • 2.1 flex-direction
      • 2.2 flex-wrap
      • 2.3 flew-flow
      • 2.4 justify-content
      • 2.5 align-items
      • 2.6 align-content
    • 3、元素属性
      • 3.1 order
      • 3.2 flex-grow
      • 3.3 flex-shrink
      • 3.4 flex-basis
      • 3.5 flex
      • 3.6 align-self

1、概念

弹性盒子(display: flex)是把设置此属性的这块区域(设置此属性的元素)变为弹性盒子,使得此元素的直接子元素按照从左到右的顺序一行排列如果盒子变小(比子元素的宽度或高度小),里面的直接子元素会随着盒子的变化而变化,同时一直保持从左往右一行排列的布局。

2、容器属性

2.1 flex-direction

.wrap{
    flex-direction: row | row-reverse | column | column=reverse;
}

包含四个属性值:

  • row: 默认值,表示沿水平方向,由左到右;
  • row-reverse :表示沿水平方向,由右到左;
  • column:表示垂直方向,由上到下;
  • column-reverse:表示垂直方向,由下到上

2.2 flex-wrap

.wrap{
    flex-wrap: nowrap | wrap | wrap-reverse;
}

包含三个属性值:

  • nowrap:表示不换行

在这里插入图片描述

说明:设置的宽度失效,强行在一行显示

  • wrap:正常换行,第一个位于第一行的第一个
    在这里插入图片描述
  • wrap-reverse:向上换行,第一行位于下方
    在这里插入图片描述

2.3 flew-flow

flex-flow属性是flex-deriction和flex-wrap属性的简写,默认值为[row nowrap]
第一个属性值为flex-direction的属性值
第二个属性值为flex-wrap的属性值

2.4 justify-content

.wrap{
    justify-content: flex-start | flex-end | center |space-between | space-around | space-evenly
}

该属性主要要六个属性值:

  • flex-start:默认值,左对齐
    在这里插入图片描述
  • flex-end:右对齐

在这里插入图片描述

  • center:居中对齐

在这里插入图片描述

  • space-between:两端对齐
    在这里插入图片描述
  • space-around:每个项目两侧的间距相等

![、](https://img-blog.csdnimg.cn/8b5b3935c55746208d157d7d8f78fc09.pn

  • space-evenly:每个元素之间和元素距离边距的距离都相等
    在这里插入图片描述

2.5 align-items

.wrap{
    align-items: flex-start | flex-end | center | baseline | stretch
}

该属性主要有五个属性值:(以交叉轴从上向下为例)

  • flex-start: 交叉轴的起点对齐
    在这里插入图片描述
  • flex-end:交叉轴的终点对齐
    在这里插入图片描述
  • center:交叉轴居中对齐
    在这里插入图片描述
  • baseline 项目的第一行文字的基线对齐

在这里插入图片描述

  • stretch:默认值:如果项目未设置高度或者高度为auto,将占满整个容器的高度
    在这里插入图片描述

2.6 align-content

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
  • flex-start:与交叉轴的起点对齐。

在这里插入图片描述

  • flex-end:与交叉轴的终点对齐。
    在这里插入图片描述

  • center:与交叉轴的中点对齐。
    在这里插入图片描述

  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
    在这里插入图片描述

  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍
    在这里插入图片描述

  • stretch(默认值):轴线占满整个交叉轴。
    在这里插入图片描述

3、元素属性

3.1 order

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。有了这个属性,可以调整在HTML中出现的顺序。

3.2 flex-grow

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

flex-grow在 flex 容器下的子元素的宽度和比容器和小的时候起作用。 flex-grow定义了子元素的尺寸增长因子,容器中除去子元素之和剩下的尺寸会按照各个子元素的 flex-grow值进行平分加大到各个子元素上。

flex-grow: <number>; /* default 0 */

当所有的项目都以 flex-basis 的值进行排列后,仍有剩余空间,那么这时候 flex-grow 就会发挥作用了。
如果所有项目的 flex-grow 属性都为 1,则它们将等分剩余空间。(如果有的话)
如果一个项目的 flex-grow 属性为 2,其他项目都为 1,则前者占据的剩余空间将比其他项多一倍。如下图所示
在这里插入图片描述

3.3 flex-shrink

flex-shrink属性定义了项目的缩小比例,默认为1。
flex-shrink在 flex 容器下的子元素的宽度和比容器和大的时候起作用。 flex-shrink定义了子元素的尺寸缩小因子,子元素总尺寸减去容器得到的尺寸会按照各个子元素的 flex-shrink值进行平分缩小到各个子元素上。
取值:

  • 1:如果空间不足,该项目将缩小。
  • 0:如果空间不足,该项目不缩小。
  • 负值:对该属性无效。
flex-shrink: <number>; /* default 1 */

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。
如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
在这里插入图片描述

3.4 flex-basis

flex-basis定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。
默认值:auto,即项目本来的大小(采用元素内容的尺寸)。所以:给Flex元素的父元素声明display: flex,所有子元素会排成一行,且自动分配小大以充分展示元素的内容。

flex-basis: <length> | auto; /* default auto */

当主轴为水平方向的时候,若设置了 flex-basis,项目的宽度设置值会失效,flex-basis 需要跟 flex-grow 和 flex-shrink 配合使用才能发挥效果。

  • flex-basis 值为 0 % 时,会把该项目视为零尺寸;
  • flex-basis 值为 auto 时,则跟根据尺寸的设定值(假如为 100px),则这 100px 不会纳入剩余空间。

3.5 flex

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

特殊的取值

flex 取值为一个非负数字
此时则该数字为 flex-grow 值,flex-shrink 取 1,flex-basis 取 0%,如下两种写法是等同的:

.item {flex: 1;}
.item {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 0%;
}

flex 取值为 0 时
对应的三个值分别为 0 1 0%。如下两种写法是等同的:

.item {flex: 0;}
.item {
    flex-grow: 0;
    flex-shrink: 1;
    flex-basis: 0%;
}

flex 取值为一个长度或百分比
视为 flex-basis 值,flex-grow 取 1,flex-shrink 取 1,有如下等同情况(注意 0% 是一个百分比而不是一个非负数字)。如下两组都是等同的:

.item-1 {flex: 0%;}
.item-1 {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 0%;
}
.item-2 {flex: 24px;}
.item-2 {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 24px;
}

flex 取值为两个非负数字
分别视为 flex-grow 和 flex-shrink 的值,flex-basis 取 0%。如下两种写法是等同的:

.item {flex: 2 3;}
.item {
    flex-grow: 2;
    flex-shrink: 3;
    flex-basis: 0%;
}

flex 取值为一个非负数字和一个长度或百分比
分别视为 flex-grow 和 flex-basis 的值,flex-shrink 取 1。如下两种写法是等同的:

.item {flex: 11 32px;}
.item {
    flex-grow: 11;
    flex-shrink: 1;
    flex-basis: 32px;
}

3.6 align-self

align-self:允许单个项目有与其他项目不一样的对齐方式,会覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

align-self: auto | flex-start | flex-end | center | baseline | stretch;

上面六个取值中,除了auto,其他值与align-items属性完全一致。

典型使用场景

设置侧边栏固定:

html {
    scroll-padding-top: 150px;
}
 
.sidebar,.sidebar_lefe {
    top: 1em;
}

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

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

相关文章

如何系列 JMeter如何录制脚本

文章目录 方式1. 手动编写2. JMeter自带录制功能3. Fiddler录制4. Badboy录制5. Blazemeter录制 总结和使用感受 方式 1. 手动编写 最原始的方式&#xff0c;在线程组中根据研发提供的接口文档和浏览器的Network请求一个个手动录入&#xff0c;它可以提供更大的灵活性和控制力…

PostgreSQL 中的虚拟文件描述符

由于每个操作系统限制了一个进程能打开的文件数&#xff08;例如&#xff1a;ubuntu 为1024&#xff09;&#xff0c;因此进程能获得的文件描述符是有限的。对于经常需要打开许多文件的数据库进程来说&#xff0c;很容易会超过操作系统对于文件描述符数量的限制。 为解决这个问…

如何写好一份解决方案

1、前言 我们在日常工作中会不可避免要去编写各种方案&#xff0c;如技术方案、建设方案、项目建议书、实施方案、规划方案、解决方案等。 我们去浏览华为、阿里、腾讯、IBM、海尔等公司的官网&#xff0c;可以看到在首页比较显眼的位置&#xff0c;都有解决方案的入口&#…

Postcat X APISIX 合作插件 :一键同步,轻松配置到 APISIX

近日&#xff0c;云流科技&#xff08;广州&#xff09;有限公司&#xff08;简称“Eolink”&#xff09;旗下的开源 API 管理工具 Postcat 和深圳支流科技有限公司&#xff08;简称“API7 支流科技”&#xff09;在各自擅长的领域携手合作&#xff0c;推出了 Postcat & Ap…

R语言 tidyverse系列学习笔记(系列4)PlantGrowth - percentage table

本篇学习数据分析&#xff0c; Excel 表格制作 Task&#xff1a; 创建一个 行 百分比 表格 row percentage table 先看一下 PlantGrowth 数据集 library(dplyr)data("PlantGrowth") view(PlantGrowth)给数据集新加一列 weight_cat &#xff0c;并用 case_when 自定…

【React】: React的生命周期

概述 生命周期的每个阶段总是伴随着一些方法的调用&#xff0c;这些方法就是生命周期的钩子函数 钩子函数的作用&#xff1a;为开发人员在不同操作阶段提供了十几 只有 类组件 才有生命周期 生命周期的图片&#xff1a; 同时有&#xff1a; 1.1 创建时 的生命周期执行顺序 编写…

计划任务使用介绍

作者:lly 文章目录 前言一、使用说明1.1 发布模型1.2 创建并设置计划任务1.3 开启计划任务1.4 管理计划任务 二、结语 前言 iServer 11i(2023)对于处理自动化服务新增计划任务功能&#xff0c;该功能支持定时触发和监听文件变化触发执行模型&#xff0c;因此计划任务适用于以下…

Vite构建工具下Tinymce踩坑指南

背景 "vue": "^3.2.41","vite": "^3.2.3","tinymce": "^6.4.2","tinymce/tinymce-vue": "^5.1.0",坑1: 找不到zh-Hans.js等配置的文件 使用Tinymce需要配置中文汉化包、样式等。这些文件都是…

安全问题我们需要重视,立刻升级fastjson2

一、前言 小伙伴大家好&#xff0c;我是开源字节快速开发平台的作者。fastjson2.0 是fastjson的重要升级&#xff0c;目标是为下一个十年提供一个高性能的JSON库&#xff0c;同一套API支持JSON/JSONB两种协议。 近期fastjson 再报安全漏洞&#xff0c;直接给我们发送了高危告…

FastReport 2023.2新版, Delphi 和 Lazarus 核心产品将统一整合, 一起来看!

FastReport 是功能齐全的报表控件&#xff0c;可以帮助开发者可以快速并高效地为.NET&#xff0c;VCL&#xff0c;COM&#xff0c;ActiveX应用程序添加报表支持&#xff0c;由于其独特的编程原则&#xff0c;现在已经成为了Delphi平台最优秀的报表控件&#xff0c;支持将编程开…

风景类Midjouney prompt提示词

稳定输出优美风景壁纸的Midjouney prompt提示词。 1\在夏夜&#xff0c;有淡蓝色的星空&#xff0c;海边&#xff0c;流星&#xff0c;烟花&#xff0c;海滩上全是蓝色的玫瑰和绿色的植物&#xff0c;由Ivan Aivazovsky和Dan Mumford&#xff0c;趋势在cgsociety&#xff0c;柔…

HEIC→JPG

问题描述&#xff1a;图片格式由HEIC转JPG 解决办法&#xff1a;在网上找一个在线图片转格式的软件

我理解的参与开源贡献

坐标上海的E人&#xff0c;还在新手村练级的前端开发。曾闯荡过教育培训和零售管理行业&#xff0c;经历过大公司、外企&#xff0c;也和朋友的工作室合作过&#xff0c;斩获过一些能吓唬人的标签。好奇心很足&#xff0c;精力也很充沛&#xff0c;代码世界就是我现实生活中的霍…

【前后端实现文件下载或浏览】

前后端实现文件下载或浏览 背景前端后端java其他IO流分两种&#xff1b;字符流&字节流 背景 前端html\js\css,使用a标签或者iframe,笔者使用window.open(url)—重新打开标签页地址栏显示的接口路径;后端返回客户端[HttpServletResponse] 文件流&#xff08;以附件的方式[a…

建设现代化智慧十防档案室所需要的技术性方案

一、库房温湿度对档案的影响 库房的温湿度&#xff0c;过高过低都会影响档案制成材料的耐久性。高温高湿会加速纸张的老化水解&#xff0c;使危害档案制成材料的霉菌、细菌繁殖&#xff0c;并增强光化作用&#xff0c;使有害气体、灰尘吸附能力增大。但低温低湿会使纸张变脆&a…

VXLAN 主机VTEP(EVPN)

EVE环境模拟搭建一个基于主机VTEP的VXLAN数据中心网络。 实验里vtep是在linux主机上&#xff0c;同时linux主机还得有路由功能使VTEP的端点IP可达&#xff0c;所以两台linux服务器需要安装FRR。 数据转发平面使用VXLAN封装&#xff1b;在控制平面我打算选择使用EVPN和OVN两种不…

数据中台的商机

阿里拆中台了&#xff0c;很多人来问数据中台还要不要的问题&#xff0c;我认为中台总是要有的&#xff0c;无非是薄厚的问题。然后又有人来问数据中台价值创造的问题&#xff0c;这个其实是数据中台最核心的问题&#xff0c;我就来正式聊一聊&#xff0c;里面有很多的批判&…

T900:可以完美替代P900的国产900MHz无线跳频模块

目录 国产T900模块及其系列成品 T900模块 T900成品 国产T900模块及其系列成品 T900模块及其系列成品&#xff0c;是专门针对无人机及机器人行业设计的&#xff0c;尺寸小、性能优越&#xff0c;可以完美替代microhard的P900产品。下面向大家介绍下T900的相关情况&#xff1…

Dubbo负载均衡策略之 一致性哈希 | 京东云技术团队

本文主要讲解了一致性哈希算法的原理以及其存在的数据倾斜的问题&#xff0c;然后引出解决数据倾斜问题的方法&#xff0c;最后分析一致性哈希算法在Dubbo中的使用。通过这篇文章&#xff0c;可以了解到一致性哈希算法的原理以及这种算法存在的问题和解决方案。 一、负载均衡 …

STM32单片机(五)第二节:EXTI外部中断练习(对射式红外传感器计次和旋转编码器计次)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…