CSS的Flex布局(弹性盒子)

display:flex 是一种布局方式。它即可以应用于容器中,也可以应用于行内元素。是W3C提出的一种新的方案,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。 
民间说法:flex 就是一种布局方式,类似于 block,inline-block等

可以说包括我在内的大部分人,都是在被flex垂直水平居中方式所惊艳后才对其有所了解,以至于在日常开发中对于flex的使用,也确实更偏向于元素对齐方式的使用。

%title插图%num
Flex 的 justify-content 与 align-items属性

justify-content 子项 属性(水平)对齐
align-items 子项 属性(垂直)对齐

1

justify-content:center

1

align-items:center

Flex 的 Flex-direction属性

Flex-direction 调整 子项 主轴方向的对齐(默认为水平方向) 包括row(水平)、column(垂直)、row-reverse(平铺水平)、column-reverse(平铺垂直)

1
2
3
4
5

column

1
2
3
4
5

row

flex flex-wrap实现溢出自动换行

当子项布局某个总长度超过父项自身长度后,会有压缩或溢出两种可能;

1
2
3
4
5
6
7

flex-shrink : 1

1
2
3
4
5
6
7

flex-shrink : 0

设置 flex-wrap : wrap; (换行),实现换行效果

1
2
3
4
5
6

display:flex 注意事项和方法

设为Flex布局以后,子元素的float、clear和vertical-align属性将失效;

我们在做flex布局的时候经常会遇到这种问题:
父级元素添加 display:flex;
子集元素添加 width:100px;
但是子集元素宽失效

%title插图%num
%title插图%num

当我们不想改变左边盒子的大小;现在是左边盒子跟着自动伸缩了,但是根本不是我们想要的,因为左边已经被挤没了。

//在不参与伸缩的子项上 修改flex-shrink值为0 (默认为1)
flex-shrink:0;
%title插图%num

达到效果 右边盒子溢出 但不会改变左侧盒子固定尺寸

发表回复