Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CSS6:flex布局

CSS6:flex布局

作者头像
代码之风
发布于 2019-03-14 02:01:02
发布于 2019-03-14 02:01:02
81100
代码可运行
举报
文章被收录于专栏:马涛涛的专栏马涛涛的专栏
运行总次数:0
代码可运行

前言: 这是我看过最好的flex布局教程: 30分钟彻底弄懂flex布局

传统的布局方法与flex属性通览

文档流:块级元素独占一行,从上往下排列,行级元素从左往右排列。

display inline-block主要用来做横向的布局。 用分离负maigin用来产生位移。

元素的布局

学习flex我分成两个部分,第一个部分是元素布局。以下几个属性影响着元素的布局。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*容器上:*/
justify-content
align-items
flex-direction
flex-wrap
flex-flow
align-content
/*元素上:*/
order
align-self

做完下面的游戏,看完下面的两篇文章,理解了上面几个属性的用法,就理解了元素的布局。他们已经写得很详细了。这里不需要我班门弄斧。 30分钟彻底弄懂flex布局 Flex 布局教程:语法篇

CSS3【Flex布局】有趣的青蛙游戏 游戏一共24关,每关把所有颜色青蛙移动到对应颜色荷叶上即可过关 通关后就会使用影响布局的属性。

伸缩与尺寸

而影响大小和伸缩与尺寸的属性flex-growflex-shrinkflex-basis这三个属性比较难理解,可以看30分钟彻底弄懂flex布局深入理解flex布局的flex-grow、flex-shrink、flex-basis

在这里记录一下自己的理解。

flex-basis

  • flex-basis 用于设置元素在主轴上的大小(如果轴体变成从上到下,就会覆盖height)。
  • flex-basis: 0 表示元素根据内容撑开宽度,width不管用了。
  • flex-basis优先级比width高。
  • flex-basisauto时,如设置了width则元素尺寸由width决定;没有设置则由内容决定。(默认就是auto)所以如果一个容器设置为flex布局,那么他里面的元素在没有设置宽高的时候,大小都由内容撑开!

详细还是看30分钟彻底弄懂flex布局讲的非常明白

flex-shrink

  • 如果不换行flex-wrap: nowrap;主轴上的元素总和超了容器宽度,那么默认会缩小。
  • flex-shrink默认是1,即缩小因子是1,也就是当不够分配时,元素都将等比例缩小占满整个宽度
  • flex-shrink是0表示这个元素不缩小,如果超了,就在其他元素上动手脚缩小。

详细还是看30分钟彻底弄懂flex布局讲的非常明白。

flex-grow

  • 默认为flex-grow:0,即,不扩大。原来是多大就是多大(flex-basic或者widthheight的长度)
  • 然后按照扩大因子按权分配。例如有50px没有分配,两个子元素flex-grow:分别为flex-grow:3flex-grow:2,那么第一个元素就分配30px,第二个元素分配20px。
  • 如果第一个元素设置flex-grow为1,另一个没有设置,那么多出来的全部的大小都会分配给第一个元素。

详细还是看30分钟彻底弄懂flex布局讲的非常明白。

flex

flex = flex-grow + flex-shrink + flex-basis 一些简写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flex: 1 = flex: 1 1 0%//
flex: 2 = flex: 2 1 0%
flex: auto = flex: 1 1 auto;
flex: none = flex: 0 0 auto; // **常用于固定尺寸 不伸缩**

flex: 1和 flex: auto的区别

flex-grow + flex-shrink都是1的话意思就是不管是超出这一行,还是小于这一行,都按比例占满这一行(放大或缩小元素)!!

flex:1 和 flex:auto 的区别 都是按比例放大缩小,然后占满一行。 其实可以归结于flex-basis:0flex-basis:auto的区别flex-basis是指定初始尺寸,当设置为0时(绝对弹性元素),此时相当于告诉flex-growflex-shrink在伸缩的时候不需要考虑我的尺寸;相反当设置为auto时(相对弹性元素),此时则需要在伸缩时将元素尺寸纳入考虑。 总结:

  1. flex: 1的时候,伸缩时不需要考虑width,因为flex-basis:0(元素为内容撑开的宽度),只需要按照元素的内容宽度进行等比例的伸缩
  2. flex: auto的时候,伸缩时需要考虑width,按照width进行等比例伸缩

举例:flex:1应用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <ul id="container">
        <li id="item"></li>
        <li id="item"></li>
        <li id="item"></li>
    </ul>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#container{
    display: flex;
    flex-wrap: nowrap;
    width: 200px;
    height: 200px;
    background-color: orange;
}

#item:nth-child(1){
    flex:1;/*这里*/
    width: 100px;

    height:100px;
    background-color: blue;
}
#item:nth-child(2){
    flex:1;/*这里*/
    width:50px;

    height:100px;
    background-color: green;
}
#item:nth-child(3){
    /* flex:1; *//*这里没写*/
    width:30px;

    height: 100px;
    background-color: #ccc;
}

前两个元素将剩余的空间平局分了,因为没有内容,显示的宽度都是0,于是两个元素分得的扩大像素一样,所以平分了。

而如果是flex:auto,那么将会根据width按比例伸缩,占满一行。

flex布局套路学习

Flex 布局教程:实例篇

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CSS中Flex布局的可伸缩性(Flexibility)
Flex伸缩布局决定性的特性是让伸缩项目可伸缩,也就是让伸缩项目的宽度或高度自动填充剩余的空间。这可以以flex属性完成。一个伸缩容器会等比地按照各伸缩项目的 扩展比率 分配剩余空间,也会按照 收缩比率 缩小各项目以避免溢出。
Javanx
2019/09/04
1.6K0
CSS中Flex布局的可伸缩性(Flexibility)
30分钟彻底弄懂flex布局
在这篇文章里,想说说flex布局的属性语法及其细节。那么网上也有不少flex布局的教程,为什么又要再写一篇?
elson
2018/10/13
11.2K5
30分钟彻底弄懂flex布局
第103天:CSS3中Flex布局(伸缩布局)详解
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
半指温柔乐
2018/09/11
7280
第103天:CSS3中Flex布局(伸缩布局)详解
flexbox布局指南
伸缩容器是display的计算值为flex或inline-flex的元素,其流内孩子就是伸缩项(flex item)
ayqy贾杰
2019/06/12
1.1K0
flexbox布局指南
弹性盒子(display: flex)布局超全讲解|Flex 布局教程
弹性布局(Flex布局)是一种现代的CSS布局方式,通过使用display: flex属性来创建一个弹性容器,并在其中使用灵活的盒子模型来进行元素的排列和定位。
肥晨
2023/06/27
15.9K0
整理一下弹性布局知识点
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。 项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
裴大头
2022/01/17
7920
整理一下弹性布局知识点
再不学 flex 就不会写布局了
块状元素居中是一个老生常谈的话题,之前面试的时候考官也曾问到过这个。下面写几种常见的块状元素居中的方式。
李振
2021/11/26
3180
再不学 flex 就不会写布局了
你们等了很久的弹性布局(flex),还不快来~!
传统的布局方案中,我们基本都是在基于盒模型,依赖dispaly(显示)、position(定位)以及float(浮动)等属性来操作。但是这些操作需要用到一些特殊的布局上就会显得不方便了,比如,我们最常见的模块垂直居中的实现就不是很容易。而正是针对这些不易实现的布局,我们今天就跟大家分享一种简单好用的布局方式——弹性布局(flex),一起来学习吧~~~ flex布局的由来 flex是flexible box的缩写,意思是“弹性布局”,用来为操作盒模型提供丰富的灵活性。早在2009年,W3C就已经提出这种简单、
HTML5学堂
2018/03/13
1K0
你们等了很久的弹性布局(flex),还不快来~!
总结一下CSS3中的Flex布局语法
Flex 布局有时候会用到,但是始终分不清楚其中的部分属性及其含义,所以用这篇博客专门总结一下 Flex 布局。
知识分子没文化
2023/07/01
4490
总结一下CSS3中的Flex布局语法
CSS3的flex布局
flex的一些属性 CSS3中引入了另一种框--flexbox,flexbox有一些block和inline不同的性质,比如: 自适应子元素(flex item,又称伸缩项目)的宽度 伸缩项目的float,clear,vertical-align属性失效 不能继承flex框,但可以依次设置 可以修改flex流的方向以及布置规则          现在就大体讲述下这个具体属性的表示含义。 设置flexbox的兼容性   将一个容器设置为flexbox(又称伸缩容器)很简单,但是却存在一些兼容性的问题,比如
欲休
2018/03/15
1.4K0
CSS3的flex布局
css3 flex弹性布局详解
2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。
忆愿
2024/07/30
2200
css3 flex弹性布局详解
CSS 布局_2 Flex弹性盒
弹性盒,是一种布局方式,当页面需要适应不同的屏幕大小以及设备类型时,它依然能确保元素拥有更恰当的排布行为,弹性盒属于 CSS 3 部分,IE9 以下不支持,现代浏览器指的就是 IE9 及以上的浏览器
Nian糕
2018/08/21
1.6K0
CSS 布局_2 Flex弹性盒
css属性为 { flex: 1 }时表示的意思
flex属性是 flex-grow + flex-shrink + flex-basis 的缩写
ZEHAN
2020/10/16
1.5K0
CSS3中Flex布局(弹性布局)
Flex是Flexible Box的缩写,就是灵活的弹性页面布局。 作用是为盒子模型提供强大的灵活性功能;
Javanx
2019/09/04
6500
CSS3中Flex布局(弹性布局)
CSS 基础系列:flex 布局
1)初代:table 布局 在网页布局没有进入 CSS 的时代,排版几乎是通过 table 元素实现的。虽然它可以很方便地实现水平和垂直对齐,但是缺点也很明显: 代码臃肿;不利于SEO;不够语义化;后期难以修改
Chor
2019/11/07
1.6K0
CSS Flex 布局
给元素添加display: flex,该元素变成了一个弹性容器(flex container),它的直接子元素变成了弹性子元素(flex item)。
Cellinlab
2023/05/17
1.3K0
CSS Flex 布局
Flex 布局相关用法
布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中 就不容易实现。
书童小二
2018/09/03
1.5K0
Flex 布局相关用法
Flex布局
注:设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。
且陶陶
2023/04/12
1.5K0
Flex布局
CSS3中Flex弹性布局该如何灵活运用?
Flex(Flexible Box),意为”弹性布局”。“弹性”,顾名思义,就是具有弹簧的特性啦,能够自由的伸缩(有点自适应的意思啦)。
Javanx
2019/09/04
6980
CSS3中Flex弹性布局该如何灵活运用?
CSS布局相关及Flex详解
对于两个div元素,其是相对独立的,如果在其中一个div元素中加入内容,将会使得两个元素的底部不能对齐,导致页面多出空白区域。
奋飛
2019/08/14
1.4K0
相关推荐
CSS中Flex布局的可伸缩性(Flexibility)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验