前端开发_HTML5_布局-弹性盒子布局

弹性盒子布局

1.概述

   弹性盒子布局又称为弹性布局,是W3C于2009年推出的一种布局方式,可以简单、快速、响应式的实现各种布局页面。使用弹性布局可以创建对浏览器窗口响应良好的流动界面。其主要是通过包含元素之间分配容器块中未使用的空间来实现的。

2.弹性布局原理

   弹性布局一般情况是由弹性布局的容器(flex containner)和弹性布局的伸缩项目(flex item)。

   其中:flex containner是指采用了弹性布局的DOM元素

           flex item是指容器中包含的子DOM元素

 由justfy-content属性确定主轴方向,然后伸缩项目(flex item)默认会沿着主轴进行排列,然后单个伸缩项目的大小由main size和cross size 决定宽度和高度。

3.弹性布局的相关属性

  (1).弹性布局基本的相关属性

弹性布局相关的属性

display:设置display的值为flex的时候,创建弹性布局的容器

flex-direction:设置伸缩流的方向。其值主要有:
               row:默认值,主轴方向为水平方向,伸缩项目的排列顺序于页面的文档顺序一致。
       row-reverse:主轴方向为水平方向,伸缩项目的排列顺序于页面的文档顺序相反(实质就是反转)。
            column:主轴为垂直方向,排列顺序为从从上到下的顺序排列。
    column-reverse:主轴为垂直方向,排列顺序为从从下到上的顺序排列(实质就是反转)。


flex-wrap:伸缩流换行,实质就是当内容排布在主轴方向上的时候,如果内容量太多,是否选择换行的问题。其 
          值主要有以下几个:
          nowrap:默认值伸缩项目只沾满容器主轴方向上的一行,由于限制不换行,所以可能会出现重叠或者 
                 是内容超出范围的情况。
            wrap:当伸缩项目沾满容器主轴方向上的一行的时候,多出来的部分将会出现换行。

flex-flow:伸缩流,包含了伸缩流换行和方向,是上述两个值的符合属性。

justfy-content:设置伸缩项目在主轴方向进行排布的时候的对齐方式,其值主要由以下几个:
          flex-start:默认值,伸缩项目从容器的最左侧开始排布
            flex-end:伸缩项目从容器的最右侧开始排布
              center:伸缩项目位于容器的中心
       space-between:伸缩项目位于各行之间留有空白的容器内部,注意:从两边开始,然后中间的每一个间隔 
                     之间都有空白。
        space-around:伸缩项目均匀的分布在中间,然后第一个伸缩项目之前,最后一个伸缩项目之后,每一 
                     个伸缩项目都使用空格隔开。

flex:用于设置或者是检索弹性模型对象的子元素如何分配空间,是flex-grow、flex-shrink和flex-basic 
     属性的一个简写,也即是我们所说的伸缩性,其默认值值为:flex:0 1 auto;我们在理解这一个参数的时 
     候可以理解为是整个区域划分的份数。
         
order:设置子元素出现的顺序,默认值是0,设置的值越小就最先出现在前面。

flex-grow:扩展比率,设置项目相对于其他灵活的项目的进行扩展的量,其值是一个数字。

flex-shrink:收缩比率,设置项目相对于其他灵活的项目的进行收缩的量,其值是一个数字。

    (2).弹性布局基本的相关属性代码实现以及效果

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<style type="text/css">
			*{
				margin: 0px;
				padding: 0px;
			}
			p{
				font-size: 28px;
				font-family: "宋体";
				color: #00007F;
			}
			
			.containner{
				display: flex;
				justify-content: flex-start;
				flex-wrap: nowrap;
			}
			
			.box{
				width: 50px;
				height: 50px;
				border: 1px solid black;
			}
			
			/**------------flex-----------------**/
			.a{
				background-color: #00AA00;
			}
			
			.b{
				background-color: #ff5500;
				flex: 1 1 auto;
			}
			
			.c{
				background-color: #55ffff;
			}
			
			/**------------flex + order--------------------**/
			.d{
				background-color: #00AA00;
				flex: 1;
				order: 2;
			}
			
			.e{
				background-color: #ff5500;
				flex: 1;
				order: 3;
			}
			
			.f{
				background-color: #55ffff;
				flex: 1;
				border: 1;
			}
			
			/**------------justfy-content--------------------**/
			.containner1{
				display: flex;
				justify-content: flex-start;
				flex-wrap: nowrap;
			}
			.containner2{
				display: flex;
				justify-content: flex-end;
				flex-wrap: nowrap;
			}
			.containner3{
				display: flex;
				justify-content: space-around;
				flex-wrap: nowrap;
			}
			.g{
				background-color: #00AA00;
				
			}
			
			.h{
				background-color: #ff5500;
				
			}
			
			.i{
				background-color: #55ffff;
			}
</style>
<body>
		<p>测试属性:flex: 1 1 auto;等价于:flex-grow:1,flex-shrink:1,flex-basic:auto</p>
		<div class="containner">
			<div class="box a">
			</div>
			<div class="box b">
			</div>
			<div class="box c">
			</div>
		</div>
		
		<p>测试属性:flex实现区域的等比划分;order属性实现区域的先后排布顺序</p>
		<div class="containner">
			<div class="box d">
			</div>
			<div class="box e">
			</div>
			<div class="box f">
			</div>
		</div>
		<p>justfy-content属性测试</p>
		<p>justfy-content:flex-start</p>
		<div class="containner1">
			<div class="box g">
			</div>
			<div class="box h">
			</div>
			<div class="box i">
			</div>
		</div>
		
		<p>justfy-content:flex-end</p>
		<div class="containner2">
			<div class="box g">
			</div>
			<div class="box h">
			</div>
			<div class="box i">
			</div>
		</div>
		
		<p>justfy-content:space-around</p>
		<div class="containner3">
			<div class="box g">
			</div>
			<div class="box h">
			</div>
			<div class="box i">
			</div>
		</div>
</body>

 4.弹性布局的实际应用例子(内容排布随着屏幕宽度的变化而发生改变)

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<style type="text/css">
			*{
				margin: 0px;
				padding: 0px;
			}
			.containner{
				display: flex;
				justify-content: flex-start;
				flex-wrap: wrap;
			}
			.box{
				width: 250px;
				height: 250px;
				border: 1px solid #00AA00;
				margin: 50px;
				font-size: 25px;
				font-family: "宋体";
				color: #00009f;
				background-color: #aaff7f;
				text-align: center;
				
			}
			.box:hover{
				background-color: #ffff00;
				color: #000000;
			}
			
			#author{
				font-size: 18px;
				color: #FF0000;
				margin-left: 50px;
			}
</style>
<body>
		<div class="containner">
			<div class="box cont1">
				<p>江雪</p>
				<p id="author">---柳宗元</p>
				<p>千山鸟飞绝,</p>
				<p>万径人踪灭。</p>
				<p>孤舟蓑笠翁,</p>
				<p>独钓寒江雪。</p>
			</div>
			<div class="box cont2">
				<p>静夜思</p>
				<p id="author">---李白</p>
				<p>床前明月光,</p>
				<p>疑是地上霜。</p>
				<p>举头望明月,</p>
				<p>低头思故乡。</p>
			</div>
			<div class="box cont3">
				<p>鸟鸣涧</p>
				<p id="author">---王维</p>
				<p>人闲桂花落,</p>
				<p>夜静春山空。</p>
				<p>月出惊山鸟,</p>
				<p>时鸣春涧中。</p>
			</div>
			
		</div>
</body>

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔笛手7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值