grid-style
Version:
Grid layout implemented by flex box.
762 lines (701 loc) • 16.5 kB
CSS
@charset "UTF-8";
/*
备选实现:float: left
1. 使用 float: left 实现 grid 布局时,需在子元素 ::before :: after 设置 {
display: table; content: '' } 来消除 inline-block 子元素相互之间以及他们与
父容器元素之间的空白
2. 注意在使用 float 时,块级 元素中的行内块级子元素之间的空白问题,在使用 flexbox
的情况下,这些空白将被忽略,但其他情况将出现空白。
https://css-tricks.com/fighting-the-space-between-inline-block-elements/
3. disply: flex 与 float: left 冲突(高优先级为 flex),那么同时设置时,在不支持
display: flex 的浏览器上只会有 float: left 生效(即备选方案生效)
*/
.grid {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.grid.no-wrap {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.grid.col {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.grid.cr {
-webkit-box-orient: vertical;
-webkit-box-direction: reverse;
-ms-flex-direction: column-reverse;
flex-direction: column-reverse;
}
.grid.row {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.grid.rr {
-webkit-box-orient: horizontal;
-webkit-box-direction: reverse;
-ms-flex-direction: row-reverse;
flex-direction: row-reverse;
}
.grid-cell {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
.grid-cell-1 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 8.33333%;
flex-basis: 8.33333%;
max-width: 8.33333%;
}
.grid-cell-2 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 16.66667%;
flex-basis: 16.66667%;
max-width: 16.66667%;
}
.grid-cell-3 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 25.0%;
flex-basis: 25.0%;
max-width: 25.0%;
}
.grid-cell-4 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 33.33333%;
flex-basis: 33.33333%;
max-width: 33.33333%;
}
.grid-cell-5 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 41.66666%;
flex-basis: 41.66666%;
max-width: 41.66666%;
}
.grid-cell-6 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 50.0%;
flex-basis: 50.0%;
max-width: 50.0%;
}
.grid-cell-7 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 58.33333%;
flex-basis: 58.33333%;
max-width: 58.33333%;
}
.grid-cell-8 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 66.66666%;
flex-basis: 66.66666%;
max-width: 66.66666%;
}
.grid-cell-9 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 75.0%;
flex-basis: 75.0%;
max-width: 75.0%;
}
.grid-cell-10 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 83.33333%;
flex-basis: 83.33333%;
max-width: 83.33333%;
}
.grid-cell-11 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 91.66666%;
flex-basis: 91.66666%;
max-width: 91.66666%;
}
.grid-cell-12 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 100.0%;
flex-basis: 100.0%;
max-width: 100.0%;
}
.grid[grid-gutters="1"] > .grid-cell {
padding: 0 0.5em;
}
.grid[grid-gutters="2"] > .grid-cell {
padding: 0 1em;
}
.grid[grid-gutters="3"] > .grid-cell {
padding: 0 1.5em;
}
.grid[grid-gutters="4"] > .grid-cell {
padding: 0 2em;
}
.grid[grid-gutters="5"] > .grid-cell {
padding: 0 2.5em;
}
.grid[grid-gutters="6"] > .grid-cell {
padding: 0 3em;
}
.grid[grid-gutters="7"] > .grid-cell {
padding: 0 3.5em;
}
.grid[grid-gutters="8"] > .grid-cell {
padding: 0 4em;
}
.grid[grid-gutters="9"] > .grid-cell {
padding: 0 4.5em;
}
.grid[grid-gutters="10"] > .grid-cell {
padding: 0 5em;
}
.grid-top {
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.grid-center {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.grid-bottom {
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
}
.grid-jc-start {
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.grid-jc-end {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
}
.grid-jc-center {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.grid-jc-between {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.grid-jc-around {
-ms-flex-pack: distribute;
justify-content: space-around;
}
.grid-cell-top {
-ms-flex-item-align: start;
align-self: flex-start;
}
.grid-cell-bottom {
-ms-flex-item-align: end;
align-self: flex-end;
}
.grid-cell-center {
-ms-flex-item-align: center;
align-self: center;
}
/*
默认值
flex-grow: 0
flex-shrink: 1
flex-basis: auto
flex-basis 优先级高于 flex-grow,但尺寸不会小于 flex-grow (在非 0 的情况下)且不大于父容器
*/
.grid-fit > .grid-cell {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
.grid-full > .grid-cell {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
max-width: 100%;
}
.grid-2 > .grid-cell {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 50%;
flex-basis: 50%;
max-width: 50%;
}
.grid-3 > .grid-cell {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 33.3333%;
flex-basis: 33.3333%;
max-width: 33.3333%;
}
.grid-4 > .grid-cell {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 25%;
flex-basis: 25%;
max-width: 25%;
}
@media (min-width: 576px) {
.grid-sm-1 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 8.33333%;
flex-basis: 8.33333%;
max-width: 8.33333%;
}
.grid-sm-2 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 16.66667%;
flex-basis: 16.66667%;
max-width: 16.66667%;
}
.grid-sm-3 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 25.0%;
flex-basis: 25.0%;
max-width: 25.0%;
}
.grid-sm-4 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 33.33333%;
flex-basis: 33.33333%;
max-width: 33.33333%;
}
.grid-sm-5 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 41.66667%;
flex-basis: 41.66667%;
max-width: 41.66667%;
}
.grid-sm-6 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 50.0%;
flex-basis: 50.0%;
max-width: 50.0%;
}
.grid-sm-7 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 58.33333%;
flex-basis: 58.33333%;
max-width: 58.33333%;
}
.grid-sm-8 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 66.66667%;
flex-basis: 66.66667%;
max-width: 66.66667%;
}
.grid-sm-9 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 75.0%;
flex-basis: 75.0%;
max-width: 75.0%;
}
.grid-sm-10 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 83.33333%;
flex-basis: 83.33333%;
max-width: 83.33333%;
}
.grid-sm-11 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 91.66667%;
flex-basis: 91.66667%;
max-width: 91.66667%;
}
.grid-sm-12 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 100.0%;
flex-basis: 100.0%;
max-width: 100.0%;
}
}
@media (min-width: 768px) {
.grid-md-1 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 8.33333%;
flex-basis: 8.33333%;
max-width: 8.33333%;
}
.grid-md-2 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 16.66667%;
flex-basis: 16.66667%;
max-width: 16.66667%;
}
.grid-md-3 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 25.0%;
flex-basis: 25.0%;
max-width: 25.0%;
}
.grid-md-4 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 33.33333%;
flex-basis: 33.33333%;
max-width: 33.33333%;
}
.grid-md-5 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 41.66667%;
flex-basis: 41.66667%;
max-width: 41.66667%;
}
.grid-md-6 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 50.0%;
flex-basis: 50.0%;
max-width: 50.0%;
}
.grid-md-7 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 58.33333%;
flex-basis: 58.33333%;
max-width: 58.33333%;
}
.grid-md-8 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 66.66667%;
flex-basis: 66.66667%;
max-width: 66.66667%;
}
.grid-md-9 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 75.0%;
flex-basis: 75.0%;
max-width: 75.0%;
}
.grid-md-10 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 83.33333%;
flex-basis: 83.33333%;
max-width: 83.33333%;
}
.grid-md-11 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 91.66667%;
flex-basis: 91.66667%;
max-width: 91.66667%;
}
.grid-md-12 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 100.0%;
flex-basis: 100.0%;
max-width: 100.0%;
}
}
@media (min-width: 992px) {
.grid-lg-1 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 8.33333%;
flex-basis: 8.33333%;
max-width: 8.33333%;
}
.grid-lg-2 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 16.66667%;
flex-basis: 16.66667%;
max-width: 16.66667%;
}
.grid-lg-3 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 25.0%;
flex-basis: 25.0%;
max-width: 25.0%;
}
.grid-lg-4 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 33.33333%;
flex-basis: 33.33333%;
max-width: 33.33333%;
}
.grid-lg-5 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 41.66667%;
flex-basis: 41.66667%;
max-width: 41.66667%;
}
.grid-lg-6 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 50.0%;
flex-basis: 50.0%;
max-width: 50.0%;
}
.grid-lg-7 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 58.33333%;
flex-basis: 58.33333%;
max-width: 58.33333%;
}
.grid-lg-8 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 66.66667%;
flex-basis: 66.66667%;
max-width: 66.66667%;
}
.grid-lg-9 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 75.0%;
flex-basis: 75.0%;
max-width: 75.0%;
}
.grid-lg-10 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 83.33333%;
flex-basis: 83.33333%;
max-width: 83.33333%;
}
.grid-lg-11 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 91.66667%;
flex-basis: 91.66667%;
max-width: 91.66667%;
}
.grid-lg-12 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 100.0%;
flex-basis: 100.0%;
max-width: 100.0%;
}
}
@media (min-width: 1200px) {
.grid-xl-1 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 8.33333%;
flex-basis: 8.33333%;
max-width: 8.33333%;
}
.grid-xl-2 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 16.66667%;
flex-basis: 16.66667%;
max-width: 16.66667%;
}
.grid-xl-3 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 25.0%;
flex-basis: 25.0%;
max-width: 25.0%;
}
.grid-xl-4 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 33.33333%;
flex-basis: 33.33333%;
max-width: 33.33333%;
}
.grid-xl-5 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 41.66667%;
flex-basis: 41.66667%;
max-width: 41.66667%;
}
.grid-xl-6 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 50.0%;
flex-basis: 50.0%;
max-width: 50.0%;
}
.grid-xl-7 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 58.33333%;
flex-basis: 58.33333%;
max-width: 58.33333%;
}
.grid-xl-8 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 66.66667%;
flex-basis: 66.66667%;
max-width: 66.66667%;
}
.grid-xl-9 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 75.0%;
flex-basis: 75.0%;
max-width: 75.0%;
}
.grid-xl-10 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 83.33333%;
flex-basis: 83.33333%;
max-width: 83.33333%;
}
.grid-xl-11 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 91.66667%;
flex-basis: 91.66667%;
max-width: 91.66667%;
}
.grid-xl-12 {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-preferred-size: 100.0%;
flex-basis: 100.0%;
max-width: 100.0%;
}
}
.grid .offset-1 {
margin-left: 8.33333%;
}
.grid .offset-2 {
margin-left: 16.66667%;
}
.grid .offset-3 {
margin-left: 25.0%;
}
.grid .offset-4 {
margin-left: 33.33333%;
}
.grid .offset-5 {
margin-left: 41.66667%;
}
.grid .offset-6 {
margin-left: 50.0%;
}
.grid .offset-7 {
margin-left: 58.33333%;
}
.grid .offset-8 {
margin-left: 66.66667%;
}
.grid .offset-9 {
margin-left: 75.0%;
}
.grid .offset-10 {
margin-left: 83.33333%;
}
.grid .offset-11 {
margin-left: 91.66667%;
}
.grid .offset-12 {
margin-left: 100.0%;
}