5个Flexbox小技巧

本文介绍Flexbox在网页布局中的五大应用技巧,包括创建等高列、动态排序元素、水平垂直居中、响应式栅格系统及固定页脚,助力前端开发者高效解决布局难题。

Flexbox是一个用于网页布局的CSS标准。通过使用一些flexbox属性,我们可以跳出传统块状布局的束缚,轻松设计出我们需要的布局。使用Flexbox可以使你的网站和应用支持响应式,在不同屏幕大小的设备都能获得良好的视觉效果。下面给大家分享5个解决了传统CSS布局难点的Flexbox小技巧。

1、创建等高的列

这个任务看上去不难,但实际操作起来你会发现它很费事。设置min-height?然并卵。因为一旦某一列的内容比其他列要多,那么这一列就会被撑起来,其他列明显会比它矮一截。用flexbox来解决这个问题轻而易举。用flexbox创建的列默认是等高的,我们只需要定义一个flex模型并设置好flex-direction和align-items属性即可。

<div class="flexbox-container">
    <div><h3>Column 1</h3></div>
    <div><h3>Column 2</h3></div>
</div>


.flexbox-container {
    display: -ms-flex;
    display: -webkit-flex;
    display: flex;
        padding: 20px;
        background:#eee;
}
 
.flexbox-container > div {
    width: 50%;
    padding: 10px;
        background:#fff;
}
 
.flexbox-container > div:first-child {
    margin-right: 20px;
}

效果图:

0?wx_fmt=png

2、元素的动态排序

过去,如果我们需要动态地给元素进行排序,我们需要通过JavaScript来实现。然而利用flexbox之后,我们通过设置CSS属性即可实现这一功能。这个属性叫做order。顾名思义,它可以给flex子元素设置显示顺序,不论他们在html文件中的顺序如何,他们都会遵循order属性的值来调整顺序。order的值表示优先级。元素的order值越小,优先级越高。

HTML:

  1. <div class="container">

  2. <div class="blue"></div>

  3. <div class="red"></div>

  4. <div class="green"></div>

  5. </div>

CSS:

  1. .container{

  2. display: flex;

  3. }

  4. .blue{

  5. order: 3;

  6. }

  7. .red{

  8. order: 2;

  9. }

  10. .green{

  11. order: 1;

  12. }

3、水平和垂直居中

垂直居中一直令前端开发者头疼不已。解决方案五花八门,很多并不是用于布局的元素和属性都被用上了。用了flexbox后,居中问题再也难不倒我们了。Flex的布局中包含主轴和侧轴两个方向轴(可以理解为X轴和Y轴),我们只需要保持子元素在主轴和侧轴上都居中即可将其置于父容器的中心位置。

HTML:

  1. <div class="container">

  2. <div></div>

  3. </div>

CSS:

  1. .container{

  2. display: flex;

  3. justify-content: center;

  4.        align-items: center;

  5. }

4、创建响应式的栅格系统

多数开发者利用一些CSS框架来创建响应式栅格系统。除了最受欢迎的Bootstrap以外还有上百种库可以帮助开发者创建强大的栅格系统。他们有着很好的实现效果,但是有很多功能我们虽然没有用到却不得不和栅格系统一同引入我们的项目。如果你是一个热衷于DIY的开发者,并且不想仅仅因为栅格系统而去引入各种第三方库的话,你不妨试试flexbox。

Flexbox创建的栅格系统中每一行的元素都放在一个设置了display:flex样式的父容器中。容器中元素的大小通过flex属性来设置。flex的大小是根据设备自适应的,因此在不同大小的设备上都能获得很好的效果。

HTML:

  1. <div class="container">

  2. <div class="col-1">...</div>

  3. <div class="col-2">...</div>

  4. <div class="col-1">...</div>

  5. </div>

CSS:

  1. .container{

  2. display: flex;

  3. }

  4. .col-1{

  5. flex: 1;

  6. }

  7. .col-2{

  8. flex: 2;

  9. }

5、创建一个固定的页脚

flexbox可以很好地解决这个问题。我们只需要将页脚添加到特定的flex容器中即可保证它永远固定在页面底部。将display:flex属性应用到body元素上可以保证整个页面都应用flexbox的属性,同时页面的主要内容和页脚各自作为body中的一个子元素。这样调整他们的位置就很easy了。

HTML:

  1. <body>

  2. <div class="main">...</div>

  3. <footer>...</footer>

  4. </body>

CSS:

  1. html{

  2.    height: 100%;

  3. }

  4. body{

  5.    display: flex;

  6.    flex-direction: column;

  7.    height: 100%;

  8. }

  9. .main{

  10.   flex: 1 0 auto;

  11. }

  12. footer{

  13.   flex: 0 0 auto;

  14. }


推荐公众号:前端达人专注分享当下最实用的的前端技术!640?wx_fmt=jpeg
长按二维码点选(识别图中二维码)

提供了一个基于51单片机的RFID门禁系统的完整资源文件,包括PCB图、原理图、论文以及源程序。该系统设计由单片机、RFID-RC522频射卡模块、LCD显示、灯控电路、蜂鸣器报警电路、存储模块和按键组成。系统支持通过密码和刷卡两种方式进行门禁控制,灯亮表示开门成功,蜂鸣器响表示开门失败。 资源内容 PCB图:包含系统的PCB设计图,方便用户进行硬件电路的制作和调试。 原理图:详细展示了系统的电路连接和模块布局,帮助用户理解系统的工作原理。 论文:提供了系统的详细设计思路、实现方法以及测试结果,适合学习和研究使用。 源程序:包含系统的全部源代码,用户可以根据需要进行修改和优化。 系统功能 刷卡开门:用户可以通过刷RFID卡进行门禁控制,系统会自动识别卡片并判断是否允许开门。 密码开门:用户可以通过输入预设密码进行门禁控制,系统会验证密码的正确性。 状态显示:系统通过LCD显示屏显示当前状态,如刷卡成功、密码错误等。 灯光提示:灯亮表示开门成功,灯灭表示开门失败或未操作。 蜂鸣器报警:当刷卡或密码输入错误时,蜂鸣器会发出报警声,提示用户操作失败。 适用人群 电子工程、自动化等相关专业的学生和研究人员。 对单片机和RFID技术感兴趣的爱好者。 需要开发类似门禁系统的工程师和开发者。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值