FlexBox的特点及使用场景分析


Flex Layout是在CSS3中出现的一种新的布局模式 它是为展示出更加复杂的app或者网页而设计的, W3C官方称其为CSS弹性盒子布局。它与块样式布局相似,(缺点:)但缺少对于更加复杂的文字或者文档布局等需求的实现,反过来,它可以简单实现web网页和app中经常需要的空格均分以及内容对齐的需求

特性如下:
  1. 可以在垂直或者水平方向以任意一种对齐方式进行样式布局
  2. 可以在单一轴线上布局也可以在多行内布局
  3. 随可用空间的变化进行响应式布局(能够调整其子元素的宽度或者高度以使其能在不同分辨率的屏幕下能用最好的方式去填充可用空间)

适用场景:
  1. Flexbox适用于包含有多个元素的盒子的样式渲染
  2. Flexbox适用于在子元素的尺寸未知或者动态的情况下,对子元素的对齐方式、排列方式以及排序顺序进行控制展示

一般情况下,当我们对一部分内容进行布局的时候,会使用盒模型。常见的布局手段即是结合padding与margin设置元素的display、float和position。但是这三种方法在设置元素位置的时候,有时会相对死板并且使css语句过多

比如:A是父容器,其中有B和C两个子元素,我们要设置B和C在同一行,并且B行内左对齐,C行内右对齐,以传统方式实现的话,我们需要在代码里边添加很多CSS相关代码,比如display、float等。

对于前边所述需求,可以用flex实现如下:
A:{
	flex-direction: row,	
	justifyContent: 'space-between',
},

可见,用很简单少量的代码就可实现样式需求。

但是,在使用FlexBox布局的过程中,需要注意的是(相关链 1相关链接2 ):
  1. 其所使用的长宽都是没有单位的,即所有的尺寸设置都是设备独立像素——这句话可以这样理解:带有固定单位的尺寸在不同屏幕分辨率的设备上显示效果会不同,而“设备独立像素”则会使得无单位尺寸在不同分辨率屏幕上显示相同的样式效果。
  2. React Native中的FlexBox 和Web CSS中FlexBox工作方式是一样的,但有些地方还是有些出入的,如:

    • flexDirection: React Native中默认为flexDirection:'column',在Web CSS中默认为flex-direction:'row'
    • alignItems: React Native中默认为alignItems:'stretch',在Web CSS中默认align-items:'flex-start'
    • flex: 相比Web CSS的flex接受多参数,如:flex: 2 2 10%;,但在 React Native中flex只接受一个参数
    • 不支持属性:align-content,flex-basis,order,flex-basis,flex-flow,flex-grow,flex-shrink



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们使用Flexbox布局时,需要设置容器的`display`属性为`flex`。然后,可以使用以下属性来控制容器及其子元素的布局: 1. `flex-direction`:设置主轴方向,可以为`row`(默认值,从左到右排列)、`row-reverse`(从右到左排列)、`column`(从上到下排列)和`column-reverse`(从下到上排列)。 2. `justify-content`:定义主轴上的对齐方式,包括`flex-start`(左对齐)、`flex-end`(右对齐)、`center`(居中对齐)、`space-between`(两端对齐,项目之间的间隔相等)和`space-around`(每个项目两侧的间隔相等)。 3. `align-items`:定义侧轴上的对齐方式,包括`flex-start`(顶部对齐)、`flex-end`(底部对齐)、`center`(居中对齐)、`stretch`(拉伸对齐)和`baseline`(基线对齐)。 4. `align-content`:定义多行项目在侧轴上的对齐方式,包括`flex-start`(顶部对齐)、`flex-end`(底部对齐)、`center`(居中对齐)、`stretch`(拉伸对齐)和`space-between`(两端对齐,项目之间的间隔相等)。 5. `flex-wrap`:定义项目是否换行,可以为`nowrap`(不换行,缩小项目)、`wrap`(换行,多行排列)和`wrap-reverse`(反向换行,多行排列)。 6. `flex-grow`:定义项目的放大比例,默认为`0`,即不放大。 7. `flex-shrink`:定义项目的缩小比例,默认为`1`,即可以缩小。 8. `flex-basis`:定义项目在主轴上的初始大小,默认为`auto`。 9. `flex`:定义项目的三个属性:`flex-grow`、`flex-shrink`、`flex-basis`。 下面是一个简单的Flexbox布局示例: ```html <!DOCTYPE html> <html> <head> <style> .container { display: flex; flex-direction: row; justify-content: space-between; align-items: center; border: 1px solid black; padding: 10px; } .item { flex: 1; margin: 10px; border: 1px solid black; text-align: center; } </style> </head> <body> <div class="container"> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> </div> </body> </html> ``` 在这个示例中,我们设置了容器的`display`属性为`flex`,并通过`flex-direction`、`justify-content`和`align-items`属性来控制容器的布局。同时,我们设置了子元素的`flex`属性,让它们在主轴上平均分配空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值