flex 常见用法终极版

相信大家都体验过 flex 布局的强大。这里是flex的常见的用法集合。

可能刚开始会不习惯这种复杂的命名,但是如果适应了,就会觉得很好用,指数级提高开发效率。

一般建议在项目全局引入。

下面分别列出了纯css版本,还有sass版本,大家也可以根据项目的需求,进行删减和增加。

演示链接

http://userkang.com/html-css-js/flex.html

如果你想快速找到自己需要的布局方式,可以直接在演示页面查看源码。部分demo页面截图如下:
在这里插入图片描述

用法说明:

// .flex flex容器默认水平流方向
// .flecol flex容器垂直流方向
// .flex-v-center 相对于外容器呈一行垂直居中,水平居左
// .flexcol-h-center 相对外容器呈列垂直底部对齐,水平居中
// .flexcol-v-center 相对外容器呈列垂直居中,水平居左
// .flex-h-center 相对于外容器呈一行垂直顶部对齐,水平居中
// .flex-justify-v-center 伸缩项目相对外容器呈一行垂直居中,水平两端对齐
// .flex-h-justify 相对于外容器一行垂直顶部对齐,水平两端对齐
// .flex-v-end 相对于外容器呈一行垂直底部对齐,水平居左
// .flex-end-v-center 伸缩项目相对外容器呈一行垂直居中,水平居右
// .flex-all-center 相对外容器呈一行垂直居中,水平居中
// .flexcol-all-center 相对外容器呈列垂直居中,水平居中
// .flexcol-justify-h-center 伸缩项目相对外容器呈列垂直两端对齐,水平居中
// .flexcol-justify 伸缩项目相对外容器呈列垂直两端对齐,水平居左

css版本:

/**
 *  flex弹性布局
 */
.flex,
.flex-v-center,
.flex-h-center,
.flex-h-justify,
.flex-v-end,
.flex-justify-v-center,
.flex-end-v-center,
.flex-all-center {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; 
}

[class*='flexcol'] {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
      flex-direction: column; 
}

.flex-v-center,
.flex-justify-v-center,
.flex-end-v-center,
.flexcol-h-center,
.flexcol-justify-h-center,
.flex-all-center,
.flexcol-all-center {
  -webkit-box-align: center;
  -ms-flex-align: center;
      align-items: center; 
}

.flex-h-center,
.flexcol-v-center,
.flex-all-center,
.flexcol-all-center {
  -webkit-box-pack: center;
  -ms-flex-pack: center;
      justify-content: center; 
}

.flex-v-end {
  -webkit-box-align: end;
  -ms-flex-align: end;
      align-items: flex-end; 
}

.flex-h-justify,
.flex-justify-v-center,
.flexcol-justify {
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
      justify-content: space-between; 
}

.flex-end-v-center {
  -webkit-box-pack: end;
  -ms-flex-pack: end;
      justify-content: flex-end; 
}

.flex-item {
  -webkit-box-flex: 1;
  -ms-flex: 1;
      flex: 1;
}

sass版本:

/**
 *  flex弹性布局
 */

// flexible容器初始化
@mixin flex() {
  display: -webkit-box;
  display: -webkit-flex;
  display: flex;
}
// 内联flex容器
@mixin inline-flex() {
  display: -webkit-inline-box;
  display: -webkit-inline-flex;
  display: inline-flex;
}
// 伸缩流垂直方向
@mixin flex-direction-column() {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  flex-direction: column;
}
// 主轴两端对齐
@mixin flex-main-justify() {
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}
// 主轴元素均匀分布,两端保留子元素与子元素之间间距大小的一半
@mixin flex-main-around() {
  -webkit-box-pack: justify;
  -webkit-justify-content: space-around;
  justify-content: space-around;
}
// 主轴中间对齐
@mixin flex-main-center() {
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
}
// 主轴底部对齐
@mixin flex-main-end() {
  -webkit-box-pack: end;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}
// 侧轴居中对齐
@mixin flex-cross-center() {
  -webkit-box-align: center;
  -webkit-align-items: center;
  align-items: center;
}
// 侧轴顶边对齐
@mixin flex-cross-start() {
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
  align-items: flex-start;
}
// 侧轴底部对齐
@mixin flex-cross-end() {
  -webkit-box-align: end;
  -webkit-align-items: flex-end;
  align-items: flex-end;
}
// 侧轴基线对齐
@mixin flex-cross-baseline() {
  -webkit-box-align: baseline;
  -webkit-align-items: baseline;
  align-items: baseline;
}
// 给伸缩项目赋予自由伸缩的能力
@mixin flex-item() {
  -webkit-box-flex: 1;
  -webkit-flex: 1;
  flex: 1;
}
@mixin flex-auto() {
  -webkit-box-flex:1;
  -webkit-flex:auto;
  flex:auto;
}

// .flex flex容器默认水平流方向
// .flecol flex容器垂直流方向
// .flex-v-center 相对于外容器呈一行垂直居中,水平居左
// .flexcol-h-center 相对外容器呈列垂直底部对齐,水平居中
// .flexcol-v-center 相对外容器呈列垂直居中,水平居左
// .flex-h-center 相对于外容器呈一行垂直顶部对齐,水平居中
// .flex-justify-v-center 伸缩项目相对外容器呈一行垂直居中,水平两端对齐
// .flex-h-justify 相对于外容器一行垂直顶部对齐,水平两端对齐
// .flex-v-end 相对于外容器呈一行垂直底部对齐,水平居左
// .flex-end-v-center 伸缩项目相对外容器呈一行垂直居中,水平居右
// .flex-all-center 相对外容器呈一行垂直居中,水平居中
// .flexcol-all-center 相对外容器呈列垂直居中,水平居中
// .flexcol-justify-h-center 伸缩项目相对外容器呈列垂直两端对齐,水平居中
// .flexcol-justify 伸缩项目相对外容器呈列垂直两端对齐,水平居左

// flex容器默认水平流方向共同样式
.flex,
.flex-v-center,
.flex-h-center,
.flex-h-justify,
.flex-v-end,
.flex-justify-v-center,
.flex-end-v-center,
.flex-all-center {
  @include flex();
}
// flex容器垂直流方向共同样式
[class*='flexcol'] {
  @include flex();
  @include flex-direction-column();
}

.flex-v-center,
.flex-justify-v-center,
.flex-end-v-center,
.flexcol-h-center,
.flexcol-justify-h-center,
.flex-all-center,
.flexcol-all-center {
  @include flex-cross-center();
}

.flex-h-center,
.flexcol-v-center,
.flex-all-center,
.flexcol-all-center {
  @include flex-main-center();
}

.flex-v-end {
  @include flex-cross-end();
}

.flex-h-justify,
.flex-justify-v-center,
.flexcol-justify {
  @include flex-main-justify();
}

.flex-end-v-center {
  @include flex-main-end();
}

// 作用于伸缩项目,均分剩余空间
.flex-item {
  @include flex-item();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值