UNPKG

flex-layout

Version:
182 lines (162 loc) 2.7 kB
@flex-column: 24; .flex-clearfix() { &:before, &:after { content: " "; display: flex; box-sizing: border-box; width: 0; height: 0; font-size: 0; } &:after { clear: both; } } .flex-column, .flex-row { display: flex; flex-wrap: wrap; .flex-clearfix(); } .flex-column { flex-direction: row; } .flex-row { flex-direction: column; } .flex-around { justify-content: space-around; } .flex-between { justify-content: space-between; } .flex-baseline { align-items: baseline; } .flex-strech { align-items: stretch; } .flex-item { float: left; flex-grow: 1; } // 递归生成栅格 .build-item(@i) when (@i > 0) { .build-item((@i - 1)); // 栅格 .flex-item-@{i} { float: left; width: percentage(@i / @flex-column); } // 向左偏移 .flex-offset-@{i} { margin-left: percentage(@i / @flex-column); } // 排序 .flex-order-@{i} { order: @i; } } .build-item(@flex-column); // flex-row的对齐方式 .build-align(@type) when (@type = row) { &.flex-left { align-items: flex-start; } &.flex-right { align-items: flex-end; } &.flex-top { justify-content: flex-start; } &.flex-bottom { justify-content: flex-end; } &.flex-center { align-items: center; } &.flex-middle { justify-content: center; } } // flex-column的对齐方式 .build-align(@type) when (@type = column) { &.flex-left { justify-content: flex-start; } &.flex-right { justify-content: flex-end; } &.flex-top { align-items: flex-start; } &.flex-bottom { align-items: flex-end; } &.flex-center { justify-content: center; } &.flex-middle { align-items: center; } } .flex-column { .build-align(column); } .flex-row { .build-align(row); } [class*=flex-item] { &.flex-left { margin-right: auto; } &.flex-right { margin-left: auto; } &.flex-top { margin-bottom: auto; } &.flex-bottom { margin-top: auto; } &.flex-center { margin-left: auto; margin-right: auto; } &.flex-middle { margin-top: auto; margin-bottom: auto; } } .flex-sm-show, .flex-md-show { display: none; } @media (max-width: 992px) { .flex-md { flex-direction: column; .build-align(row); [class*=flex-item] { width: 100%; } } .flex-md-hide { display: none !important; } .flex-md-show { display: flex !important; } } @media (max-width: 768px) { .flex-sm { flex-direction: column; .build-align(row); [class*=flex-item] { width: 100%; } } .flex-sm-hide { display: none !important; } .flex-sm-show { display: flex !important; } }