首页 > 其他分享 >flexbox(弹性布局)

flexbox(弹性布局)

时间:2022-10-04 12:55:28浏览次数:81  
标签:flex 元素 flexbox align 布局 弹性 对齐 项目 属性

flexbox布局模块

注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

设置弹性布局的方法

通过将 display 属性设置为 flex,flex 容器将可伸缩

点击查看代码
<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
  display: flex;
  background-color: DodgerBlue;
}

.flex-container > div {
  background-color: #f1f1f1;
  margin: 10px;
  padding: 20px;
  font-size: 30px;
}
</style>
</head>
<body>

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>  
</div>

<p>弹性布局中必须有一个 <em>display</em> 属性设置为 <em>flex</em> 的父元素。</p>

<p>弹性容器的直接子元素会自动成为弹性项目。</p>

</body>
</html>

父元素(容器)属性

父元素设置属性控制子元素的显示方式

属性 描述
flex-direction 定义容器要在哪个方向上堆叠 flex 项目
flex-wrap 规定是否应该对 flex 项目换行
flex-flow flex-direction 和flex-wrap的简写形式,默认是 row nowrap
justify-content 用于水平对齐 flex 项目
align-items 单行的副轴对齐方式(垂直对齐 flex 项目)
align-content 多行的副轴对齐方式

flex-direction属性

flex-direction 属性定义容器要在哪个方向上堆叠 flex 项目。

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

flex-wrap属性

flex-wrap 属性规定是否应该对 flex 项目换行。

描述
nowrap(默认值) 默认不换行。
wrap 换行,第二行在第一行下面,从左到右
wrap-reverse 换行,第二行在第一行上面,从左到右

nowrap:不换行,如果子元素超过父元素的宽度或者高度,会自动压缩子元素的宽度

flex-flow属性

flex-flow:是flex-direction 和flex-wrap的简写形式,默认是 row nowrap

.flex-container {
  display: flex;
  flex-flow: row wrap;
}

justify-content 属性

justify-content 属性用于水平对齐 flex 项目:

描述
flex-start(默认值) 左对齐
flex-end 右对齐
center 居中
space-between 两端对齐,项目之间的间隔都相等。
space-around 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

注意区分space-between和space-around
space-between:

space-around:

align-items 属性(单行的副轴对齐方式)

align-items 属性用于单行flex属性布局
单行的副轴对齐方式

如果flex-direction:row和row-reverse 那么交叉轴就是y轴,如果是column和column-reverse那么交叉轴是x轴

描述
stretch(默认) 拉伸 flex 项目以填充容器(子元素不设置高度,那么高度将沾满整个父元素)
flex-start 将 flex 项目在容器顶部对齐
center 居中
flex-end 将弹性项目在容器底部对齐
baseline 使 flex 项目的第一行文字的基线对齐image

align-content属性(多行的副轴对齐方式)

align-content属性用于有多行flex元素时使用
此属性只在flex容器中有多行flex元素时才有作用,否则将失效

注:对于值的描述并不准确,只是为了我个人方便理解
如果flex-direction:row和row-reverse 那么交叉轴就是y轴,如果是column和column-reverse那么交叉轴是x轴

描述
stretch(默认值) 自动拉伸元素高度把容器的高度占满image
flex-start 对齐容器的上顶点image
flex-end 元素下沉到容器底部image
center 元素在整个容器的中线位置image
space-between 元素的垂直间隔平均分布image
space-around 每根轴线两侧的间隔都相等image

子元素(项目)属性

flex 容器的直接子元素会自动成为弹性(flex)项目。
order:改变项目的排列顺序
flex-grow:
flex-shrink:
flex-basis:
flex:
align-self:

order属性(改变项目的排列顺序)

  • order 子元素排列的位置默认是按照html先后顺序来排列的,html结构谁在前面默认就排列在前面;order的作用就是改变子元素排列顺序
  • order 值必须是数字,默认值是 0。
  • 数字越大越靠后,可以为负数

flex-grow属性(放大比例)

某个 flex 项目相对于其余 flex 项目将增长多少

  • 当有剩余空间时, flex元素会根据flex-grow按比例分配剩余空间
  • 默认值0代表, 即使有剩余空间, 该flex元素也不放大

flex-shrink属性(缩小比例)

某个 flex 项目相对于其余 flex 项目将收缩多少

  • 当flex容器空间不足时, flex元素会根据flex-shrink按比例缩小
  • flex-shrink为0则表示, 即使flex容器空间不足, 该flex元素也不缩小

flex-basis属性(定义初始长度)

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

例:

  • flex-basis:200px ,如果项目有多余的空间,设置为200px。那么会放大到200的宽度

flex属性

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

实例:

使第三个弹性项目不可增长(0),不可收缩(0),且初始长度为 200 像素
<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
  display: flex;
  align-items: stretch;
  background-color: #f1f1f1;
}

.flex-container>div {
  background-color: DodgerBlue;
  color: white;
  width: 100px;
  margin: 10px;
  text-align: center;
  line-height: 75px;
  font-size: 30px;
}
</style>
</head>
<body>
<h1>flex 属性</h1>

<p>使第三个弹性项目不可增长(0),不可收缩(0),且初始长度为 200 像素:</p>

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex: 0 0 200px">3</div>
  <div>4</div>
</div>

</body>
</html>

align-self 属性

  • align-self 属性规定弹性容器内所选项目的对齐方式。
  • align-self 属性将覆盖容器的 align-items 属性所设置的默认对齐方式。
  • align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
  • 除了auto是表示继承父元素,其他的值跟align-items是一样的

参考地址

flex布局教程:语法篇

标签:flex,元素,flexbox,align,布局,弹性,对齐,项目,属性
From: https://www.cnblogs.com/liuhousheng/p/16751960.html

相关文章

  • flex布局常见问题
    flex布局常见问题问题描述在使用flex布局时,经常会设置justify-content:space-between,设置后最后一行样式会变成:解决办法最后一行也会向两边对齐,一般情况下,这并不是......
  • flutter系列之:深入理解布局的基础constraints
    目录​​简介​​​​Tight和looseconstraints​​​​理解constraints的原则​​​​总结​​简介我们在flutter中使用layout的时候需要经常对组件进行一些大小的限制,这种......
  • 浮动布局
    一、理解当元素添加了浮动后,元素就会脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素就会停下来,同时会影响后面的元素的排版脱离文档流:元素相当于漂浮......
  • SAP UI5 应用 SimpleForm 控件 ResponsiveGridLayout 布局的工作原理深入剖析试读版
    写作动机笔者在编写本步骤时,在网上搜索了一番,没有找到高质量的中文技术文章,能够讲清楚SAPUI5的屏幕尺寸检测机制。同时SAPUI5XML视图里很多带有S,M,L和XL后缀的控......
  • 弹性响应蒸馏 | 用弹性响应蒸馏克服增量目标检测中的灾难性遗忘
     ​​欢迎关注我的公众号[极智视界],获取我的更多笔记分享​​ 大家好,我是极智视界,本文解读一下用弹性蒸馏克服增量目标检测中的灾难性遗忘。 传统的目标检测不适用......
  • CSS页面布局方式
    css页面布局方式1.标准流<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>/*标准流:行内的一排一......
  • 弹性布局(display:flex;)属性详解
    https://www.cnblogs.com/hellocd/p/10443237.html Flexbox 是flexiblebox的简称(注:意思是“灵活的盒子容器”),是 CSS3 引入的新的布局模式。它决定了元素如何在......
  • 24.弹性盒子简介
    弹性盒简介1、基本概念弹性盒flex(弹性盒、伸缩盒)是css中的又一种布局手段,它主要用来代替浮动来完成页面的布局flex可以使元素具有弹性,让元素可以跟随页面的大小的改......
  • qt的布局管理和样式表
    qt的布局管理和样式表一、布局管理对于一个完善的软件,布局管理却是必不可少的。无论是想要界面中部件有一个很整齐的排列,还是想要界面能适应窗口的大小变化,都要进行布局......
  • flex 布局
    一任何元素都可以使用flex布局.a{display:flex}行内元素也可以使用flex布局.b{diaplay:inline-flex;}容器:采用flex布局的元素被称为容器项目:在flex......