我的编程空间,编程开发者的网络收藏夹
学习永远不晚

CSS3中怎么实现 FlexBox弹性布局

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

CSS3中怎么实现 FlexBox弹性布局

这篇文章将为大家详细讲解有关CSS3中怎么实现 FlexBox弹性布局,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

  • flexbox是一种css display类型,提供一种更简单高效的布局方式;

  • flexbox可以对元素相对于父元素、兄弟元素进行定位、控制尺寸、控制间距;

  • flexbox对响应式有很好的支持;

工作原理

设置父元素的display属性为flex,则子元素都变成flex item,由此可以控制子元素的排列方式、尺寸、间距等;

兼容性

CSS3中怎么实现 FlexBox弹性布局

Flex Container

先来看一个最简单的flex示例,外层div设置display: flex成为一个flex container,内部的3个div则自动变为flex item:

html:

<div class="flex-container">  <div class="box one"></div>  <div class="box two"></div>  <div class="box three"></div></div>

css:

.flex-container{ max-width: 960px; margin: 0 auto; display:flex; }.box{ height: 100px; min-width: 100px; }.one{ background: pink; }.two{ background: lightgreen; }.three{ background: skyblue; }

效果:

CSS3中怎么实现 FlexBox弹性布局

效果与浮动布局类似,但是如果用浮动实现的话需要写更多的代码,而flex一行就搞定了。

1. Justify Content

如果我们想让flex item居中排列呢,我们可以给flex container增加一个css属性:justify-content,它控制flex item在主轴方向(main axis,由flex-drection决定,默认为水平方向)上的对齐方式:

.flex-container{  ...  justify-content: center;}

效果如图:

CSS3中怎么实现 FlexBox弹性布局

除此之外justify-content还可以设置为flex-start, flex-end, space-around, space-between, space-even等值,具体效果请自行实验。

2. Align Items

实现了flex方向的居中后,垂直于主轴方向(cross axis)的居中可以用align-items实现。

css:

.flex-container{  max-width: 960px;  margin: 0 auto;  display:flex;  justify-content: center;  height: 200px;  background-color: white;  align-items: center;}

效果:

CSS3中怎么实现 FlexBox弹性布局

使用flex解决了以往css垂直居中实现复杂的问题!相应的,align-items还有flex-start, flex-end等其他值。

3. Flex Direction

flex-direction决定了主轴方向即flex item排列方向,除了默认的row方向之外,还可以纵向、反向(row-reverse/column-reverse)排列flex item:

css:

.flex-container{  ...    flex-direction: column;  align-items: center;}

效果:

CSS3中怎么实现 FlexBox弹性布局

4. Flex Wrap

如果我们不想在窗口变窄的情况下压缩flex item,而是让超出边界的flex item换行显示那我们可以设置flex container的flex-wrap

.flex-container{  max-width: 960px;  margin: 0 auto;  display:flex;  flex-wrap: wrap;}.box{  height: 100px;  min-width: 300px;  flex-grow: 1;}

当我们压缩窗口的时候,效果如下:

CSS3中怎么实现 FlexBox弹性布局

flex wrap还有一个值:wrap-reverse,设置该值后,被wrap的元素会排到其他元素上面:

CSS3中怎么实现 FlexBox弹性布局

由此可见,flex wrap一定程度上可以取代media query了。

5. Flex Row

最后,flex-directionflex-wrap可以合并为一个属性flex-flow,比如:flex-flow: row-reverse wrap

Flex Item

1. Flex Grow

在上面所有的例子中,三个flex item只占据了flex container小部分空间,如果想让flex item占满flex container我们需要给flex item设置flex-grow属性。顾名思义,grow意味着增长,用于控制flex item的尺寸的伸展。

将css修改为:

.box {     height: 100px;     min-width: 100px;     flex-grow:1; }

效果:

CSS3中怎么实现 FlexBox弹性布局

可以看到三个子元素平分了父元素的空间,因为此时它们的flex-grow都是1。如果只有一个子元素设置了flex-grow呢?

css:

.box{ height: 100px; min-width: 100px; }.one{ background: pink; flex-grow: 1; }

效果:

CSS3中怎么实现 FlexBox弹性布局

此时two和three的大小不变,而one占据了父元素剩余空间。

如果将one的flex-grow改为2,而two和three改为1,我们看看会发生什么:

css:

.box{ height: 100px; min-width: 100px; flex-grow:1; }.one{ background: pink; flex-grow: 2; }

效果:

CSS3中怎么实现 FlexBox弹性布局

可以看到one的宽度变成了two和three的两倍,因此flex item的尺寸和flex-grow的值成正比。

2. Flex Shrink

flex-grow相对的是flex-shrinkflex-shrink用于控制子元素尺寸超过flex container后,对子元素的压缩。请看示例:

修改box的宽度为flex container的1/3,one、two、three的flex-shrink分别为1,2,3:

.box{ height: 100px; width: 320px; }.one{ background: pink; flex-shrink: 1; }.two{ background: lightgreen; flex-shrink: 2; }.three{ background: skyblue; flex-shrink: 3; }

当窗口正常尺寸时,效果如下:

CSS3中怎么实现 FlexBox弹性布局

当我们压缩窗口使其变得更窄后,效果如下:

CSS3中怎么实现 FlexBox弹性布局

当flex container宽度变为540px后,子元素都被不同程度的压缩了。压缩后的one、two、three的宽度分别为250px、180px、110px,所以相比于初始宽度320px被压缩掉的宽度分别为70px、140px、210px,70 : 140 : 210 = 1 : 2 : 3,与flex shrink的值成反比。实际上压缩率和flex item的初始尺寸也有关系,只不过当初始尺寸一样时它带来的影响被忽略了。

假设flex shrink为fs,flex item的初始尺寸为is,flex item被压缩的尺寸为ss,则正确的表达式为:

fs &prop; is/ss

3. Flex Basis

flex-basis用于设置flex item的初始宽/高。为什么有width和height还需要重新加一个flex-basis呢?flex-basis和width/height有如下的区别:

  1. flex-basis只能用于flex-item,而width/height可以应用于其他类型的元素;

  2. flex-basis和flex-direction有关,当flex-direction为row的时,flex-basis设置的是宽度,当flex-direction为column时,flex-basis设置的是高度;

  3. 当flex item被绝对定位后(absolute position),flex-basis不起作用,而width/height可以;

  4. flex-basis可以用于flex的简写形式,如:flex: 1 0 200px;

我们来看一下flex-basis的作用,将css修改如下:

.box{  height: 100px;  flex-grow: 1;}.one{  background: pink;  flex-basis: 100px;}.two{  background: lightgreen;  flex-basis: 200px;}.three{  background: skyblue;  flex-basis: 300px;}

3个flex item都在原来的初始宽度基础上增加了相同的宽度:

CSS3中怎么实现 FlexBox弹性布局

当然,这个例子如果换成使用width也是一样的效果,但是虽然效果一样但意义不一样,所以使用flex布局时还是应该尽量遵守规范,选合适的人去干正确的事。

4. Order

通过order属性我们可以改变flex item的排列顺序,例如:

html:

<section id="blocks">  <div class="one">1</div>  <div class="two">2</div>  <div class="three">3</div>  <div class="four">4</div></section>

css:

#blocks{  display: flex;  margin: 10px;  justify-content: space-between;}#blocks div{  flex: 0 0 100px;  padding: 40px 0;  text-align: center;  background: #ccc;}

默认排列顺序是按照flex item在html中的出现顺序:

CSS3中怎么实现 FlexBox弹性布局

当我们修改flex item的order值后,flex item会按照order值升序排列:

css:

.one{ order: 4; }.two{ order: 3; }.three{ order: 2; }.four{ order: 1; }

效果:

CSS3中怎么实现 FlexBox弹性布局

关于CSS3中怎么实现 FlexBox弹性布局就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

CSS3中怎么实现 FlexBox弹性布局

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

下载Word文档

猜你喜欢

CSS3中怎么实现 FlexBox弹性布局

这篇文章将为大家详细讲解有关CSS3中怎么实现 FlexBox弹性布局,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。flexbox是一种css display类型,提供一种更简单高效的布局方
2023-06-08

CSS3 实现 Flex 弹性布局

今天就跟大家聊聊有关CSS3 实现 Flex 弹性布局,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、基本概念 //任何一个容器都可以指定为Flex布局。 .box{ disp
2023-06-08

CSS Flexbox布局:利用弹性盒子布局实现灵活的布局结构

CSS Flexbox布局:灵活的布局结构实现简介:在前端开发中,页面布局是一个重要的环节。传统的布局方式,如使用浮动或定位,有时候在设计不符合标准化的情况下会出现一系列问题。为了克服这些问题,CSS3引入了Flexbox布局,它可以为开发
CSS Flexbox布局:利用弹性盒子布局实现灵活的布局结构
2023-11-18

巧用CSS3的弹性布局实现垂直居中

编程学习网:前几天小编发了一篇关于css3弹性布局的介绍,并在最后的总结里提到了该功能可以用于实现垂直居中。然后有位好学的童鞋就真的跑过来问小编了,到底如何用弹性布局实现垂直居中对齐呢?
巧用CSS3的弹性布局实现垂直居中
2024-04-23

Flexbox+ReclyclerView怎么实现流式布局

本篇内容主要讲解“Flexbox+ReclyclerView怎么实现流式布局”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flexbox+ReclyclerView怎么实现流式布局”吧!效果:m
2023-06-25

css3弹性盒子flex如何实现三栏布局

这篇文章主要介绍“css3弹性盒子flex如何实现三栏布局”,在日常操作中,相信很多人在css3弹性盒子flex如何实现三栏布局问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css3弹性盒子flex如何实现三
2023-06-08

CSS3中怎么实现 Grid布局

这篇文章给大家介绍CSS3中怎么实现 Grid布局,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Grid做前端的同学应该都很熟悉了,翻译成中文为“栅格”,用过bootstrap、semantic ui、ant desi
2023-06-08

如何使用Css Flex 弹性布局实现瀑布流布局

随着网页设计的不断发展,瀑布流布局成为了一种非常流行的页面布局方式。与传统的网格布局不同,瀑布流布局能够自适应屏幕大小,并且呈现出独特的流动感。在本文中,我们将介绍如何使用CSS Flex 弹性布局来实现瀑布流布局,并提供具体的代码示例。C
2023-10-21

css如何利用flexbox布局实现盒子居中

小编给大家分享一下css如何利用flexbox布局实现盒子居中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!利用flexbox布局