封装flex布局---及flex简易解析--最简单入门上手flex布局

flex简介

布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。

2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

Flex布局为“弹性布局”。
任何一个容器都可以设置为flex布局,设置了flex属性的容器,其子成员元素都自动成为flex成员。

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

导读

******上方是我在初次学习flex布局时候网上所能得到的知识点。看的懵懵懂懂~觉得很难去理解,萌生了一种flex布局太难的念想,我当时刚学前端,第一次学flex就放弃了。过了大半年后我再来系统的学习flex和运用到项目中来,来和大家分享一下经验,帮助你们最快最容易的去上手和运用在你的项目中。跟着我来=>

举例解读flex

-①.简单flex生效
首先我们要知道,怎么让一个容器(拿div举例)具有flex属性,很简单

<div class="main">
   <div class="one">1</div>
   <div class="two">2</div>
</div>

//css部分
<style>
   .main{
      display:flex;
   }
</style>

先不看css部分,我们知道上方的布局是三个嵌套关系的div,div是块级元素。所以界面上的展现应该是1和2一行一行显示的,如下

1
2

但是我们给类main加了flex后,其具有了flex布局容器的效果,下方的第一层元素全为其成员,并且子元素的float、clear和vertical-align属性将失效。也就是说内嵌的两个div不是块级元素了。所以界面展示:

12

-②flex布局的常用布局效果实现(具体的属性查看官网)
当我们给容器设置了flex属性过后,其还有很多flex相关的css属性可以设置~

1.align-items:center中心轴对齐

display: flex;
align-items: center;/* 交叉轴上如何对齐,每个div中心轴对齐 */

理解一下中心轴对齐,因为我们默认的轴是主轴(还有垂直的交叉轴),所以我们这个效 果是子元素成员水平对齐。怎么说呢,上个效果图,让你们形象的理解一下:
中心轴对齐(主轴)
可以看到两个子元素的高度不一样,输入框要高于左右的文字描述,但是我们给父级容加 了flex布局和align-items:center后,中心轴对齐了!

2.justify-content 子元素排列的一个布局方式

这个有多种方式:
justify-content: center;/* 居中 */
justify-content: space-between;/* 两边排列 */
justify-content: space-around;/* 靠近两边,没有接触到旁边 */
justify-content: start;/* 靠近左侧 */

举例解释一下居中布局

 <div class="main">
   <div class="one">1</div>
   <div class="two">2</div>
   <div class="three">3</div>
</div>

//css部分
<style>
   .main{
      width:300px;
      display:flex;
      justify-content:center;
   }
</style>

在这里插入图片描述
子元素会基于父元素的宽度进行自适应居中布局。

封装flex

其他的属性就不举例了,看到这里基本flex布局你也有了一个大概的认识,但是在一个项目中如果每次在类中都要这样去写属性,比如:
justify-content: center;
justify-content: space-between;
justify-content: space-around;
justify-content: start;
会很长,浪费时间。我这边进行了一个flex的一个css简单封装,上代码:(css文件)


.f {
	display: flex;
	display:-webkit-flex;
	/* 设置为flex布局 */
}
.f-a-c {
	align-items: center;
	/* 交叉轴上如何对齐,每个div中心轴对齐 */
}
.f-a-b{
	align-items: baseline;
	/* 交叉轴上如何对齐,每个div中的第一行文字的基线(底部)对齐 */
}
.f-d-c {
	flex-direction: column;
	/* 排列方式,垂直 */
}
.f-w-w {
	flex-wrap: wrap;
	/* 换行方式 */
}
.f-j-c {
	justify-content: center;
	/* 居中 */
}
.f-j-b {
	justify-content: space-between;
	/* 两边排列 */
}
.f-j-a {
	justify-content: space-around;
	/* 靠近两边,没有接触到旁边 */
}
.f-j-s {
	justify-content: start;
	/* 靠近左侧 */
}
.f-s-0{
	flex-shrink: 0;
	/* 空间不足时也不被缩放,默认值为1会被缩放 */
}
.f-d-r{
	flex-direction: row;
	/*//水平布局*/

}
.f-d-c{
	flex-direction: column;
	/*垂直布局*/
}

一个项目,引入上方的代码后,我们前几个测试代码就可以简写了,比如使元素居中显示,上代码

 <div class="main f f-j-c">
   <div class="one">1</div>
   <div class="two">2</div>
   <div class="three">3</div>
</div>

具体其他的效果,比如垂直居中等等~靠各位自己去研究了,总之,用了这套封装的代码后,项目的布局开发周期会大大大大缩短很多!!!!

**点个赞??**么么哒

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吴大大逛博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值