BootStrap栅格系统

大家好,我是IT修真院北京分院web第31期学员金立剑

【js-2】BootStrap栅格系统

分享人:金立剑

目录

1.背景介绍

2.知识剖析

3.解决方案

4.编码实战

5.扩展思考

6.参考文献

7.更多讨论

1.背景介绍

Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。

2.知识剖析


2.1 原理

网格系统的实现原理非常简单,仅仅是通过定义容器大小,平分12份(也有平分成24份或32份,但12份是最常见的),再调整内外边距,最后结合媒体查询,就制作出了强大的响应式网格系统。Bootstrap框架中的网格系统就是将容器平分成12份。

在使用的时候大家可以根据实际情况重新编译LESS(或Sass)源码来修改12这个数值(也就是换成24或32,当然你也可以分成更多,但不建议这样使用)。

2.2 使用规则

1 行(.row)必须包含在容器(.container)中,以便为其赋予合适的对齐方式和内距(padding)。

2 在行(.row)中可以添加列(.column),最多分配12。

3 具体内容应当放置在列容器(column)之内,而且只有列(column)才可以作为行容器(.row)的直接子元素

4 类似 .row 和 .col-sm-4 这种预定义的类,可以用来快速创建栅格布局。

5 通过为“列(column)”设置 padding 属性,从而创建列与列之间的间隔


2.3栅格选项

当屏宽小于768px(即小屏)时,列的划分以.col-xs-后面的数字为准。如果没定义.col-xs-,就会变成单列且宽度和row相等。

当屏宽在768px和992px之间(即平板屏)时,列的划分以.col-sm-后面的数字为准。如果没有定义col-sm-,以.col-xs-为准。

当屏宽在992px和1200px之间(即中屏)时,列的划分以.col-md-后面的数字为准。如果没有定义.col-md-,以col-sm-或col-xs-为准。

当屏宽大于1200px(即大屏)时,列的划分以.col-lg-后面的数字为准。如果没有定义.col-md-,以.col-md-或col-sm-或col-xs-为准。

3.解决方案


1) 列组合

列组合简单理解就是更改数字来合并列(原则:列总和数不能超12),有点类似于表格的colspan属性

2) 列偏移

通过 col-md-offset-*来实现

3) 列排序

列排序其实就是改变列的方向,就是改变左右浮动,并且设置浮动的距离。在Bootstrap框架的网格系统中是通过添加类名“col-md-push-*”和“col-md-pull-*” (其中星号代表移动的列组合数) 实现列的向左或向右排序

4) 列嵌套

Bootstrap框架的网格系统还支持列的嵌套。你可以在一个列中添加一个或者多个行(row)容器,然后在这个行容器中插入列

4.编码实战

5.扩展思考


Bootstrap 有哪些缺点?

个人认为,所谓优点和缺点,多数根据业务需求而定。比如 bootstrap 2以后的版本不支持IE6。当你的网站需要支持ie6的时候,这时是缺点。当网站不需要支持ie6.减少了兼容代码的处理,马上又变成了优点。总体而已,Bootstrap 属于前端 ui 库,通过现成的ui组件能够迅速搭建前端页面。同时还可以用less重新设计组件。对于前端技术一般的后台工程师,省去了很多编写前端处理时的痛苦。个人使用搭个博客什么的比较方便。相对于公司,直接使用 Bootstrap 感觉不多,大公司都有自己的前端开发设计人员,也会设计自己的css库。当然,Bootstrap开源,对于学习如何组织css还是很有必要

6.参考文献


参考文献:Bootstrap每天必学之栅格系统(布局)

7.更多讨论

1.bootstrap栅格系统所定义的breakpoint 为什么是480 768 992 1200?

xs: < 575.98px,适应竖屏下的手机

iPhone 6p 的对应分辨率宽度为 414px,鲜有比这个还宽的手机;

题中说的 480px,应该是 Bootstrap 2.x 年代的时候的事了,当时 iPhone 的尺寸是是 320*480px,正常情况下来说是够用的

还是有人希望横竖屏展示不一致的效果,所以还是使用了 500 以上的宽度进行区分

实际上我觉得这个尺寸以 576 来判断有些过宽,我这边实践上用的更多是以 375 作为标准设计然后以 414 以下作判断横竖屏依据

sm: 576px ~ 767.98px,适应较小的横屏下的手机。

比如 iPhone 6 的分辨率高度 667px, 6 plus 为 736px,一般不会突破 768 的天际。然而 iPhone X 是 812px…… 但安全区域还是只有 734px,所以也还算勉强在范围内;

数值上可以看到 320*16/9 = 568.88,这意味着有些等效宽度 320px 的小一点的 Android 手机上是横屏也拿不到这个尺寸范围的;

这个值向上对齐到 12 columns 网格就是 576,而且是很漂亮的 48 * 12 网格;

比较惨的大概是 iPhone 5 的尺寸,高度为 568,差了一点点

好像 V3 版本本来用的就是 540 左右的数值,应该就是为了适应 iPhone 5 / 小屏 Android 的横屏,只是后来改掉了,大概也是觉得现在这种手机比较少了

576 还很好记,因为视频 SDTV 格式刚好也是用 576i 的分辨率,而且挺多字幕组也喜欢输出 576p 格式的视频,因为刚好在 1024 宽的 iPad 上可以 16:9 展示,完美 :D

md: 768px~991.98px,适应 iPad mini 以上的尺寸的竖屏展示;768 刚好就是 iPad 的竖屏高度

正常情况下来说 640px 就够了(360*640 是挺常见的大屏手机用的分辨率),但因为 6 plus 虽然用的还是 1920p 宽的屏幕但却等效分辨率用的 736 px,所以…… 1280 * 720p 的平板哭晕在厕所,不过还好 1280 * 800 的不受影响

lg: > 992px,适应横屏下的 iPad 及以上平板设备的尺寸;

比较让我困惑的是为什么不用 996px,起码能被 12 整除;估计是为了避免个别 PC / 平板应用边框过粗以及滚动条的原因使得内容缩紧,所以留出 28px 的宽度避免被挤压;

此外,有些老一点的 VGA 电视或者投影仪只能展示 1024 * 768,这种场景下就还是得适配这个宽度了;

其实在这个场景下个人用 960px 宽度更多一点,计算起来比较整齐,24 / 16 / 12 栏网格都能用,这可是个经典的网格设计宽度;

xl: > 1200px:适应 1280 以上的场景,通常为PC / Mac使用;现在 iPad Pro 也已经超过这个尺寸了

2.bootstrap的栅格系统为什么是12列,有没有18列,24列等等啊,采用12列有什么好处?

因为12是1,2,3,4,6的最小公倍数,所以12列栅格系统相对较灵活,支持将一行分成1列,2列,3列,4列,6列。若是想要支持5列,那1,2,3,4,5的最小公倍数是60,而60这个数对于栅格系统来说显然太大了。18能均分4列不?24能做的12都能做,所以12是最好的选择。


3.bootstrap有哪些常用组件?

下拉菜单,摁钮组,导航,标签,列表,巨幕......

你可能感兴趣的:(BootStrap栅格系统)