首页 > 其他分享 >非常实用的Flex布局

非常实用的Flex布局

时间:2023-10-18 15:22:25浏览次数:32  
标签:Flex end flex 布局 space 实用 start 对齐 属性

[非常实用的Flex布局 - 个人博客|沧沧凉凉的小站](https://www.cclliang.com/2020/10/01/%E9%9D%A2%E8%AF%95/%E9%9D%9E%E5%B8%B8%E5%AE%9E%E7%94%A8%E7%9A%84Flex%E5%B8%83%E5%B1%80/)

Flex布局

传统的布局,基于盒装模型,早期的前端开发就是一个叠盒子的过程,即各种<div>的互相嵌套。

传统的布局一般依赖position或者float属性控制盒子所在的位置,但是对于特殊布局就显得非常的不方便,比如:垂直居中、均匀分布等。

在2009年,W3C提出了一种新的布局方案,即现在非常常用的Flex布局,可以非常轻松的完成和实现各种页面布局。到目前为止,它已经获得了主流浏览器的支持。但遗憾的是,如果要兼容早期的IE版本,还是得使用传统的positionfloat,不过由于兼容以前的IE版本会增加非常多的成本,所以现在大部分开发者已经放弃兼容早期的IE。

Flex是Flexible Box的缩写,意为”弹性布局”,现在比较流行的响应式界面,就是使用Flex和媒体查询进行实现。

声明

任何一个容易都可以指定为Flex布局。

.box {
    display: flex;
}Copy

注意:设为 Flex 布局以后,子元素的floatclearvertical-align属性将失效。

容器的属性

flex-direction

flex-direction属性决定主轴的方向(即项目的排列方向)。

.box {
  flex-direction: row | row-reverse | column | column-reverse;
}Copy

点一点看效果

   

属性

  • row flex容器的主轴被定义为与文本方向相同。 主轴起点和主轴终点与内容方向相同。
  • row-reverse 表现和row相同,但是置换了主轴起点和主轴终点
  • column flex容器的主轴和块轴相同。主轴起点与主轴终点和书写模式的前后点相同
  • column-reverse 表现和column相同,但是置换了主轴起点和主轴终点

flex-wrap

默认情况下,项目都排在一条线(又称“轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

.box{
  flex-wrap: nowrap | wrap | wrap-reverse;
}Copy

点一点看效果

  

属性

  • nowrap flex 的元素被摆放到到一行,这可能导致溢出 flex 容器。 cross-start 会根据 flex-direction 的值 相当于 start 或 before。
  • wrap flex 元素 被打断到多个行中。cross-start 会根据 flex-direction 的值选择等于start 或before。cross-end 为确定的 cross-start 的另一端。
  • wrap-reverse 和 wrap 的行为一样,但是 cross-start 和 cross-end 互换。

flex-flow

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}Copy

justify-content

justify-content属性定义了项目在主轴上的对齐方式。

.box {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}Copy

点一点看效果

    

属性

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

align-items

align-items属性定义项目在交叉轴上如何对齐。

.box {
  align-items: flex-start | flex-end | center | baseline | stretch;
}Copy

点一点看效果

    

属性

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

align-content

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}Copy

点一点看效果

      

属性

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

子项上的属性

order

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

.item {
  order: <integer>;
}Copy

点一点看效果

  

flex-grow

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

.item {
  flex-grow: <number>; /* default 0 */
}Copy

点一点看效果

  

flex-shrink

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

.item {
  flex-shrink: <number>; /* default 1 */
}Copy

点一点看效果

  

flex-basis

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

.item {
  flex-basis: <length> | auto; /* default auto */
}Copy

点一点看效果

  

flex

flex属性是flex-growflex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}Copy

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

因为是上面3项的简写,所以这里就不再提供案例了。

align-self

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}Copy

点一点看效果

     

总结

我之前在做网页中会大量使用Flex,因为比起position或者float来讲实在是太过于方便了,其次用的比较多的就是positionfloat基本不怎么用到。

不过这些都要根据实际情况,因为老版本的IE仍然有一部分用户在使用,如果要兼容老版本的IE的话…那实在是很蛋疼。

标签:Flex,end,flex,布局,space,实用,start,对齐,属性
From: https://www.cnblogs.com/ministep/p/17772454.html

相关文章

  • C语言 内存布局
    GCC编译预处理->编译->汇编->链接预处理:头⽂件包含、宏替换、条件编译、删除注释...编译:主要进⾏词法、语法、语义分析等,检查⽆误后将预处理好的⽂件编译成汇编⽂件...汇编:将汇编⽂件转换成⼆进制⽬标⽂件...链接:将项⽬中的各个⼆进制⽂件+所需的库+启动代码链接成可执⾏⽂......
  • qt如何隐藏布局
    布局本身无法被隐藏,但是控件可以被隐藏;可以通过将整个布局放入控件中,通过隐藏控件来隐藏整个布局;下面以软键盘为例: 这样设计↑; 运行这样的代码↑; 运行效果↑:......
  • 前端url的几种实用情况
    一相对地址转绝对地址使用场景:某个函数需要在使用的时候传递一个地址,函数内部会利用这个地址进行某些操作(比如生成worker,生成image,数据转化等)如下:如果直接使用相对位置,会根据url进行拼接。但当一些利用利用了router的单页项目,页面的url并不能获取到真实的file地址。所......
  • 26个CSS超实用技巧
    1.文字溢出显示省略号单行文字:一定要设置宽度p{​•width:200px;​•overflow:hidden;text-overflow:ellipsis;white-space:nowrap;​​​}多行文字溢出显示省略号p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-l......
  • 音频处理实用AI工具
    最近在做音频处理相关的工作,主要有以下几个好用的工具。 1.语音转文字——whisper这是一款由OpenAI开发的语音转文字工具,项目地址位于:openai/whisper.这个工具是用来生成字幕的,现在的很多视频编辑软件也有“一键生成字幕”的功能。使用此工具需要提前安装好PyTorch和ffmpeg(......
  • 【前端开发】新版Chrome浏览器接口mock调试技巧,超实用
    给大家分享一个 Chrome117 更新中最实用的一个功能:在Network面板中发送mock请求。修改返回响应数据想要修改接口返回的数据,设置成特定的数据,首先打开 网络(Network) 面板,找到你需要Mock的接口,右键然后选择替换内容(Overridecontent): 这时候浏览器会提示:选择要用来......
  • C++类内存布局与虚继承
    类的内存布局本文参考浅析C++类的内存布局,做了一些修改和补充1.无继承的情况为了得到类的内存布局,先设置一下输入/d1reportAllClassLayout,结果会在输出窗口打印出。最后会打印很多类,基本上最后就是自己的类的布局,也可以指定类。如果写上/d1reportSingleClassLayoutXXX(X......
  • aFlex脚本入门
    aFlex脚本入门对于A10的aFelx脚本,相信很多人都知道,甚至用过,但是实际上很多工程师在各种项目中的使用可能都是按照模板进行修改,虽然能ok,但是却缺乏对aFelx脚本本质上的了解,所以在用户实际场景与脚本应用场景不完全一致的时候,就会碰到问题,不知如何修改。而更多的技术人员或者用户更......
  • Mybatis-Flex核心功能之@Column
    1、是什么?MyBatis-Flex提供了@Column用来对字段进行更多的配置public@interfaceColumn{/***字段名称*/Stringvalue()default"";/***是否忽略该字段,可能只是业务字段,而非数据库对应字段*/booleanignore()defaultfal......
  • Android入门教程 | UI布局之RelativeLayout 相对布局
    RelativeLayout简述RelativeLayout继承于android.widget.ViewGroup,按照子元素之间的位置关系完成布局,作为Android系统五大布局中最灵活也是最常用的一种布局方式,非常适合于一些比较复杂的界面设计。RelativeLayout和LinearLayout类似,都是ViewGroup,能“容纳”多个子view。R......