Bootstrap 4重大更新,亮点解读


8月19日对Bootstrap来说是个特别的日子——不仅是项目四周年纪念日,也是经过了一年密集开发之后发布Bootstrap 4内测版的日子。Bootstrap 4是一次重大更新,几乎涉及每行代码。

新增功能

Bootstrap 4中有太多重大的更新,本文不能面面俱到,下面是一些颇受关注的亮点:

  • 从Less迁移到Sass: 现在,Bootstrap已加入Sass的大家庭中。得益于Libsass,Bootstrap的编译速度比以前更快;

  • 改进网格系统:新增一个网格层适配移动设备,并整顿语义混合。

  • 支持选择弹性盒模型(flexbox):这是项划时代的功能——只要修改一个Boolean变量,就可以利用flexbox的优势快速布局。

  • 废弃了wells、thumbnails和panels,使用cards代替:Cards是个全新概念,但使用起来与wells、thumbnails及panels很像,且更方便。

  • 将所有HTML重置样式表整合到Reboot中:在用不了Normalize.css的地方可以用Reboot了,它提供了更多选项。例如box-sizing: border-box、margin tweaks等都存放在一个单独的 Sass 文件中。

  • 新的自定义选项:不再像上个版本一样,将渐变、淡入淡出、阴影等效果分放在单独的样式表中。而是将所有选项都移到一个Sass变量中。想要给全局或考虑不到的角落定义一个默认效果?很简单,只要更新变量值,然后重新编译就可以了。

  • 不再支持IE8,使用rem和em单位:放弃对IE8的支持意味着开发者可以放心地利用CSS的优点,不必研究css hack技巧或回退机制了。使用rem和em代替px单位,更适合做响应式布局,控制组件大小。如果要支持IE8,只能继续用Bootstrap 3。

  • 重写所有JavaScript插件:为了利用JavaScript的新特性,Bootstrap 4用ES6重写了所有插件。现在提供UMD支持、泛型拆解方法、选项类型检查等特性。

  • 改进工具提示和popovers自动定位:这部分要感谢Tether工具的帮助。

  • 改进文档:所有文档以Markdown格式重写,添加了一些方便的插件组织示例和代码片段,文档使用起来会更方便,搜索的优化工作也在进行中。

  • 更多变化:支持自定义窗体控件、空白和填充类,此外还包括新的实用程序类等。

以上更新只是冰山一角, v4版共有1100多次commits和 12万行代码更新,这些更新可以在v4-alpha文档 中查看。

开发计划

v4版本所有的源代码都在Github的v4-dev分支上开源。此外,还有一个v4开发和跟踪pr ,公布master的changes列表和待开发列表。大家可以贡献自己的代码,来让这个项目变得更好。

总体的开发和发布计划如下:

  • 还会在不断改进中发布几个alpha版本;

  • 新特性和新功能冻结之后发布两个Beta版本进行充分测试;

  • 发布 2 个候选版本,测试是否能用于生产环境;

  • 发布最终版本。

Slack上还有个专门讨论v4的频道,Bootstrapers可以点击这里加入。

支持v3

发布Bootstrap 3时,Bootstrap曾放弃了对2.x版本的支持,给很多用户造成了麻烦,同样的错误不会犯第二次。在不久的将来,开发团队还会继续修复v3的bug,改进文档。v4最终发布之后,v3的文档也不会下线。

One more thing……

除了发布Bootstrap 4 alpha外,官方还发布了Bootstrap主题

这些主题耗费的精力很大,它们自己就有很多工具集,和Bootstrap本身一样。

作为开始,发布的主题有: dashboardapplication,和marketing,使用multiple-use license 协议。

点击这里查看更多主题信息。

反馈

  1. 有人提到,在v3.5.5(最后的稳定版本)中,bootstrap.min.css是123KB,而在新的4.0.0alpha bootstrap.min.css 中只有88KB,值得庆祝。

  2. 有人反馈说dashboard主题并不是完完全全的响应式,比如在tables->order history中。

  3. Bootstrap改成默认使用Sass,引起了广泛的讨论

  4. 也有人表示,一个组织愿意放弃旧技术(不再支持IE8)用新技术(ES6)来重写库,值得尊敬。




2017年1月20日 更新
现在版本是4.0.0-alpha.6

根据 Bootstrap 4 Alpha 6 ,twbs/bootstrap官网更新日志补充:
1. 最新版不支持IE9及以下浏览器
2. 默认使用 Flexbox 实现布局
3. 移除最小断点 -xs 前缀,(如.offset-xs-1, 变成 .offset-1,其他断点保持 .offset-{sm,md,lg,xl}-1)
---------------------------------------------
目前代码里只有以下两个class含有-xs-
.hidden-xs-up {  display: none !important;}
@media (max-width: 575px) {  .hidden-xs-down {    display: none !important;  }}
----------------------------------------------------------------------------------------------
4 . 现在可以通过 $grid-gutter-widths 对不同断点下删格列的 padding 设值
5. 简化 navbar 组件的结构和 class ,样式也有所更新,具体看这里 Navbar
6. 以 property: value 形式重命名 flexbox 相关的 class , (如 .justify-content-between 表示 “justify-content: between;”
7. 表示显示的 .in 和  .open 重命名为 .show(如 .collapse.in 改为 .collapse.show)
8. 更简单的 carousel 样式
9. 重写 progress 组件,去掉 元素
10. 媒体查询最小零界点变为 min-width: 576px
11. 重命名 _animation.scss 文件为  _transitions.scss

===================================================
现在版本是4.0.0-alpha.5 官网链接:Introduction
个人感觉从安装到使用文档更加详细,很多教科书似的注释。

变化:
1. 不支持IE8及以下,具体看这里:Browsers and devices
2. 提供指定文件 _custom.scss 在这里重写框架的默认样式  Customization options
   抛弃 less 改用 Sass
3. 支持 flexbox 布局,跟栅格系统用法类似 Flexbox grid system
4. 新增媒体查询最小零界点 544px
5. 移除 .hidden 和 .show样式,改用 .hidden-*-up 和 .hidden-*-down 样式 v4-alpha.getbootstrap.com
   新增 .invisible 样式,改变 visibility 而不是 diaply 属性。
6. 除 html 元素,其他字体、padding、margin和宽高都采用 rem 单位表示
7. 提供 .h1-.h6 样式,普通文本想用 heading 那么大的字体,再也不用自定义了。
   什么?h1 的字体还不够大?不怕,官方还有 .display-1 样式(贴心......) Typography
8. 想要图片响应式?.img-fluid
   想要图片有细线边框?.img-thumbnail
   想要图片有圆角?.rounded
   想要图片水平居中?.mx-auto.d-block
9. 内嵌在table元素里的 table,样式默认继承啦(一般很少有这种情况吧。。)
   嗯,还可以有黑底白字的表格 .table-inverse
   我们表头也可以有样式 .thead-default
   什么?表格太大了?不怕,现在有 .table-sm  Tables
10. 移除 glyphicons
11. 默认按钮样式改名叫 .btn-secondary
12. 使用 card 组件代替 panels, wells, 和 thumbnails。v4最大的亮点之一,组件可带标题,带背景色,带彩色边框,可实现等宽多列布局、 Masonry 瀑布流式布局  Cards
13. 多选框、单选框父元素样式统一为 .form-check
     可自定义多选框、单选框样式。
14. 移除 .form-horizontal 样式,标签 label 左对齐,不加粗
15. 新增 tether.min.js 定位气泡框和新的 tooltips
16. 任意元素的上下左右边角设为圆角? .rounded-*
     把元素变为圆形? .rounded-circle
17. 新增为深色背景文本而生的 .text-white 样式
18. 轻松改变元素 display 属性 .d-block,  .d-inline, 和 .d-inline-block
19. 移除 pull-left、pull-right 等浮动样式,改为 float-*-left
20. 移除 text-left、text-center、text-right 等文本对齐方式,改为 text-*-left

还有一些新增的样式,比如设置内外边距、vertical alignment 等,这里不一一赘述了。