------<!--action-->------

开场show:前不生“不犹豫”,后半生“不后悔”。今天又逃课,我不后悔

素材:推特公司的前端框架bootstrap(下称bt),解读源码(当然你也可以在官网分分钟下载一个源码包应用学习)

介绍:不介绍,著名的流行的框架,总有一大推的介绍

思考(或许会打自己脸):bt给我的感觉就像是人家写好的模板,虽然是顶级公司写的,但总感觉很别扭,就像厨师使用的是大师配置好,现成的高汤,料汁,只是在应用层。优秀的前端不应该自己配置调料吗,最好的办法,就是偷学,偷学,手里拿到人家不外传的菜品祖传秘制蜜汁,品尝分析,之后自成一派,成为人生赢家(有没有人家的感受),当然这是在厨师界,秘制不外传。

理解毕竟是关乎吃饭的家伙事,被人学会怎么办,在前端,风气不一样,就讲究开源,所以咱赚了,把bt当成一个学习的途径,品尝大牛配置的汤料,阅读优秀的代码,是happy的,废话讲完....

------<!--片头-->------

本文由:小老虎中午喝的蛋花汤,

电脑旁5cm长铅笔,

bt还有normalize赞助

bt的重置模块直接使用的是normalize(他是什么?一个优秀的浏览器默认样式重置组件也好,文件也好)

如果你有兴趣,直接搜索在文件中引入,或者使用sass和compass更加灵活运用它,说起compass就不得不提reset和normalize的关系(这里埋下伏笔)

使用bt做项目,既会引入normalize,他是嵌入在bt文件中的,在源码开头即可见

这里可能会出现代码冗余的现象,也就是说,有些重置并不需要,你也可以修改源代码,除了这个没有其他更好的方法

我在这里对compass的reset模块,和本文主角进行些许对比

重置宗旨“保证所有浏览器的统一”

1.normalize有(下称nm)

页面重置组 block组 inline-block组 文字格式化组 表单重置组 表格重置组

2.reset有(下称rs)

去边距组 去文字样式组 block组 去边框组

整体模块:

nm对body和html进行了边距,字体,字号,行高的重置

疑惑:其中定义html字号为10号,body字号定义为14号,明显页面中的字号会继承body的,于是html的字号等于多余(个人之见)

在测试中也是如此,改变html的字号,并不会对页面中的文字产生影响()

html {
font-size: 10px; /*是不是10px,无意义*/
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
 font-family: sans-serif; /*无意义*/
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 14px; /*是不是14px,继承者的爸爸*/
  line-height: 1.42857143;
  color: #333;
  background-color: #fff;
}

页面中的文字会继承那个呢,请看大屏幕

------------------分隔线--------------------

疑问:正常情况下,会禁用body的字号吗,或许是nm维护者设置的第二道防线

说明:这里html{font-size:10px}设置无意义,

还有html的字体设置{font-falimy:sans-serif;}也无意义,我真的想不出哪里有应用场景

-------<!--尿点-->------

block组:

你说html标签中有哪些是display:block(块级元素)的,div是不是,p是不是,ul ol dl是不是,都是!!然而新元素呢

div在浏览器中,默认是block,浏览器自动添加,看下面的大屏幕,

咱啥都没有干,只在html中添加div还有header,article(没有样式表)

在firebug中发现

神奇:居然自动添加显示属性,里外呼应,正好

于是又出现疑问:既然浏览器会自动默认这些元素为block显示属性,为什么需要再加上去能呢,代码又冗余

article,aside,details,figcaption,figure,footer,header,main,nav,section,summary {display: block;}/*源码*/

再看上面的源码就会发现,有增无减,多了三四个标签,也许这就是需要加上去的理由

再说:列表中的标签大多不需要更改display值,所以为了加强强度,和保证浏览器的统一性,加上了这句话

------<!--尿点-->------

inline-block组:

是啥?摆明了是不想兼容ie6,7,啥,那俩玩意儿连video都不支持,好吧,看来他已经被抛弃

需要ie6 7这俩古董兼容inline-block的话,是这样写的

{display:inline-block;

*display:inline;

*zoom:1;}

而nm是这样的

audio,canvas,progress,video {display: inline-block;vertical-align: baseline;}

所以,国外就是好,把时间放在更好的属性研究上面

疑问:为什么没有inline组呢,难道是看不起内联样式?

OH,别烦我好吗(待研究)

------<!--尿点-->------

文字格式化组:

并没有说头,个人喜好,随意定制,

原谅我这一生不羁放纵爱自由

表单重置组:

这里只对基本的属性做了重置,看了半天,也说不出一个花来,行高,边距

对不同属性框的重置,搜索框,数字框,单选框,复选框

如果你想有更深的体会的话,还是自行下载bootstrap源代码学习,并且他完全不要钱

表格重置组:

表格的使用场景,布局,数据,反正我就只试过这两个用途

说起布局,我就想到使用表格做表单的布局,说起来有点绕,但是以前有小伙伴说,为了语义化,所以不使用table做表格布局,我当然同意

不过表格输入框这种等于是小布局,就算是使用语义化,也没有适合的标签可以使用

见得最多的是使用div  ul  ol  dl做表单的布局

看大屏幕:

网易注册页,表单使用的是dl,壮观,如果使用table布局呢,我就说,有一次我还用了呢

咱大汽车之家

壮观的tr,不管怎么样,咱之家还是年收入过亿

(以后深入探讨使用table做表单布局)

------<!--没有尿点 end-->------

尾部:normalize是一个好东西,bootstrap也是好东西(词穷)

申明:本文中的观点只是博主的观点,不代表博客园的以及其他大神的见解,

如果有疏漏那也是正常的,欢迎各行业大神

前来交流辩驳!

虎说:bootstrap源码解读(重置模块)的更多相关文章

  1. Bootstrap源码解读之栅格化篇

    本文纯属自己研究所写笔记,如果有错误还请多多指教提出 版心(container) 版心:class名为.container的容器,其版心的宽度在各个屏幕设备下是不一样的值,版心两边就是留白. 各尺寸下 ...

  2. Webpack探索【16】--- 懒加载构建原理详解(模块如何被组建&如何加载)&源码解读

    本文主要说明Webpack懒加载构建和加载的原理,对构建后的源码进行分析. 一 说明 本文以一个简单的示例,通过对构建好的bundle.js源码进行分析,说明Webpack懒加载构建原理. 本文使用的 ...

  3. Webpack探索【15】--- 基础构建原理详解(模块如何被组建&如何加载)&源码解读

    本文主要说明Webpack模块构建和加载的原理,对构建后的源码进行分析. 一 说明 本文以一个简单的示例,通过对构建好的bundle.js源码进行分析,说明Webpack的基础构建原理. 本文使用的W ...

  4. Abp 审计模块源码解读

    Abp 审计模块源码解读 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客 ...

  5. Normalize.css 介绍与源码解读

    开始 Normalize.css 是一个可定制的 CSS 文件,使浏览器呈现的所有元素,更一致和符合现代标准;是在现代浏览器环境下对于CSS reset的替代. 它正是针对只需要统一的元素样式.该项目 ...

  6. etcd学习(6)-etcd实现raft源码解读

    etcd中raft实现源码解读 前言 raft实现 看下etcd中的raftexample newRaftNode startRaft serveChannels 领导者选举 启动并初始化node节点 ...

  7. Vue 源码解读(8)—— 编译器 之 解析(上)

    特殊说明 由于文章篇幅限制,所以将 Vue 源码解读(8)-- 编译器 之 解析 拆成了上下两篇,所以在阅读本篇文章时请同时打开 Vue 源码解读(8)-- 编译器 之 解析(下)一起阅读. 前言 V ...

  8. SDWebImage源码解读之SDWebImageDownloaderOperation

    第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...

  9. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager

    做ios开发,AFNetworking 这个网络框架肯定都非常熟悉,也许我们平时只使用了它的部分功能,而且我们对它的实现原理并不是很清楚,就好像总是有一团迷雾在眼前一样. 接下来我们就非常详细的来读一 ...

随机推荐

  1. MVC自学第三课

    上一课我们已经能够做出简单的HTML显示页面,并懂得了MVC的工作模式,这一课我们讲解一些动态的数据交互. 在MVC中,控制器的工作是构造某些数据,而视图的工作是把它渲染成HTML.数据是从控制器传递 ...

  2. linux----命令替换

    0.命令替换.它的大概意思是.命令在脚本中只起一个站位符的作用:在命令运行时它会被命令自己的执行结果所替换. 1.使用格式: 1.$(command) 2.`command` 2.使用举例: 1.:打 ...

  3. Office 2010 SP2简体中文正式版下载

    此次发布的SP2包含最新的更新,提高安全性.性能和稳定性,此外SP2还是之前发布的所有更新.累积性更新的汇总.SP2还改善了Office 2010与IE10.Windows 8.Windows Ser ...

  4. VIM+qmake编译示例程序HelloQt出错问题的解决(文件名一定要使用.cpp,否则就会默认使用gcc编译,当然通不过)

    之前看到很多初学Qt的Linux友们在使用qmake编译第一个HelloQt或者HelloWorld程序时报错,并且始终找不到原因. 前几天我也遇到了同样的问题,我用的是<精通Qt4编程> ...

  5. java学习之匿名内部类与包装类

    匿名内部类: 所谓匿名内部类,顾名思义指的就是定义在类内部的匿名类,现有的spring框架开发以及java图形界面都经常用到匿名内部类. 下面来看一个代码: interface A{ public v ...

  6. 随心所欲~我也做个集合遍历器吧(自己的foreach,委托的威力)

    感觉微软在面向对象三大原则中,封装性运用的最为突出,它会将一些复杂的算法,结构,功能代码进行封装,让程序员在使用时十分得心应手,如关键字里的foreach和labmda表达式里的Foreach等等,今 ...

  7. 许士彦:创业不走寻常路 APP最好时间已过

    从用户体验服务设计公司eico design到拥有两千多万用户的独立微博客户端Weico,再到备受欢迎的影像APP(微可拍,Weico Gif),Weico团队走过了一条不寻常的创业之路. 作为一家新 ...

  8. 新辰:4G时代怎样利用手机进行移动APP营销?

    未来的时代是4G时代,新辰手机用户的搜索量不在电脑端之下.那么,我们要怎样用手机进行营销呢?手机站点的竞价文章,要怎样去写比較好?手机站点要做专题吗?手机站点的优化思路在哪里?手机的系统不同,在不同的 ...

  9. ASP.NET LINQ SQL执行超时的问题

    最近在写一个航材取价的程序.由于执行的语句复杂,数据量比较大,容易造成超时. 看提示应该是执行SQL的时候超时,我在程序中用的linq. 实际把SQL语句单独执行的时候观察也要40秒左右. 查资料得知 ...

  10. history.js 一个无刷新就可改变浏览器栏地址的插件(不依赖jquery)

    示例: http://browserstate.github.io/history.js/demo/     简介   HTML4有一些对浏览历史的前进后退API的支持如:   window.hist ...