您现在的位置是:网站首页> 编程资料编程资料
10分钟理解CSS3 FlexBox弹性布局CSS3中的弹性布局em运用入门详解 1em等于多少像素css3弹性盒子flex实现三栏布局的实现CSS3 Flex 弹性布局实例代码详解css flex 弹性布局详解CSS弹性布局FLEX,媒体查询及移动端点击事件的实现
2021-09-04
964人已围观
简介 这篇文章主要介绍了10分钟理解CSS3 FlexBox弹性布局的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
基本介绍
特点
- flexbox是一种css display类型,提供一种更简单高效的布局方式;
- flexbox可以对元素相对于父元素、兄弟元素进行定位、控制尺寸、控制间距;
- flexbox对响应式有很好的支持;
工作原理
设置父元素的display属性为flex,则子元素都变成flex item,由此可以控制子元素的排列方式、尺寸、间距等;
兼容性

Flex Container
先来看一个最简单的flex示例,外层div设置display: flex成为一个flex container,内部的3个div则自动变为flex item:
html:
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; }效果:

效果与浮动布局类似,但是如果用浮动实现的话需要写更多的代码,而flex一行就搞定了。
1. Justify Content
如果我们想让flex item居中排列呢,我们可以给flex container增加一个css属性:justify-content,它控制flex item在主轴方向(main axis,由flex-drection决定,默认为水平方向)上的对齐方式:
.flex-container{ ... justify-content: center; }效果如图:

除此之外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; }效果:

使用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; }效果:

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; }当我们压缩窗口的时候,效果如下:

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

由此可见,flex wrap一定程度上可以取代media query了。
5. Flex Row
最后,flex-direction和flex-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; }效果:

可以看到三个子元素平分了父元素的空间,因为此时它们的flex-grow都是1。如果只有一个子元素设置了flex-grow呢?
css:
.box{ height: 100px; min-width: 100px; } .one{ background: pink; flex-grow: 1; }效果:

此时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; }效果:

可以看到one的宽度变成了two和three的两倍,因此flex item的尺寸和flex-grow的值成正比。
2. Flex Shrink
与flex-grow相对的是flex-shrink, flex-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; }当窗口正常尺寸时,效果如下:

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

当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 ∝ is/ss
3. Flex Basis
flex-basis用于设置flex item的初始宽/高。为什么有width和height还需要重新加一个flex-basis呢?flex-basis和width/height有如下的区别:
- flex-basis只能用于flex-item,而width/height可以应用于其他类型的元素;
- flex-basis和flex-direction有关,当flex-direction为row的时,flex-basis设置的是宽度,当flex-direction为column时,flex-basis设置的是高度;
- 当flex item被绝对定位后(absolute position),flex-basis不起作用,而width/height可以;
- 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都在原来的初始宽度基础上增加了相同的宽度:

当然,这个例子如果换成使用width也是一样的效果,但是虽然效果一样但意义不一样,所以使用flex布局时还是应该尽量遵守规范,选合适的人去干正确的事。
4. Order
通过order属性我们可以改变flex item的排列顺序,例如:
html:
1234
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中的出现顺序:

当我们修改flex item的order值后,flex item会按照order值升序排列:
css:
.one{ order: 4; } .two{ order: 3; } .three{ order: 2; } .four{ order: 1; }效果:

结语
flex就先简单介绍到这里,flex很强大也很简单,希望大家用的开心。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- css实现文字居中两边横线效果的示例代码CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 详解如何在css3打包后自动追加前缀插件:autoprefixer css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 详解css BEM书写规范 CSS使用BEM命名规范实践CSS样式书写顺序和命名规范及注意事项值得收藏的CSS命名规范(规则)常用的CSS命名规则 好的 CSS 命名规范可以节约 Debug 时间css 命名:BEM, scoped css, css modules 与 css-in-js详解CSS规范BEM CSS和OOCSS的示例代码详解从QQtabBar看css命名规范BEM的详细介绍
- css如何绘制特殊图形的方法示例
- CSS 同级元素浮动分析小结纯css3绘制的卡通皮卡丘随着气球漂浮动画特效源码css 如何清除浮动的示例代码浅谈CSS浮动的特性CSS3 清除浮动的方法示例深入理解css布局之定位与浮动CSS清除浮动float的三种方法小结浅谈css中浮动和清除浮动带来的影响轻松搞懂CSS浮动与清除浮动图文详解
- 使用css实现圆形波浪效果图 纯CSS实现波浪移动效果的示例纯css3制作鼠标悬停波浪形状弹性下拉菜单特效源码css3实现逼真的波浪起伏动画特效源码CSS3实现的波浪闪动文字动画特效源码纯css3实现的音阶波浪loading加载动画特效源码CSS3实现文字波浪线效果示例代码纯css3实现的文字波浪动画特效源码纯CSS3实现波浪形菜单效果源码纯CSS3实现3D波浪形动画有波浪起伏的效果
- CSS Sticky Footer实现代码CSS Sticky Footer 几种实现方式CSS实现Sticky Footer的示例代码详解CSS经典布局之Sticky footer布局详解Sticky Footer 绝对底部的两种套路 css sticky footer经典布局的实现
- css实现两栏固定中间自适应的方法css实现元素居中的N种方法div水平布局两边对齐的三种实现方法waterfall瀑布流布局+动态渲染的实现页面中有间隔的方格布局如何完美实现方法css实现六种自适应两栏布局方式使用flex布局轻松实现页面布局的示例代码使用Flex布局实现头部固定内容区域滚动的方法详解flex布局下图片变形的解决方法详解flex布局与position:absolute/fixed的冲突问题Flex布局实现div内部子元素垂直居中的示例
- 关于css中line-height(行高)设置无效的问题的解决方法深入理解CSS行高line-height与文本垂直居中的原理全面了解css行高line-height的用法CSS中的line-height行高属性学习教程CSS中的line-height行高属性的使用技巧小结CSS中行高line-height属性的一些使用技巧css属性行高line-height的用法详解CSS行高line-height的个人理解CSS line-height行高上下居中垂直居中样式属性
- css制作tips提示框,气泡框,制作三角形的实现纯CSS实现气泡对话框尖角处理方案CSS3制作气泡对话框的实例教程可自定义箭头样式的CSS3气泡提示框纯CSS实现聊天框小尖角、气泡效果纯CSS实现箭头、气泡让提示功能具有三角形图标html5 css3 动态气泡按钮实例演示
