css知多少(2)——学习css的思路
两周之前写过该系列的第一篇,其实当时只是一个想法,这段时间迟迟未更新,是在思考一个解决过程。现在初有成效,就开更吧。
1. 一个段子
开题不必太严肃,写博客也不像写书,像聊天似的写东西是最好的表达方式。
记得之前看过一个段子,也可能是一件真事儿,这不重要。大体内容如下:一个香港的教授说:我们香港的大学和大陆的大学差的很远啊,大陆的大学连看门保安都懂得哲学,因为当你想要进入校园时,保安都会问你一个很哲学的问题“你是谁,你从哪里来,你到哪里去?”。
看完段子的第一反映肯定是很自嘲的笑了,笑了之后就忘了,该干嘛干嘛去了。
但是我觉得这句话确实有那么一点高达上的意思,虽然我不知道什么是哲学。“你是谁,你从哪里来,你到哪里去”,如果映射到我们这次CSS教程上,可以提这么几个问题:
- CSS是什么,如何深入理解,它和html是个怎样的关系;
- CSS有几种来源(5种来源);
- CSS要干什么事情,如何结合html实现的;
看过我其他教程的朋友都知道我的原则:我要写东西,必须又一个我觉得很特别而且很合理、高效的思路,如果没有我宁可不写。大部分写CSS的人一上来可能写选择器,但是我不会那样。
闲话不说。要想从根上了解这些问题,还是先从浏览器开始吧。
2. 浏览器是如何工作的
之前看过一篇文章,叫做《浏览器的工作原理:新式网络浏览器幕后揭秘》。文章言简意赅的介绍了浏览器的工作过程,web前端程序猿最好了解一下。在此另外推荐一本书《WebKit技术内幕》,笔者很早就关注这本书,已列入近期的读书计划。
文章中的内容暂且不详细提,我们先“断章取义”的只说CSS相关的部分。

上图是webkit内核渲染html和css的流程图。大家可以从图中看到,html的解析是一条线,css的解析是一条线,两者会在某一点结合,形成最终的视图。
如果我们以CSS为重点看,从上图中我们可以总结出学习CSS的三个突破点。
- 浏览器如何加载和解析CSS——CSS的5个来源;
- CSS和html如何结合起来——选择器;
- CSS能控制那些显示方式——盒子模式、浮动、定位、背景、字体等;
看到这里,不知道有没有朋友觉得很兴奋?因为我们在学习CSS之前,首先是分析浏览器如何加载、处理、使用CSS的,我们按照这个思路去写CSS的教程。而不是一上来就照本宣科的从id选择器开始。
我这段时间为何一直没有写博客,其实是在冥思苦想一个更加合理、高效的思路和框架。我如果写出来的东西和别人的一样,那我自己也觉得没意思。
本系列文章也是按照这个思路和框架,一步一步展开的。
3. CSS的加载过程
CSS——Cascading Style Sheets——层叠样式表。“样式表”大家比较好理解,那何为“层叠”呢?从字面意思来看,层叠肯定是需要多层叠加起来。而这个“多层CSS”到底有几层,每一层是什么,我们程序猿用到的将是哪些层?这几个问题将是我们讨论的重点。
另外,这么多层次叠加,如果出现冲突怎么处理,以哪个为准?这也是我们讨论的重点。
最后,在这些层次中有一个“浏览器默认样式”层,即浏览器默认的各个html元素的样式。这次我们像浏览器这位“机器人”学习一下,看看它写出来的css能给我们什么帮助。
4. CSS和HTML的结合
CSS如何与html结合呢——当然是通过选择器。CSS提供了多种多样的选择器类型,而且每个级别都在不断的增加新的选择器类型,使得选择器更加灵活易用。本系列将拿出一篇文章专门讲解选择器。
聪明的人类也通过css提供的选择器在其他临近的方面开疆拓土,例如jquery,zen-coding。
对css选择器来说,有一个很重要的话题——级别。在大部分web前端面试题中,你都会看到css选择器级别的判断问题。《css设计指南》书中给出了一个概念——特指度,而且给出了计算公式和计算规则,还给出了一个简单的背诵口诀。想的真周到。
最后,与选择器关联密切的还有伪类和伪元素,我们也将拿出一篇文章专门讲解伪类和伪元素,以及它们最典型的用法。
5. 页面呈现
页面呈现可以分为两类——文字,块。
- 针对文字来说,我们可以设置字体、字号、加粗、斜体、背景色等等;
- 对于块来说情况比较多,有盒子模型、浮动、定位、display、背景等;
本系列会拿出很大的篇幅去讲解其中的基础知识,以及他们的一些重点应用。
6. 布局
布局是css的重头戏,每个系统的布局都有其各自的特点。无好无坏,肯定是各有优缺点,不妨拿出几个比较典型的例子来一起分析一下。例如:
- 经典三列布局
- Bootstrap栅格布局
- 百度首页布局
- 微博布局
- 人人网布局
- 瀑布流布局
- ……
7. 下一步
下面的文章将会一步一步展开本文的描述,从实例和代码中慢慢道来。继续期待吧!
---------------------------------------------------------------
本系列的目录页面:http://www.cnblogs.com/wangfupeng1988/p/4325007.html
-------------------------------------------------------------------------------------------------------------
欢迎关注我的微博。
也欢迎关注我的教程:
《用grunt搭建自动化的web前端开发环境》《从设计到模式》《深入理解javascript原型和闭包系列》《微软petshop4.0源码解读视频》《json2.js源码解读视频》
-------------------------------------------------------------------------------------------------------------
css知多少(2)——学习css的思路的更多相关文章
- 学习css盒子模型
在这一周,我学习了css,在没有学习css之前,我一直都觉得布局很难,样式特别难调,但是学习了css盒子模型之后我就觉得欸,其实还挺简单的,下面就来看看我学习的css吧. CSS 盒子模型(Box M ...
- 学习CSS的思路(转)
两周之前写过该系列的第一篇,其实当时只是一个想法,这段时间迟迟未更新,是在思考一个解决过程.现在初有成效,就开更吧. 1. 一个段子 开题不必太严肃,写博客也不像写书,像聊天似的写东西是最好的表达方式 ...
- css知多少(12)——目录
<css知多少>系列就此完结了.常来光顾的朋友可能会觉得突然:css的知识点还有很多,怎么突然就完了,还没讲完呢?这样说是对的.不过凡事都有一个定位,如果盲目求多,定位模糊,那样就没有目的 ...
- 看《css知多少》的一些总结
问题 1.有些浏览器不完全支持css3,现在可以用哪个工具去检测浏览器是否支持,以及支持哪些项? modernizr:检测浏览器对HTML5和CSS3特性(至于modernizr的介绍,可以看我另外一 ...
- css知多少(3)——样式来源与层叠规则
上一节<css知多少(2)——学习css的思路>有几个人留言表示思路很好.继续期待,而且收到了9个赞,我还是比较欣慰的.没看过的朋友建议先去看看上一节. 这一节就开始实践上一节的思路! 1 ...
- 转:css知多少(12)——目录
<css知多少>系列就此完结了.常来光顾的朋友可能会觉得突然:css的知识点还有很多,怎么突然就完了,还没讲完呢?这样说是对的.不过凡事都有一个定位,如果盲目求多,定位模糊,那样就没有目的 ...
- css知多少(5)——选择器(转)
css知多少(5)——选择器 1. 引言 从本节开始,就进入本系列的第二个部分——css和html的结合——说白了就是选择器. CSS中定义了样式,如何将这些样式设置到相应的html节点上?就不得 ...
- css知多少(3)——样式来源与层叠规则(转)
css知多少(3)——样式来源与层叠规则 上一节<css知多少(2)——学习css的思路>有几个人留言表示思路很好.继续期待,而且收到了9个赞,我还是比较欣慰的.没看过的朋友建议先去看 ...
- 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
随机推荐
- RoundedImageView,实现圆形、圆角矩形的注意事项
RoundedImageView是gitHub上面的一个开源组件(https://github.com/vinc3m1/RoundedImageView),实现一些圆形或者圆角矩形是很方便的, < ...
- Angularjs 跳转页面并传递参数的方法总结
http://www.zhihu.com/question/33565135 http://www.codeproject.com/Articles/1073780/ASP-NET-MVC-CRUD- ...
- Spark入门实战系列--5.Hive(上)--Hive介绍及部署
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Hive介绍 1.1 Hive介绍 月开源的一个数据仓库框架,提供了类似于SQL语法的HQ ...
- Windows 下搭建 Ruby 开发环境
1.从http://rubyinstaller.org/downloads/下载“rubyinstaller-2.1.5-x64.exe”. 2. 双击下载的程序进行安装,勾选如下图的选项.默认安装目 ...
- 漫谈可视化Prefuse(三)---Prefuse API数据结构阅读有感
前篇回顾:上篇<漫谈可视化Prefuse(二)---一分钟学会Prefuse>主要通过一个Prefuse的具体实例了解了构建一个Prefuse application的具体步骤.一个Pre ...
- 关于Unicode和URL encoding入门的一切以及注意事项
本文同时也发表在我另一篇独立博客 <关于Unicode和URL encoding入门的一切以及注意事项>(管理员请注意!这两个都是我自己的原创博客!不要踢出首页!不是转载!已经误会三次了! ...
- [emacs] Drawing uml under emacs org-mode using plantUML - 类图
[emacs] Drawing uml under emacs org-mode using plantUML - 类图 // */ // ]]> [emacs] Drawing uml u ...
- CentOS7 Java安装
CentOS7 Java安装 CentOS7 Java安装 Download 从Oracle下载jdk-8u31-linux-x64.rpm Install 御载 执行如下命令 java -versi ...
- 使用Qt installer framework制作安装包
一.介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布.这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中.其优势是简单单一,所有的依赖库都集中在一起,其缺点也很 ...
- C++ - unordered_map 源码解析
转自:http://zrj.me/archives/1248,转载请注明.(分析得不错) 主要尝试回答下面几个问题: 一般情况下,使用 hash 结构,需要有桶的概念,那么 unordered_map ...