Flex布局-从了解到使用只需5min
写在前面:
我是「沸羊羊_」,昵称来自于姓名的缩写 fyy ,之前呕心沥血经营的博客因手残意外注销,现经营此账号。
本人是个小菜,正向着全栈工程师的方向努力着,文章可能并不高产,也很基础,但每写一篇都在用心总结,请大佬勿喷。
如果您对编程有兴趣,请关注我的动态,一起学习研究。
感谢每位读者!
文章目录
- Flex简介
- 其他布局
- table布局
- float布局
- absolute布局
- grid布局
- Flex布局
- 容器属性
- 元素结构
- 使用flex布局
- 改变主轴方向 - flex-direction属性
- 改变换行方式 - flex-wrap属性
- flex-flow属性(flex-directive和flex-wrap简写)
- 主轴对齐方式 - justify-content
- 交叉轴对齐方式 - align-items
- 多根轴线对齐方式 - align-content
- 子元素属性
- 子元素属性 -- order
- 子元素属性 -- flex-grow
- 子元素属性 -- flex-shrink
- 子元素属性 -- flex-basis
- 子元素属性 -- flex
- 子元素属性 -- align-self
- 最后
Flex简介
页面布局的传统解决方案是基于盒状模型,使用 display属性+position属性+float属性,但对于特殊布局非常不方便。直到2009年,W3C提出了解决方案-----Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,意味着,现在可以很安全的使用这项功能。
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为Flex布局。
注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。
其他布局
table布局
在实际的项目开发过程中,不建议用table进行布局。
缺点:
- table 比其他html标签占更多的字节。造成下载时间延迟,占用服务器更多的流量资源(代码冗余)
- table 会阻挡浏览其渲染引擎的渲染顺序,会延迟页面的生成速度,让用户等待时间更久。
- 灵活性差,一旦设计确定,后期很难通过CSS让它展现新的面貌。
- 不利于搜索引擎抓取信息,直接影响到网站的排名
优点:
- 兼容性好
- 容易上手
float布局
float 属性定义元素在哪个方向浮动。
缺点:
- 脱离文档流,需要清除浮动,高度塌陷(float的破坏性主要是指它会使父容器的高度塌陷,也就是父元素在高度计算的时候会忽略浮动的元素)。
优点:
- 兼容性好,比较简单。
absolute布局
relative属性:脱离文档流,但保留占位符,其偏移位置是相对于本身在正常文档流中时的位置
脱离文档流是说设置了relative属性之后,元素不在z-index:0;的正常文档流中,其z-index的值>0,但保留占位符,就是在正常文档流中位置保留着,后继元素不能占位,然后相对于本身正常位置进行偏移。
缺点:
脱离文档流,会导致后续元素全部脱离文档流,可用行差。
grid布局
Grid 布局是 CSS 中最强大的布局系统。与 flexbox 的一维布局系统不同,CSS Grid 布局是一个二维布局系统,意味着它可以同时处理列和行。
Flex布局
容器属性
元素结构
效果:
<template><div class="body"><div class="container"><div class="one">one</div><div class="two">two</div><div class="three">three</div></div></div>
</template><style scoped>
.body {margin: 0;padding: 0;
}
.container {width: 300px;background: #999;margin: 50px auto;
}
.one {width: 100px;height: 50px;background-color: #375;
}
.two {width: 100px;height: 50px;background-color: #854;
}
.three {width: 100px;height: 50px;background-color: #489;
}
</style>
使用flex布局
display:flex
因为flex布局默认主轴方向为 row ,以行为主轴,所以内容在主轴的起点和终点两根轴线之间。
改变主轴方向 - flex-direction属性
主轴方向: flex-direction: column;
把 主轴方向改为 column后,以列为主轴,行为交叉轴,所以内容在主轴的两根轴线之间。
主轴方向:flex-direction: column-reverse;
以列为主轴,将排列方式反转,以原点为起点。
改变换行方式 - flex-wrap属性
换行:flex-wrap:wrap;
换行:flex-wrap:wrap-reverse;
flex-flow属性(flex-directive和flex-wrap简写)
以行为主轴,换行:flex-flow:row wrap;
以行为主轴,不换行:flex-flow:row nowrap;
以列为主轴,换行:flex-flow: column wrap;
以列为主轴,不换行:flex-flow: column nowrap;
主轴对齐方式 - justify-content
行为主轴,左对齐(默认值): justify-content: flex-start;
行为主轴,右对齐: justify-content: flex-end;
行为主轴,居中: justify-content: center;
行为主轴,两端对齐,元素之间间隔相等: justify-content: space-between;
行为主轴,元素边框两侧间隔相等,元素之间间隔比元素边框间隔大一倍: justify-content: space-around;
列为主轴,左对齐(默认值): flex-direction: column; justify-content: flex-start;
列为主轴,右对齐: flex-direction: column; justify-content: flex-end;
列为主轴,居中: flex-direction: column; justify-content: center;
列为主轴,两端对齐,元素之间间隔相等: flex-direction: column; justify-content: space-between;
列为主轴,元素边框两侧间隔相等,元素之间间隔比元素边框间隔大一倍: flex-direction: column; justify-content: space-around;
交叉轴对齐方式 - align-items
列为交叉轴,左对齐(默认值): align-items: flex-start;
列为交叉轴,右对齐: align-items: flex-end;
列为交叉轴,居中: align-items: center;
列为交叉轴,以元素第一行文字基线对齐: align-items: baseline;
列为交叉轴,取消元素高度将占满整个容器高度(默认值): align-items: stretch;
行为交叉轴,左对齐(默认值): flex-direction: column; align-items: flex-start;
行为交叉轴,右对齐: flex-direction: column; align-items: flex-end;
行为交叉轴,居中: flex-direction: column; align-items: center;
行为交叉轴,以元素第一行文字基线对齐: flex-direction: column; align-items: baseline;
行为交叉轴,取消元素高度(默认值): flex-direction: column; align-items: stretch;
多根轴线对齐方式 - align-content
注意:容器内必须有多行元素,align-content 属性才能渲染出效果。
子元素属性
子元素属性 – order
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
.one {order: 2;
}
.two {order: 1;
}
.three {order: 1;
}
子元素属性 – flex-grow
flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
.one {flex-grow: 1;
}
.two {flex-grow: 2;
}
.three {flex-grow: 1;
}
子元素属性 – flex-shrink
flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。数值越大,相对比例越小。
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。
// case 1
.one {flex-shrink: 3;
}
.two {}
.three {}
// case 2
.one {flex-shrink: 0;
}
.two {}
.three {}
子元素属性 – flex-basis
flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。
.one {flex-basis: 500px;
}
.two {}
.three {}
子元素属性 – flex
flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
.one {flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
子元素属性 – align-self
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
//子元素容器
.container {display: flex;align-items: center;
}
.one {align-self: flex-start;
}
.two {}
.three {}
该属性可能取6个值,除了auto,其他都与align-items属性完全一致。
最后
以上为小编学习总结记录,如有错误,请大佬指出,不胜感激。
Flex布局-从了解到使用只需5min相关推荐
- flex 单独一行_Flex布局从了解到使用只需5min
作者:沸羊羊_ https://blog.csdn.net/weixin_42653522/article/details/106940004 Flex简介 页面布局的传统解决方案是基于盒状模型,使用 ...
- 你不能只会flex居中布局,精制动画讲解所有flex布局方式,通俗易懂教程
flex布局相信很多人都已经有不少了解,其优势和作用被越来越多的开发者所喜爱,网上也有很多关于关于flex的介绍和教程.但是根据笔者的面试经验发现,很多人尤其是初中级开发者对flex布局都仅仅停留下c ...
- 设置flex-shrink:0. flex布局只占位,不占空间
问题: 这个汉堡按钮把文字给压住了 解决方法: 在汉堡结构前面放一个空的 div元素进行占位 问题: 这个汉堡按钮把文字给压住了 解决方法: 在汉堡结构前面放一个空的 div元素进行占位 因为咱们添加 ...
- 你不能只会flex居中布局,精制动画讲解所有flex布局方式!通俗易懂纯干货教程!...
flex布局相信很多人都已经有不少了解,其优势和作用被越来越多的开发者所喜爱,网上也有很多关于关于flex的介绍和教程.但是根据笔者的面试经验发现,很多人尤其是初中级开发者对flex布局都仅仅停留下c ...
- 彻底弄懂flex布局
目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用flex进行布局了.什么是flex布局以及它的好处,这里就不再赘述. 在这篇文章里,想说说flex布局的属性语法及其细节.那么网上也 ...
- 使用 Flex 布局与其他普通布局的简单对比
最近使用 flex 布局来做各种居中真的带来了不少方便,现在来总结一下平时的普通布局是怎样使用 flex 布局来实现一样的效果. 一.左右 1:1 布局 布局: <div class=" ...
- 学习flex布局(弹性布局)
Flex是Flexible Box的缩写,意为弹性布局.是W3C早期提出的一个新的布局方案.可以便捷的实现页面布局,目前较高版本的主流浏览器都能兼容,兼容情况如下: Flex在移动端开发上已是主流,比 ...
- JavaScript 5/30:Flex Panel Gallery即FLEX布局的图片库
JavaScript30 为Wes Bos推出的一项为期30天的挑战,旨在帮助人们用纯JavaScript来实现效果,初学者若想在JS方面快速精进,不妨一试.本题为第五题. 实现效果 点击任意一张图片 ...
- CSS3 建立弹性盒布局 Flex布局
弹性盒布局模型中引入了一些新的属性,只要设置好相应属性,盒子就具有弹性,在改变浏览器窗口大小时,盒子大小也会自动发生变化.并且,盒子的大小由浏览器自动计算,使页面布局更加灵活.更加简单,可以很轻松创建 ...
最新文章
- 2、安装ICS(Internet Component Suite)控件
- spring boot里面的三种配置文件。
- UOJ.311.[UNR#2]积劳成疾(DP)
- Spring-AOP @AspectJ切点函数之@within()和@target
- android执行main函数,AndroidStudio执行main方法报错
- 打破双亲委派机制有什么用_被打破的双亲委托机制
- (C#基本语法)2.类型
- 程序员编程艺术:第五章、寻找满足和为定值的两个或多个数
- 比亚迪汉鸿蒙系统测评_深度:预判比亚迪汉EV电驱动系统技术状态
- LINUX下安装svn客户端
- 下载徐小明新浪博客全部博文链接
- 【Zigbee】进阶篇(2) Zigbee协议栈中OSAL的执行流程
- java通过JNI调用DLL文件
- actviti 工作流核心技术和实战-学习笔记(一)什么是工作流
- C# 通过api 下载sharepoint中的文件
- RCWL-0516微波雷达感应开关
- openmp crunching
- OpenCASCADE:OCCT应用框架OCAF之XML支持
- STM32G030C8T6读写flash
- BIMC中国最权威的电子商务托管运营商
热门文章
- ios12最后一个正式版_ios12正式版哪里下载
- java 热词推荐搜索实现,Flink 热词统计(1): 基础功能实现
- 视频插帧各类损失函数汇总
- html5游戏开发马赛克对比,canvas实现图片马赛克的示例代码
- 限时分享:汇聚全平台资源,八个黑科技资源渠道
- oracle 将excel数据导入多个表,5种从Excel数据导入Oracle方法
- HBuilderX中使用模拟器
- 【课件制作软件】Focusky教程 | 如何编辑图表?
- 照片恢复哪个软件好终极评定结果
- web网页浏览器唤起wpf,winform exe桌面程序,并跳转到指定页面