打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
当前最适合前端入门的“傻白甜”UI框架:Bootstrap4.3.1

这篇文章是给那些从没有听说过Bootstrap或虽然有所耳闻,但还知之甚少的读者们准备。如果您已经是熟练的Web前端开发者并且对Bootstrap UI框架有所了解,那么请略过本文。

另外,如果您对HTML、CSS、Javascript这三个名词,有2个以上不认识、不了解,那么本文也不适合您,您可以期待我对这些前端开发基础知识另外的专题分享文章。

闲话少叙,开始正题。什么是Bootstrap?

什么是Bootstrap?

Bootstrap官网

根据Bootstrap官网(https://getbootstrap.com)介绍,原文机翻如下:

Bootstrap是一个使用HTML,CSS和JS进行前端开发的开源工具包。使用我们的Sass变量和mixins、响应式网格系统、广泛的预构建组件以及基于jQuery构建的强大插件,快速构建您的Web创意或完整的应用。

所以,简而言之,Bootstrap就是一个Web开发框架,更准确说是一个UI框架——因为它的主要部分是基于HTML和CSS这些UI技术,并辅之以JQuery提供一些实现动效的特性。

也许您会问,这里Sass是什么,mixins又是什么?

什么是Sass

Sass是一种CSS的扩展语言,它引入了变量、程序语法,使您可以通过编写Sass程序来生成CSS,相对于直接编写CSS,Sass的好处在于更灵活更丰富的特性,可以编写更复杂且更易于维护的CSS样式库。举个简单的例子,我们可以这样编写一条关于字体颜色定义的Sass代码,我们的需求是通过修改颜色变量来改变字体的颜色CSS定义:

Sass的简单示例

上面就是一段最简单的Sass代码,它与CSS非常相似,事实上,Sass最新版本支持直接编写CSS样式,在此基础上又支持更多特性。上面这段Sass的意义在于,将颜色定义与字体样式定义分离,提高了维护的效率和安全性(当然,在如此短小的示例代码中,这个意义并不明显,如果你要开发上千行的庞大样式库,Sass的价值就能凸显出来了)。

需要注意的是,浏览器并不能直接渲染Sass代码我们需要把Sass源代码编译为CSS才可在网页中使用。如果您需要了解更多Sass的信息,可以查询相关资料或等待我另找时间写几篇Sass的分享文章。

那么mixins又是啥?

什么是Sass中的mixins?

mixin怎么念?不是迷信!

请跟我读:妹—可—似因!

在Sass中,一个很重要的概念是mixins(混合器),是Sass的一个很特别的语法特性。它的作用在于把复杂的Sass程序中一些作用相似的代码段,独立成模块,供其他代码重复调用。以下是一个简单的示例:

从这个例子可以看出,mixins非常强大,利用它(以及Sass的其他特性)可以编写出非常复杂的CSS。

Bootstrap的响应式栅格系统

Bootstrap的另一个主要特点是响应式栅格系统(Grids)。实际上,这套系统是通过CSS实现的一套页面布局规范。

栅格系统的基础逻辑,是把一个网页——无论是什么终端——先分割成12列的空间,而页面中的内容容器,可以根据定义占用其中若干列的空间,然后在此布局的基础上,各个容器再有至少跨越5个不同屏幕宽度下的断点定义,以及基于弹性盒(Flex)技术的一些CSS工具类辅助,这样就构成了可以自适应任何终端尺寸的响应式网页架构。

我不想在这篇文章中一下子说得太深,毕竟在手机上阅读往往是有限的碎片时间,那么我会尽量在有限的篇幅中让您充分理解消化有限的信息,我们可以在后续多篇文章中逐步把更多东西讲清、讲透。

那么,对于Bootstrap的栅格系统,以下可以看一个简单示例:

栅格系统基本示例

这段代码的渲染效果如下:

Bootstrap就是利用 container > row > col-* 这样的三层结构来实现一个标准的响应式容器。这里我们要重点讲的,是 col-* 这个CSS工具类,它有以下最基本的宽度变型:

.col-1, .col-2, .col-3, .col-4, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12

就拿 .col-2 来说,看看它的CSS定义:

2列栅格的CSS

这个类,表示对应的元素,占据一行的1/6宽度。

col-* 如果没有后缀,单单一个 .col 表示最大宽度100%。另外,除了明显设定宽度比例,你还可以设定对应的屏幕断点(宽度范围),它们有:

.col-sm, .col-md, .col-lg, .col-xl

它们分别表示在各自的断点及以上屏幕宽度时,最大宽度为100%(撑满)。举例来说:

上面这个 div 容器会在屏幕为xl宽度(≥1200px)时,自动撑满屏幕,否则的话就缩小为1/6屏幕宽度。当然,我们还可以给 .col-xl 这个类增加更具体的定义,如: .col-xl-8 表示在屏幕大于等于1200px时,该容器占据8/12的宽度。你可以自己试一试这个例子,这个div会在xl断点时占据8/12宽度,否则撑满全屏:

这里给出完整的所有断点的栅格类定义:

所以你可以把这5个基本前缀,跟上1-12的栅格比例,以及多个类的组合,可以设计出非常复杂而灵活的栅格布局。限于篇幅以及本文主要是概念了解的作用,更多的实践用法和示例,您有兴趣的话,可以有针对性找一些专题资料来深入研究。

而本文在这里更想讨论的是Bootstrap的上述栅格系统究竟有什么作用

简单说,栅格系统的作用就是为了在不同屏幕宽度的终端上,同一个网页可以有不同的表现,从而达到所谓响应式的设计需求。那么,Bootstrap栅格系统是如何做到这一点的呢?由于上述5个断点的存在,加上 .col-* 的栅格类的作用,浏览器可以在不同断点时渲染出不同排版的内容,例如一般的桌面电脑总是运作在 xl 断点(≥1200px),而很多手机是运作在 sm (< 576px),如果您想设计一个在电脑上一行6个内容块横向排列,在手机上则改为竖向排列的页面——这是一个最常见的响应式设计需求——就可以用以下HTML代码轻易实现:

上面示例的渲染结果,在PC上:

PC端自动横向排列

在手机上:

手机端自动竖向排列

栅格系统的应用,远比上述例子要复杂、强大得多。通过Bootstrap的栅格系统,我们可以构建出丰富多样且完美适应于多终端的现代Web页面。因此,如果您有兴趣深入了解的话,请自行百度查找相关教程、资料,研究更多实例来彻底掌握这个强大的系统。

Bootstrap的特点除了响应式的栅格系统外,还有就是它的五花八门、非常实用的CSS工具类,下面简单介绍一些常用的工具类。

场景色工具类

在实践中,我们经常会需要做一些不同业务场景下的颜色效果,例如用红色来向用户发出某种错误提示,用黄色给出提醒警示,用绿色表示操作成功等等。

Bootstrap框架提供了一套全局定义的、与其他组件结合的场景色工具。单就颜色来说,有以下这几种:

  1. primary :主要色
  2. seconbary :辅助色
  3. info :信息色
  4. success :成功色
  5. warning : 警告色
  6. danger :危险色
  7. light :亮白色
  8. dark :暗黑色
  9. link :无色,用于链接

下面用按钮组件来展示上述场景色效果:

各个场景色的按钮

这些按钮的HTML代码:

注意,场景色该如何使用呢?有些人会把它们当做普通的颜色来用,其实专业的方式不能这么做。所谓场景色,应严格用于相应的交互场景,而最多用的其实只有2个颜色:primary 和 secondary 主要色和辅助色两个,其中,主要色承担了整个项目的色彩风格的重任

从设计审美的角度,一个网站项目,不建议使用过多的颜色,一般来说应由设计师确定一个主色调,再搭配一个辅助色用于内容的主次显示。更好的设计,会给主色调增加深浅不一的辅助色、第二主色。对于Bootstrap框架来说,可以把辅助色 secondary 设置为与主要色同色系较浅,或再新增一个更深的第二主色。

第二主色可以通过在Sass中给Bootstrap的场景色系添加一个 default 色来实现。

以下是一个配色示例:

一个配色示例

配色的实践应用

也许有人会问,如果我的项目的主色调不是蓝色,而是红色,或灰色,或其他颜色,怎么办?这就涉及到Bootstrap的一个重要的应用方法:自定义

在Bootstrap的Sass源码中,有全套的场景色变量定义,你只需修改这些变量再重新编译,即可立即生成全新的场景色系的整套CSS库,所有运用到场景色的组件,全都已经更改了颜色。

上图中显示的是Bootstrap中有关场景色变量的部分。整个框架中有很多组件都有场景色的变型,因此一旦修改了场景色变量,框架中所有和场景色有关的部分都会随之自动更改。

外间距和内填充工具类

如果你经常写CSS,那么对于 margin 和 padding 这两个CSS属性不会陌生,也一定了解如果过于随意的设置内外间距,对于页面排版可能就是一场灾难,各位错位和凌乱以及反复调试会让经验不足的前端程序员陷入996的深渊....

Bootstrap对DOM元素的外间距和内填充做了很好的规范,提供了两个强大的工具类:

m-* : 对应 margin 属性p-* :对应 padding 属性

我们先来说 m-* 工具。它的后缀是0-5的整数,以及“auto”,分别表示 .25rem 的6个不同的整数倍距离。分别是:

而p-* 也同上,对应的是padding的6个距离值。

对于一般的页面布局,元素之间的距离(或内部填充距离)最常用的也就在这5个范围内了。如果有特别小或更大的距离需求,还可以自定义。

说到自定义,Bootstrap中很多设置都在其Sass源文件中可以进行修改,例如上述内外距离的单位长度是1个rem,Sass中表示为 $spacer 这个变量,您可以修改 $spacer 变量值(如 $spacer: 16px),来获得个性化的距离工具。

m-* 、p-*还有6个变型,分别是:

提供在不同方向上的内外间距。它们的CSS定义的例子是:

另外,m-* 和 p-* 还有负值的版本,以及在5个断点的响应式版本,如: mt-n1 和 mt-md-* 这样的形式。因为并不常用所以就不赘述了,有兴趣的可以找一些资料做延伸阅读。

其他工具类

Bootstrap的工具类实在非常多,这里不可能一一介绍,以后或许可以分专题来逐个介绍分享。这里先列举几个常用的。

  1. 显示属性工具:d-* 表示CSS的 display 属性。用法如:d-block, d-inline 等,也有响应式版本,如 d-lg-block。
  2. 阴影工具:shadow-* 表示 CSS的 box-shadow 的一个特定设置。根据阴影的从小到大有四个类: shadow-none, shadow-sm, shadow, shadow-lg
  3. 边框工具:border-* 表示 CSS的 border 的一个特定设置。根据边框的方向,可以有 border-left 、border-right、border-top、border-bottom,而根据边框的场景颜色,还可以有 border-{theme-color} 如 border-primary 、border-warning 等几个工具类可用。
  4. 悬浮工具:float-left 和 float-right 这两个类对应的是CSS中的: float:left; float:right两个属性。

... 还有很多很多...

总之,Bootstrap的工具类多到足以满足绝大多数场景和需求下的web设计,无论是中后台的简洁设计还是门户的炫丽设计,都能应付。万一有特殊需求,您还可以使用Sass来自定义属于您自己的工具类。

Bootstrap预制组件

实际上,Bootstrap被广大的前端开发者喜爱的最主要原因,或者说唯一的原因,是它庞大的组件库。Bootstrap官方提供了非常全面的组件库,同时,无数的开发者和公司企业,也都基于Bootstrap制作了扩展的组件库。

这些组件,大多数是基于CSS的,其中少部分还结合了Javascript,提供了JS的接口。

对于不熟悉组件概念的朋友,这里稍微讲讲什么是组件。

组件,就是把一些最常见的web复合元素,抽象成一套独立的、可复用的HTML代码,并由框架的预制CSS工具类、Javascript自动初始化来支持,方便开发者开箱即用。组件通常有一个基本形式,以及若干高级的变型,以适应多种应用需要。

还是先举个例子吧,下面是一个常见的下拉菜单:

一个常见的下拉菜单,展开的样子

这就是用一个组件实现的效果。它的HTML代码是:

一个下拉菜单的HTML源码

需要注意的是,上述代码,如果脱离 Bootstrap 框架是无法呈现出对应效果的,换言之,这段代码必须依赖Bootstrap所包含的CSS和Javascript的基础库支持

那么类似这样的组件有多少种呢?

我们来粗略统计一下,大概有以下这些种类的组件,其中有些还是复合组件,即组件中嵌套其他组件,另外,有些是纯CSS组件,有些则需要JS库的支持。

Bootstrap的组件种类

警告框(Alert):用于提示信息、弹出提示。

徽章标贴(Badge):用于一些较小的提示、反馈,如最新消息数。

面包屑导航(Breadcrumb):用户显示当前内容的网站层级路径,做导航用。

按钮(Button):这个不用多说了。

按钮组(Button Group):将若干按钮组合成一个独立的元素,常用于如编辑器的工具栏等。

卡片(Card):一种特别设计的容器组件,可以包含多种形式的图文内容,且便于阵列布局。适用于数字产品展示等。

图片轮播(Carousel):常见的图片左右轮流滚动展示的效果。

折叠(Collapse):控制元素折叠/展开的效果,多用于手风琴列表(如Q&A)。

下拉菜单(Dropdown):这个不用介绍,都懂。

表单控件(Form):Bootstrap提供了更规范实用的表单控件。

复合文本框(Input Group):经过加工的一种组件,将多种元素和文本框结合,提供复杂的交互效果。

列表组(List Group):经过设计的多用途列表组件。

媒体列表(Media Object):专用于图文混排内容列表的组件。如论坛的帖子列表。

对话弹出窗(Modal):点击弹出的对话窗组件,可定义多种位置和大小。

导航列表(Nav):多用途的栏目导航列表。

复合导航栏(Navbar):可用于网站全局导航,并可容纳多种内容元素的导航栏。

翻页(Pagination):用于数据查询结果的翻页导航组件。

弹出式悬浮框(Popover):点击或悬停可浮现的悬浮容器组件。多用于交互提示。

进度条(Progress):以百分比或自定义尺度来表示某个进程的进度。

数据载入等待器(Spinner):以一种旋转的条状圆弧来表示正在等待数据载入和刷新。

侧边通知框(Toasts):可以在页面侧边或其他位置浮现并自动消失的通知组件。

悬浮提示(Tooltips):当鼠标悬停或点击时,立刻浮现需要的简短信息。

以上这些还只是Bootstrap官方提供的常用组件,如果是一般的小型Web项目,这些组件已经足够用了。开发者仅需要在Bootstrap官方网站的组件文档中,复制某个组件的代码,粘贴到自己项目中(需要实现加载好框架的引入库文件)即可使用。

小结

本文仅仅是对Bootstrap框架的简单介绍。还有太多细节和特性,没有做深入讨论,也是一篇文章的篇幅难以实现的。因此我会在后续的写作计划中,逐个对这个伟大的前端框架各个部分展开详细讨论,同时也会加入我自己的一些经验与大家交流。

Bootstrap目前最新版本是4.3.1,我注意到网上有一些朋友推荐的文章多是老版本,这也请您留意。

最后,限于本人的水平实在有限,文中难免有错误或疏漏之处,诚恳欢迎大家留言指正!一入前端深似海,回头是岸舟已沉!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Sass和Compass的安装和使用方法
Angular 项目里使用 scss 文件的一些技巧
bootstrap栅栏系统css中的col
bootstrap v3版本禁用自适应响应式布局的方案
!!!!!!最全的 Twitter Bootstrap 开发资源清单
【特别推荐】14个支持响应式设计的流行前端开发框架
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服