广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >flex弹性布局详解
  • 838
分享到

flex弹性布局详解

2024-04-02 19:04:59 838人浏览 泡泡鱼
摘要

目录初了解基本概念属性容器属性(container)flex 项目属性(item属性)骰子布局实践初了解 在学习弹性布局之前首先就要明白其概念flex 就是flexible box的

初了解

学习弹性布局之前首先就要明白其概念
flex 就是flexible box的缩写,意为弹性布局,用来为盒装模型提供最大的灵活性
任何一个容器都可以指定为flex布局

.box{
  display: flex;
}

行内元素当然也可以使用flex布局

.box{
  display: inline-flex;
}

WEBkit 内核的浏览器,必须加上-webkit前缀。

.box{
  display: -webkit-flex; 
  display: flex;
}

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

基本概念

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。

在这里插入图片描述

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
以上这些基础概念,请务必牢记,下面说属性时,不再重复说明!

属性

容器属性(container)

  • flex-direction
  • justify-content
  • align-items
  • flex-wrap
  • align-content
  • flex-flow

1.flex-direction

flex items默认都是沿着main axis(主轴)从main start 开始往main end方向排布
	flex-direction决定了main axis的方向,有四个取值row(默认值)、row-reverse、column、column-reverse
.box {
  flex-direction: row | row-reverse | column | column-reverse;
}

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

2.justify-content

justify-content决定了flex item在main axis上的对齐方式
	
	flex-start(默认值):与main start对齐
	flex-end:与main end对齐
	center:居中
	space-between:flex items 之间的距离相等,与main start、main end两端对齐
	space-evenly: flex items 之间的距离相等,flex items与main start 、main end 之间的距离等于flex items之间的距离
	space-around :flex items 之间的距离相等,flex items与main start 、main end 之间的距离等于flex items之间的距离的一半

这个属性的目的主要就是为了排列main axis的item位置

在这里插入图片描述

在这里插入图片描述

当然,这些属性你可以自己尝试一下,这里就不再一一尝试了,但是注意,这些都是容器的属性,要写在容器的CSS中!

3.align-items

决定flex items在cross axis上的对齐方式
   
	nORMal:在弹性布局中,效果和stretch一样
	stretch:前提是items不设置高度,当flex items 在cross axis 方向的size为auto时,会自动拉伸至填充flex container(或者换句话说:如果项目未设置高度或设为auto,将占满整个容器的高度。)
	flex-satrt:与cross start 对齐
	flex-end:与cross end 对齐
	center:居中对齐
	baseline:与基准线对齐

4.flex-wrap

 决定了flex container 是单行还是多行
	nowrap(默认):单行
	wrap:多行
	//这个比较少用
	wrap-reverse:多行(对比wrap,cross start 与cross end相反)

默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

5 align-content

 决定了多行flex items 在cross axis的对齐方式 用法与justify-content相似 一个是横轴。一个控制竖轴
	stretch(默认值):与align-items的stretch类似,当items有高度的时候,无效果
	flex-start:与cross start 对齐
	flex-end :与cross end 对齐
	center:居中对齐
	space-between:flex items 之间的距离相等,与cross start、cross end两端对齐
	space-evently: flex items 之间的距离相等,flex items与cross start 、cross end 之间的距离等于flex items之间的距离
	space-around :flex items 之间的距离相等,flex items与cross start 、cross end 之间的距离等于flex items之间的距离的一半

6 flex-flow 是flex-direction与flex-wrap的简写

也就是说,当你使用这个属性的时候,你可以使用上述两个的属性值,例如:flex-flow: row wrap;(水平排列,多行显示)

flex 项目属性(item属性)

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • align-self
  • flex

1 order

 order 决定flex items的排布顺序  (用的不多)
	可以设置为任意整数(正整数、负整数、0),值越小越排在前面
	默认值为0

这个属性了解即可,说实话没怎么用过

2 align-self

 可以通过align-self 覆盖flex container 设置的align-items
	auto(默认值):遵从flex container的align-items设置
	stretch、flex-start、flex-end、center、baseline效果与align-items一致

相当于继承父元素的align-items属性,如果没有父元素,则等同于stretch。

3 flex-grow

决定了flex items如何扩展
	可以设置为任意非父数字(小数,整数 0),默认为0
	当flex container 在main axis方向上有剩余得size时,flex-grow属性才会有效
	
	如果所有flex items 的flex-grow 综合sum不超过1,这直接乘以剩余size就是扩展大小、
	如果超过1 扩展size=剩余size*flex-grow/sum

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

4 flex-shrink

flex-shrink (shrink 缩小,收缩)与flex-grow相似,一个扩展,一个伸缩 
	可以设置为任意非父数字(小数,整数 0),默认为1
	当flex items在main axis 方向上超过了flex container 的size flex-shrink属性才会生效、
	如果所有flex items 的flex-shrink 总和sum超过1,每个flex item 收缩的size为:
		flex item 超出flex container 的size*收缩比例/每个flex items 的收缩比例之和
	如果sum不超过1,每个flex item 收缩的size为:
		size = 超出的size * flex-shrink值
	flex items收缩后的最终size不能小于min-width\min-height

有扩大自然就会有缩小,flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。具体的可以自己动手尝试一下哦,最后将会给出一个骰子布局的案例!

5 flex-basis

用来设置flex items 在 main axis方向上的base size
	默认为auto,可以设置具体的宽度数值
	
	决定flex items最终base size 的因素,优先级从高到低
		max-width\max-height\min-width\min-height
		flex-basis
		width\height
		内容本身的size

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目(item)的本来大小。也可以设置跟width,height一样的宽高,表示item将占据固定的空间!

6 flex

flex 是flex-grow || flex-shink||flex-basis的简写
可以指定1 2 3个值 依次按照上述顺序!默认值为 0 1 auto
.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

注意:

该属性的默认值为 0 1 auto(注意顺序),后两个属性可选
该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。
如果需要这三个属性的时候,建议使用flex,而不是单独的三个分离的属性,因为浏览器会推算相关值

骰子布局实践

光说不练假把式,手撕代码真功夫!
下面利用flex写了几个骰子布局,可以参考一下!

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#container{
				background-color: #CCCCCC;
				height: 600px;
				width: 500px;
				
				display: flex;
				justify-content: space-evenly;
				align-items: center;
			}
			.item{
				background-color: yellow;
				width: 100px;
				height: 100px;
				
			}
			
			.one{
				
				display: flex;
				justify-content: center;
				align-items: center;
			}
			
			.item-one{
				display: block;
				height: 20px;
				width: 20px;
				background-color: #1890FF;
				border-radius: 50%;
			}
			
			.two{
				
				display: flex;
				justify-content: space-between;
			}
			.two span{
				margin: 2px;
				display: block;
				height: 20px;
				width: 20px;
				border-radius: 50%;
				background-color: #1890FF;
			}
			.two2{
				align-self: center;
			}
			.two3{
				align-self: flex-end;
			}
			
			.three{
				display: flex;
				justify-content: space-around;
			}
			.three span{
				display: block;
				height: 20px;
				width: 20px;
				border-radius: 50%;
				background-color: #1890FF;
			}
			#three_one, #three_three{
				padding: 2px;
				display: flex;
				flex-direction: column;
				justify-content: space-between;
			}
			#three_two{
				display: flex;
				flex-direction: column;
				justify-content: center;
			}
			
			.four{
				display: flex;
				justify-content: space-around;
			}
			.four span{
				display: block;
				height: 20px;
				width: 20px;
				border-radius: 50%;
				background-color: #1890FF;
			}
			#four1,#four2{
				padding: 2px;
				display: flex;
				flex-direction: column;
				justify-content: space-between;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<!-- 一个点居中 -->
			<div class="item one">
				<span class="item-one"></span>
			</div>
			<!-- 三点 -->
			<div class="item two">
				<span class="two1"></span>
				<span class="two2"></span>
				<span class="two3"></span>
			</div>
			<!-- 五点 -->
			<div class="item three">
				<div id="three_one">
					<span></span>
					<span></span>
				</div>
				<div id="three_two">
					<span></span>
				</div>
				<div id="three_three">
					<span></span>
					<span></span>
				</div>
			</div>
			<!-- 六点 -->
			<div class="item four">
				<div id="four1">
					<span></span>
					<span></span>
					<span></span>
				</div>
				<div id="four2">
					<span></span>
					<span></span>
					<span></span>
				</div>
			</div>
			
		</div>
	</body>
</html>

测试结果

到此这篇关于最详细完整的flex弹性布局的文章就介绍到这了,更多相关flex弹性布局内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: flex弹性布局详解

本文链接: https://www.lsjlt.com/news/143150.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • flex弹性布局详解
    目录初了解基本概念属性容器属性(container)flex 项目属性(item属性)骰子布局实践初了解 在学习弹性布局之前首先就要明白其概念flex 就是flexible box的...
    99+
    2022-11-13
  • CSS 弹性布局属性详解:flex 和 justify-content
    CSS 弹性布局属性详解:flex 和 justify-content在现代的网页设计中,弹性布局(flexbox)成为了一种非常有用的布局方式。弹性布局允许我们轻松地创建自适应且灵活的布局,以适应各种屏幕尺寸和设备类型。两个核心属性 fl...
    99+
    2023-10-24
    CSS 弹性布局 flex
  • CSS Flex弹性布局详解!常用的12个属性
    CSS Flex弹性布局是一种用于布局网页元素的技术,它通过一系列的属性来定义弹性容器和其内部元素的行为。以下是常用的12个CSS ...
    99+
    2023-10-10
    CSS
  • CSS3 实现 Flex 弹性布局
    今天就跟大家聊聊有关CSS3 实现 Flex 弹性布局,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、基本概念 //任何一个容器都可以指定为Flex布局。 .b...
    99+
    2023-06-08
  • flex弹性布局是什么
    这篇文章主要为大家展示了“flex弹性布局是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“flex弹性布局是什么”这篇文章吧。初了解在学习弹性布局之前首先就要明白其概念flex 就是flex...
    99+
    2023-06-29
  • flex(弹性布局)教程之常用布局
    目录一、Flex 布局是什么?任何一个容器都可以指定为 Flex 布局。行内元素也可以使用 Flex 布局。Webkit 内核的浏览器,必须加上-webkit前缀。二、常用布局公共样...
    99+
    2022-11-13
  • Flutter弹性布局基石flex算法flexible示例详解
    目录flex 布局算法非弹性组件在 main 轴受到的约束是 unboundedfit 参数ExpandedSpacerflex 布局算法 Flutter 弹性布局的基石 是 fl...
    99+
    2022-12-26
    Flutter弹性布局flex flexible Flutter弹性布局
  • CSS 弹性布局属性指南:flex-direction 和 flex-wrap
    CSS 弹性布局属性指南:flex-direction 和 flex-wrap在 CSS 弹性布局中,flex-direction 和 flex-wrap 是两个关键的属性,它们可以帮助我们更好地控制弹性盒子的排列方式和换行行为。本文将为您...
    99+
    2023-10-25
    弹性布局 flex-wrap flex-direction
  • 详解Css Flex 弹性布局与传统布局方式的比较与优缺点
    引言:随着Web应用的复杂性不断增加,页面布局也面临着更高的要求。CSS Flex 弹性布局作为一种新的布局方式,逐渐受到了前端开发者的青睐。本文将详细介绍 CSS Flex 弹性布局与传统布局方式的比较与优缺点,同时给出具体的代码示例,帮...
    99+
    2023-10-21
    CSS Flex 弹性布局 传统布局方式 比较与优缺点
  • CSS3的Flex弹性布局怎么应用
    本文小编为大家详细介绍“CSS3的Flex弹性布局怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS3的Flex弹性布局怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2022-10-19
  • css的flex弹性布局怎么应用
    本篇内容介绍了“css的flex弹性布局怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!案例基础布局html<ul c...
    99+
    2023-07-05
  • 如何使用Css Flex 弹性布局实现瀑布流布局
    随着网页设计的不断发展,瀑布流布局成为了一种非常流行的页面布局方式。与传统的网格布局不同,瀑布流布局能够自适应屏幕大小,并且呈现出独特的流动感。在本文中,我们将介绍如何使用CSS Flex 弹性布局来实现瀑布流布局,并提供具体的代码示例。C...
    99+
    2023-10-21
    瀑布流布局 弹性布局 CSS flex
  • 详解Css Flex 弹性布局在移动端开发中的应用
    在移动设备的普及和多样化的时代,响应式设计已经成为了Web开发的标配。而CSS Flex 弹性布局作为一种响应式设计的解决方案,能够很好地适应不同屏幕尺寸和设备方向的变化,因此在移动端开发中应用广泛。什么是CSS Flex 弹性布局CSS ...
    99+
    2023-10-21
    移动端开发 弹性布局 CSS flex
  • 详解Css Flex 弹性布局在博客文章列表中的应用
    引言:随着博客平台的发展,越来越多的博主开始关注博客的外观和布局设计,其中的一个重要因素就是博客文章列表的展示方式。在这方面,Css Flex 弹性布局是一种非常实用和灵活的解决方案。本文将详细介绍 Css Flex 弹性布局在博客文章列表...
    99+
    2023-10-21
    博客 弹性布局 CSS flex
  • 详解Css Flex 弹性布局中的缩放与旋转效果实现
    在前端开发中,弹性布局(Flex布局)是一种灵活的布局方式,它可以帮助我们更容易地实现各种布局效果。其中,缩放和旋转是常见的效果之一,本文将详细介绍在CSS Flex布局中如何实现缩放和旋转效果,并提供具体的代码示例。首先,我们先来了解一下...
    99+
    2023-10-21
    缩放 弹性布局 关键词:CSS Flex 旋转效果实现
  • 详解Css Flex 弹性布局中的换行与溢出处理方法
    CSS弹性布局(Flex)是CSS3中的一种新的布局方式,它能够帮助我们更加灵活地布局元素。在Flex弹性布局中,元素的布局仅依赖于父容器的设置,而不再需要复杂的相对或绝对定位。本文将详细介绍Flex布局中的换行与溢出处理方法,并结合具体的...
    99+
    2023-10-21
    弹性布局 (Flex) 换行处理方法 (Wrap) 溢出处理方法 (Overflow)
  • css中flex弹性布局的示例分析
    这篇文章将为大家详细讲解有关css中flex弹性布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。案例基础布局html<ul class="box">&...
    99+
    2023-06-08
  • 详解Css Flex 弹性布局在响应式图片展示中的应用
    过去,我们在网页上展示图片时,经常遇到的一个问题是如何使图片在不同屏幕尺寸下保持良好的显示效果。传统的CSS布局方法无法很好地解决这个问题,而CSS Flex弹性布局则是一种有效的解决方案。本文将详细介绍CSS Flex弹性布局在响应式图片...
    99+
    2023-10-21
    响应式 图片展示 弹性布局
  • 如何使用Css Flex 弹性布局实现滑动卡片布局
    在现代的Web开发中,弹性布局(Flexbox)变得越来越流行。它是一种用于定位和布局元素的CSS模块,能够轻松地实现各种复杂的布局效果。本文将介绍如何使用Flex弹性布局实现滑动卡片布局,并提供具体的代码示例。滑动卡片布局是一种常用的UI...
    99+
    2023-10-21
    滑动 弹性布局 卡片布局
  • 如何使用Css Flex 弹性布局创建响应式卡片布局
    在现代网页设计中,响应式布局是一种必不可少的设计方式。而弹性布局(Flexbox)是一种强大而灵活的布局模型,可以让我们更轻松地创建响应式布局。本文将介绍如何使用Css Flex 弹性布局创建一个简单的响应式卡片布局,并提供具体的代码示例。...
    99+
    2023-10-21
    响应式 布局 CSS flex
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作