【修真院web小课堂】如何使用bootstrap栅格系统?

大家好,我是IT修真院北京分院第33期的学员刘仁瑞,一枚正直、纯洁、善良的前端程序员。

今天给大家分享一下,修真院官网css任务9,深度思考中的知识点——如何使用bootstrap栅格系统?

    1.背景介绍

Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。

Bootstrap提供了优雅的HTML和CSS规范,它是由动态CSS语言less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。

这里需要说明一下最新的Bootstrap4,是采用sass来编写的。

    2.知识剖析

2.1工作原理

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

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

2.2使用规则

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


2.2.2 在行(.row)中可以添加列(.column),但列数之和不能超过平分的总列数,比如12。如:


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

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

2.2.5 通过设置内距(padding)从而创建列与列之间的间距。然后通过为第一列和最后一列设置负值的外距(margin)来抵消内距(padding)的影响


2.3栅格选项


从上面的截图可以看出来,Bootstrap针对不同尺寸的屏幕(包括手机、平板、PC等等)设置了不同的样式类,这样让开发人员在开发时可以有更多的选择。根据我的理解:如果在一个元素上使用多个不同的上面的样式类,那么元素会根据在不同尺寸选择最合适(匹配最理想的)的样式类。简单的举例进行说明:比如在一个元素上我们使用了两个样式类:.col-md-和.col-lg。可以对照上面的截图来看

第一种情况:尺寸>=1200px;那么会选择.col-lg。
第二种情况:尺寸>=992px 并且尺寸<=1200px;那么会选择.col-md。

第三种情况:如果尺寸<992px;那么这两个样式类都将不会作用于元素上。

    3.常见问题

如何设置5列占满宽度?

    4.解决方案

每列设置宽度20%

其他列数,宽度就是100%除以列数。

    5.编码实战

看demo演示

    6.扩展思考

格栅系统布局的是通过什么方法实现的?

container设置左右15px内边框,row设置margin-15px来消除影响。

col列左右15px内边距,采用左浮动,设置对应宽度来达到布局目的,我们使用过程中只要使用类名就可以达到布局的目的。

    7.参考文献

http://www.runoob.com/bootstrap/bootstrap-tutorial.html菜鸟教程
http://www.bootcss.com/ bootstrap中文网
https://www.cnblogs.com/chessYu/p/7337018.html 博客园

https://www.cnblogs.com/harris-peng/p/5516947.html 博客园

    8.更多讨论

问题一:有什么不足?

答:节省了大量代码,方便很多。除了引用不兼容,还有浏览器禁用个别版本的加载项,暂时没发现什么不足。

问题二:bootstrap怎么设置12个以上的列吗?

答:格栅布局是可以通过修改源码来修改列数的。

问题三:采用12列有什么好处吗?为什么默认12列?

答:12是2,3,4,6的最小公倍数,相比较于其他数字,12分更加灵活,所以选择了分为12份。


感谢大家观看

                    By 刘仁瑞


    

    


猜你喜欢

转载自blog.csdn.net/qq_42337718/article/details/80612059
今日推荐