# 精通CSS: 高级Web标准解决方案
## CSS选择器
选择器的特殊性分成4个成分等级: 1000, 100, 10和1.
- 如果样式是行内样式, 那么值为1000
- ID选择器的值为100
- 类, 伪类和属性选择器的值是10
- 类型选择器和伪元素选择器是1
例如:
| 选择器 | 特殊性 |
|------------|-----------|
|style = ""| 1000 |
|#wrapper #content {} | 200 |
|#content .datepicker{} | 110 |
|div#content | 101 |
|#content{} | 100 |
|p.comment .datepicker{} | 21|
|p.comment{} | 11 |
|div p{} | 2 |
|p{} | 1 |
|a[target] | 11 |
## 盒子模型
### 总述
在CSS中, width和height指的是内容区域的宽度和高度. 增加内边距, 边框和外边距不会影响内容区域的尺寸, 但是会增加元素框的尺寸.
在IE6中, 在混杂模式下使用的是自己的非标准盒子模型. 它的width和height包括的内边距和边框.
### 外边距叠加
在垂直方向的2个元素的外边距会发生叠加, 最终只保留大的元素外边距.
外边距叠加存在如下3种情况:
1. 当一个元素出现在另一个元素上面时, 第一个元素的底部外边距和第二个元素的顶部外边距发生叠加.
2. 当一个元素包含在另一个元素时(假设没有内边距或者边框将外边距分隔开), 它们的顶和/底部外边距也会发生叠加.
3. 外边距升值可以与自身发生叠加. 假设有一个空元素, 它有外边距, 但是没有内边距和边框. 此时, 顶外边距与底外边距就碰到一起了, 它们会发生叠加.
只有在普通文档流中的垂直外边距才会发生叠加. 行内框, 浮动框或绝对定位框之间的外边距都不会叠加.
## 定位概述
CSS中有三种定位机制: 普通流, 浮动流, 绝对定位. 除非专门指定, 否则所有的框都在普通流中. 普通流中的元素的位置是由元素在HTML中的位置决定的.
### 普通流
大多数的框是由显式定义的元素形成的, 但是, 在将一些文本添加到一个块级元素(比如div)的开头时, 这些文本也会被当成块级元素对待, 它们被称为: 匿名块. 如
```html
<div>
Some text
<p> hello world </p>
</div>
```
### 相对定位
如果对一个元素进行相对定位, 它将出现在它所在的位置上. 然后, 可以通过设置垂直或者水平位置(top, left, bottom, right), 让这个元素"相对于"它的起点移动.
在使用相对定位时, 无论是否移动, 元素仍然占据原来的空间, 因此, 移动元素会导致它覆盖其他框.
### 绝对定位
相对定位实际上被看起普通流定位模型的一部分, 因为元素的位置是相对于它在普通流中的位置的.
绝对定位使元素的位置与文档流无关, 因此不占据空间.
绝对定位的元素的位置是相对于距离它最近的那个已定位的祖先元素确定的. 如果元素没有祖先已定位, 则相对于起始元素(html元素).
### 固定定位
是绝对定位的一种, 只相对于viewport进行定位.
### 浮动
浮动的框可以左右移动, 直到它的外边缘碰到包含框或另一个浮动框的边缘. 因为浮动框不在文档的普通流中, 所以文档的普通流中的块框表现得就像浮动框不存在一样.
- 行框和清理
如果浮动的元素后面有一个文档流中的元素, 那么这个元素的框会表现得浮动元素根本不存在一样, 但框的文本内容会收到浮动元素的影响, 会移动留出空间. 即浮动元素旁边的行框被缩短, 从而给浮动元素留出空间, 因为行框围绕浮动框.
- 清除浮动
1. 在浮动元素后添加一个空的div, 给div设置`clear:both`
2. 给浮动的父元素设置一个`parent::after`伪类, 设置样式清除浮动.
```css
.parent::after{
content:'.';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
```
- 职业生涯
- 如何提升你的能力?给年轻程序员的几条建议
- 那些年,那些事
- 阿里巴巴离职DBA 35岁总结的职业生涯
- 人生的四种选择
- 程序人生的四个象限和两条主线
- 几缕代码与闲思
- 张小龙-学习笔记
- Web前端
- 移动Web手册
- 精通CSS: 高级Web标准解决方案
- 悟透JavaScript
- 架构设计
- 大型网站技术架构
- 周爱民-大道至简
- RESTful Web Services Cookbook - 读书笔记
- 大话设计模式
- Unix编程艺术
- 把程序员修炼之道读薄
- 学习能力
- 奇特的一生:读书笔记
- zhh-看源码那些事
- 一个创业者怎么看待读书和写作
- 程序员修炼之道
- 2015/1/5 头脑风暴
- 书单计划
- 2014年我读过的那些书
- 我的后端开发书架2015
- 别人的书单
- 读书笔记
- 浪潮之巅
- 达内时期自己笔记整理
- Effective Java
- 打造facebook: 读书笔记
- 面试整理
- 阿里面试的一点感受
- 腾讯的三轮面试
- 三十之惑–面霸
- 前端面试问题汇总
- 八爪网络面试总结
- 2015面试总结总结
- 找工作流程梳理
- 最全前端面试问题及答案总结
- 前端开发面试题收集
- 百度web前端--2015一面
- 百度web前端--2015二面