初学Flex弹性盒模型

前言

初次学习Flex布局,借此记录整理笔记。


一、Flex

介绍

  • 弹性盒模型,CSS的一种布局方式,可以代替float使用。
  • 元素具有弹性,跟随页面大小变化而变化。

基本概念

1.弹性容器

  • 使用Flex布局的基础,即将一个元素设为弹性容器
  • 设置方式:
    • 块级弹性容器
    • 行内弹性容器
	display:flex; 
	display:inline-flex;

2.弹性元素

  • 弹性容器的子元素为弹性元素
  • 可以嵌套声明,即弹性元素也可以为弹性容器

3.主轴

  • 弹性元素排列的方向

4.交叉轴(辅轴)

  • 与主轴垂直的方向

二、基本属性

1.容器的属性

  • flex-direction:
    • 属性值:row(默认值) | row-reverse | column | column-reverse
  • flex-wrap:
    • 属性值:nowrap(默认值) | wrap | wrap-reverse
  • justify-content:
    • 属性值:flex-start(默认值) | flex-end | center | space-start | space-end | space-evenly
  • align-items:
    • 属性值:stretch(默认值) | flex-start | flex-end | center | baseine
  • align-content:
    • 属性值:flex-start(默认值) | flex-end | center | space-start | space-end | space-evenly

flex-direction

指定弹性元素排序方式

row
  • 水平方向,自左向右,默认值
  • 此时主轴方向水平,自左向右
row-reverse
  • 水平反方向,自右向左
  • 此时主轴方向水平,自右向左
column
  • 竖直方向,自上向下
  • 此时主轴方向垂直,自上向下
column-reverse
  • 竖直反方向,自下向上
  • 此时主轴方向垂直,自下向上
	ul{
    
    
		display:flex;
        flex-direction: row|row-reverse|column|column-reverse 
    }

在这里插入图片描述

flex-wrap

指定元素是否自动换行

nowrap
  • 元素不会自动换行,默认值
wrap
  • 元素沿辅轴方向自动换行
wrap-reverse
  • 元素沿着辅轴反方向自动换行
	ul{
    
    
		display:flex;
        flex-direction:row;
        flex-wrap: nowrap|wrap|wrap-reverse;
	}

在这里插入图片描述

注意

  • flex-flow:
    • wrap和direction的简写属性,属性值无顺序要求,空格分隔

justify-content

指定主轴上剩余空间如何分配(元素在主轴上如何排列)

flex-start
  • 默认值,剩余空间不分配
  • 元素从主轴起点开始排列
flex-end
  • 剩余空间不分配
  • 元素从主轴终点开始排列
center
  • 元素在主轴上居中排列
  • 剩余空间分配在所有元素的两侧
space-around
  • 主轴剩余空间分配到每个元素两侧
  • 中间空间是边上空间的两倍
space-between
  • 主轴剩余空间均匀分配到元素中间
space-evenly
  • 主轴剩余空间分配到每个元素的单侧
  • 兼容性不高,谨慎使用
	ul{
    
    
		display:flex;
        justify-content: flex-start|flex-end|center|space-around|space-between|space-evenly;
	}

在这里插入图片描述

align-items

指定元素在辅轴上如何对齐

stretch
  • 默认值
  • 伸长元素,确保每行元素长度值相同,填满整行(元素未设置高度或高度为auto)
flex-start
  • 元素不伸长,沿(每行的)辅轴起点对齐
flex-end
  • 元素不伸长,沿(每行的)辅轴终点对齐
center
  • 沿(每行的)辅轴居中对齐
baseline
  • 以元素首行文字的基线对齐
  • 适用于元素文字大小不同,不常用
	ul{
    
    
		display:flex;
        align-items: stretch|flex-start|flex-end|center|baseline;
	}

自右向左

align-content

指定辅轴上剩余空间如何分配(元素在辅轴上如何排列),与 justify-content 属性类似

flex-start
  • 默认值,剩余空间不分配
  • 元素从辅轴起点开始排列
flex-end
  • 剩余空间不分配
  • 元素从辅轴终点开始排列
center
  • 元素在辅轴上居中排列
space-around
  • 辅轴剩余空间分配到每个元素两侧
  • 中间空间是边上空间的两倍
space-between
  • 辅轴剩余空间均匀分配到元素中间
space-evenly
  • 辅轴剩余空间分配到每个元素的单侧
  • 兼容性不高,谨慎使用
	ul{
    
    
		display:flex;
        align-content: flex-start|flex-end|center|space-around|space-between|space-evenly;
	}

在这里插入图片描述


2.元素的属性

  • order:
    • 属性值:0(默认值)
  • flex-grow:
    • 属性值:0(默认值)
  • flex-shrink:
    • 属性值:
  • flex-basis:
    • 属性值:
  • align-self:
    • 属性值:

order

指定元素排列顺序

  • 任意数字,数字大的元素排在后面
  • 默认值:0
	li:nth-child(1){
    
    
		order:2;
	}
		li:nth-child(2){
    
    
		order:3;
	}
		li:nth-child(3){
    
    
		order:1;
	}

在这里插入图片描述

flex-grow

指定元素的增长系数

  • 默认值:0
  • 将剩余空间按比列分配给元素,即元素按比例增长
	li:nth-child(1){
    
    
		flex-grow:0;
	}
		li:nth-child(2){
    
    
		flex-grow:3;
	}
		li:nth-child(3){
    
    
		flex-grow:1;
	}

在这里插入图片描述

flex-shrink

指定元素的缩减系数

  • 默认值:1
  • 缩减大小与缩减系数和元素自身大小有关
	li:nth-child(1){
    
    
		flex-shrink:0;
	}
		li:nth-child(2){
    
    
		flex-shrink:2;
	}
		li:nth-child(3){
    
    
		flex-shrink:15;
	}

在这里插入图片描述

flex-basis

指定元素在主轴上的初始大小

  • 主轴如果水平,则指定元素宽度;如果竖直,则指定元素高度
  • 默认值:auto(元素自身的高度或宽度)
  • 传值则改变元素的高度或宽度
	ul{
    
    
		dispaly:flex;
		flex-direction:row;
	}
	li:nth-child(1){
    
    
		flex-basis:auto;
	}
		li:nth-child(2){
    
    
		flex-basis:100px;
	}
		li:nth-child(3){
    
    
		flex-basis:10px;
	}
	ul{
    
    
		dispaly:flex;
		flex-direction:column;
	}
	li:nth-child(1){
    
    
		flex-basis:auto;
	}
		li:nth-child(2){
    
    
		flex-basis:100px;
	}
		li:nth-child(3){
    
    
		flex-basis:10px;
	}

在这里插入图片描述

注意

flex:

  • flex-grow 和 flex-shrink 和 flex-basis的简写属性,属性值有固定顺序
  • 属性值:
    • initial:
      相当于 flex: 0 1 auto;
      元素不会增长,但会缩减,会根据自身宽高设置尺寸
    • auto:
      相当于 flex: 1 1 auto;
      元素会增长,会缩减,会根据自身宽高设置尺寸
    • none
      相当于 flex: 0 0 auto;
      元素完全非弹性,不会增长,不会缩减,但会根据自身宽高设置尺寸

align-self

覆盖当前元素上的align-items

stretch
  • 默认值
  • 仅伸长此元素,填满整行(元素未设置高度或高度为auto)
flex-start
  • 不伸长此元素,仅使它沿(该行的)辅轴起点对齐
flex-end
  • 不伸长此元素,仅使它沿(该行的)辅轴终点对齐
center
  • 使此元素沿(该行的)辅轴居中对齐
baseline
  • 以元素首行文字的基线对齐
  • 适用于元素文字大小不同,不常用
	ul{
    
    
		display:flex;
		align-items:flex-start;
	}

	li:nth-child(1){
    
    
		align-self:stretch;
	}
	ul{
    
    
		display:flex;
		align-items:stretch;
	}
	li:nth-child(2){
    
    
		align-self:flex-start;
	}
	ul{
    
    
		display:flex;
		align-items:stretch;
	}
	li:nth-child(3){
    
    
		align-self:flex-end;
	}
	ul{
    
    
		display:flex;
		align-items:stretch;
	}
	li:nth-child(4){
    
    
		align-self:center;
	}
	ul{
    
    
		display:flex;
		align-items:stretch;
	}
	li:nth-child(5){
    
    
		align-self:baseline;
	}

在这里插入图片描述


学习视频:尚硅谷新版Web前端HTML5+CSS全套基础教程完全版(131,133-134集)

猜你喜欢

转载自blog.csdn.net/Xu__Y/article/details/113088413