css3 flexbox

关于css3 flex一些属性的效果详解。

首先设置一个class为container的div容器,并包含了5个class为flex-item的子元素。为了方便查看效果设置了宽高等基础的样式。默认的显示效果如图:

html结构为:

<div class="container">
  <div class="flex-item"></div>
  <div class="flex-item"></div>
  <div class="flex-item"></div>
  <div class="flex-item"></div>
  <div class="flex-item"></div>
</div>

给container添加display: flex;(为了方便查看后续效果,这里给五个子元素设置了不同的高度,并且写上了序号),子元素的div排列发生改变:(注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

可以看到五个元素并排排列,并且顶部是对齐的,并且默认的样式是不会随着浏览器宽度变化换行的。为了改变样式就引入了后续几个属性。

关于父元素容器的设置:

首先是justify-content,这个属性定义了浏览器如何分配容器主轴上的子元素之间的空间。

The CSS justify-content property defines how the browser distributes space between and around flex items along the main-axis of their container.

/* 从行首起始位置开始排列 (默认值)*/
justify-content: flex-start;

/* 从行尾位置开始排列 */
justify-content: flex-end;

/* 居中排列 */ 
justify-content: center;

/* 均匀排列每个元素
首个元素放置于起点,末尾元素放置于终点 */
justify-content: space-between;

/* 均匀排列每个元素
每个元素周围分配相同的空间 */
justify-content: space-around;

可以通过下面的图片来查看具体的效果:

第二个是align-item,和justify-content类似的方式,只是是在纵轴的方向上设置。

/* 对齐到侧轴起点 */
align-items: flex-start;

/* 对齐到侧轴终点 */
align-items: flex-end;

/* 在侧轴上居中 */
align-items: center;

/* 与基准线对齐 */
align-items: baseline;

/* 拉伸元素以适应 */
align-items: stretch;

第三个是align-content,定义了有多行时在纵轴上如何排布:

关于子元素的设置: