🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## flex版栅格布局 > 栅格系统中的列是通过指定1到12的值来表示其跨越的范围。例如,三个等宽的列可以使用三个 .col-xs-4 来创建。 Bootstrap 是把row分为12格,你需要决定你要用的区块占多少格,如果一行超过12格将会另起一行。显然这有两个缺点: 1. 如果想要五等分是办不到的 12 / 5 = 2.22,表示每个等分块占 2.22 个格子,但格子是不可再分的,不可能存在半个格子,所以这就办不到。每个块只能占 被12整除的格子数,如 1 2 3 4 6 12 2. 我希望三等分,要自己先计算出每一块需要四个格子,然后写 col-*-4,这样每次都多了一次计算 而flex 根本不是格子的概念,而是 你希望块占row的比例,c-2表示占 1/2,即一半,而不需要你去计算这需要多少个格子,你只需要说你要多少比例就行。 ```css /* flex栅格布局 */ .container, .container-fluid { padding-left: 15px; padding-right: 15px; width: 100%; margin: auto; } .row { display: flex; flex-wrap: wrap; margin-left: -15px; margin-right: -15px; } [class*=col-] { padding-left: 15px; padding-right: 15px; } [class*=visible-] { display: none; } [class*=hidden-] { display: block; } /* 手机(移动优先) */ .visible-xs { display: block; } .hidden-xs { display: none; } .col-xs-1 { flex: 0 0 100%; width: 100%; } .col-xs-0, .col-xs-full { flex: 1; width: auto; } .col-xs-2 { flex: 0 0 50%; /* 解决嵌套时的问题 */ width: 50%; } .col-xs-3 { flex: 0 0 33.3333%; width: 33.3333%; } .col-xs-4 { flex: 0 0 25%; width: 25%; } .col-xs-5 { flex: 0 0 20%; width: 20%; } .col-xs-6 { flex: 0 0 16.6666%; width: 16.6666%; } .col-xs-7 { flex: 0 0 14.2857%; width: 14.2857%; } .col-xs-8 { flex: 0 0 12.5%; width: 12.5%; } .col-xs-9 { flex: 0 0 11.1111%; width: 11.1111%; } .col-md-10 { flex: 0 0 10%; width: 10%; } /* 平板 */ @media (min-width: 768px) { .container { max-width: 750px; } .visible-sm { display: block; } .hidden-sm { display: none; } .col-sm-1 { flex: 0 0 100%; width: 100%; } .col-sm-0, .col-sm-full { flex: 1; width: auto; } .col-sm-2 { flex: 0 0 50%; width: 50%; } .col-sm-3 { flex: 0 0 33.3333%; width: 33.3333%; } .col-sm-4 { flex: 0 0 25%; width: 25%; } .col-sm-5 { flex: 0 0 20%; width: 20%; } .col-sm-6 { flex: 0 0 16.6666%; width: 16.6666%; } .col-sm-7 { flex: 0 0 14.2857%; width: 14.2857%; } .col-sm-8 { flex: 0 0 12.5%; width: 12.5%; } .col-sm-9 { flex: 0 0 11.1111%; width: 11.1111%; } .col-sm-10 { flex: 0 0 10%; width: 10%; } } /* 中等屏幕 */ @media (min-width: 992px) { .container { max-width: 970px; } .visible-md { display: block; } .hidden-md { display: none; } .col-md-1 { flex: 0 0 100%; width: 100%; } .col-md-0, .col-md-full { flex: 1; width: auto; } .col-md-2 { flex: 0 0 50%; width: 50%; } .col-md-3 { flex: 0 0 33.3333%; width: 33.3333%; } .col-md-4 { flex: 0 0 25%; width: 25%; } .col-md-5 { flex: 0 0 20%; width: 20%; } .col-md-6 { flex: 0 0 16.6666%; width: 16.6666%; } .col-md-7 { flex: 0 0 14.2857%; width: 14.2857%; } .col-md-8 { flex: 0 0 12.5%; width: 12.5%; } .col-md-9 { flex: 0 0 11.1111%; width: 11.1111%; } .col-md-10 { flex: 0 0 10%; width: 10%; } } /* 大屏 */ @media (min-width: 1200px) { .container { max-width: 1170px; } .visible-lg { display: block; } .hidden-lg { display: none; } .col-lg-1 { flex: 0 0 100%; width: 100%; } .col-lg-0, .col-lg-full { flex: 1; width: auto; } .col-lg-2 { flex: 0 0 50%; width: 50%; } .col-lg-3 { flex: 0 0 33.3333%; width: 33.3333%; } .col-lg-4 { flex: 0 0 25%; width: 25%; } .col-lg-5 { flex: 0 0 20%; width: 20%; } .col-lg-6 { flex: 0 0 16.6666%; width: 16.6666%; } .col-lg-7 { flex: 0 0 14.2857%; width: 14.2857%; } .col-lg-8 { flex: 0 0 12.5%; width: 12.5%; } .col-lg-9 { flex: 0 0 11.1111%; width: 11.1111%; } .col-lg-10 { flex: 0 0 10%; width: 10%; } } @media (min-width: 1300px) { .container { max-width: 1200px; } } @media (min-width: 1400px) { .container { max-width: 1300px; } } @media (min-width: 1500px) { .container { max-width: 1400px; } } @media (min-width: 1600px) { .container { max-width: 1500px; } } /* 超大屏幕 */ @media (min-width: 2200px) {} /* 打印控制 */ .visible-print { display: none; } .hidden-print { display: initial; } @media print { .visible-print { display: initial; } .hidden-print { display: none; } } ``` 样式类名 与 [Bootstrap](https://v3.bootcss.com/css) 一致 ---- ### 扩展 [全局 CSS 样式 · Bootstrap v3 中文文档 - 栅格系统](https://v3.bootcss.com/css/#grid) [Flex 布局教程:语法篇 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html) [Flex 布局教程:实例篇 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2015/07/flex-examples.html) ---- last update: 2020-05-04 15:37