## 一、盒模型
当你的浏览器展现一个元素时,这个元素会占据一定的空间。这个空间由四部分组成。
* `Margin(外边距)`清除边框外的区域,外边距是透明的。
* `Border(边框)`围绕在内边距和内容外的边框。
* `Padding(内边距)`清除内容周围的区域,内边距是透明的。
* `Content(内容)`盒子的内容,显示文本和图像。
![](http://cndpic.dodoke.com/849d98306a6403fb722501ba3c65c8ad)
## 二、浮动
浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素。浮动的元素在普通文档流的上面一层,更靠近屏幕的上层。
```
div { float: left; }
```
:-: ![](http://cndpic.dodoke.com/d41a6c2c963acc3de4e46f04e56352e4)
默认三个设置了宽高的`block`元素,本来会格子独占一行;如果框1设置了`float:right`,他会忽略框2和框3,直到碰到父元素;如果,框1设置成`float:left`,就会覆盖住处在普通文档流中的框2。
![](http://cndpic.dodoke.com/50086ec9e7c9c2490a13f2e87794f6bd)
* 浮动会向左/向右浮动,直到碰到另一个浮动元素为止,这样可以使区块元素在一行显示。
* 当三个区块都浮动,而一行的空间不够了,会引起元素换行。
* 但是如果每个元素的高度不一致,会出现“卡住”的情况。
~~~
<style>
.box-wrapper {
border: 5px solid red;
}
.box {
float: left;
width: 100px;
height: 100px;
margin: 20px;
background-color: green;
}
</style>
<div class="box-wrapper">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
~~~
![](http://cndpic.dodoke.com/9385143911fc413ee0b0ba35b144c9ef)
很明显,这样的效果并不符合我们的预期,所以我们需要想办法解决这个问题。现在,我们需要清除浮动!
清除浮动的底层原理是在被清除浮动的元素上边或者下边添加足够的清除空间。**我们是通过在别的元素上清除浮动来实现撑开高度的, 而不是在浮动元素上。**
```
<div class="box-wrapper">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div style="clear:both;"></div>
</div>
```
## 三、定位
CSS 有三种基本的定位机制:普通流、浮动和定位。
position 属性设置元素定位类型,可以通过 top, bottom, right, left属性,控制元素的定位位置。position 属性值有`static`、`relative`、`absolute`、`fixed`四个值。
* `static`静态定位:HTML元素的默认值,即没有定位,元素出现在正常的流中。
* `fixed`固定定位:脱离标准流,在页面中不占位置,永远相对于浏览器的边框来定位。
* `relative`相对定位:不脱离标准流,在页面中占位置,相对于自己原来的位置来进行定位。
* `absolute`绝对定位:脱离标准流,在页面中不占位置(浮起来),绝对于已经定位的上层元素,若没有则绝对于页面主体 body。
- 阶段一 Java 零基础入门
- 步骤1:基础语法
- 第01课 初识
- 第02课 常量与变量
- 第03课 运算符
- 第04课 选择结构
- 第05课 循环结构
- 第06课 一维数组
- 第08课 方法
- 第09课 数组移位与统计
- 第10课 基础语法测试
- 第09课 基础语法测试(含答案)
- 步骤2:面向对象
- 第01课 类和对象
- 第02课 封装
- 第03课 学生信息管理
- 第04课 继承
- 第05课 单例模式
- 第06课 多态
- 第07课 抽象类
- 第08课 接口
- 第09课 内部类
- 第10课 面向对象测试
- 第10课 面向对象测试(含答案)
- 步骤3:常用工具类
- 第01课 异常
- 第02课 包装类
- 第03课 字符串
- 第04课 集合
- 第05课 集合排序
- 第06课 泛型
- 第07课 多线程
- 第08课 输入输出流
- 第09课 案例:播放器
- 第10课 常用工具测试(一)
- 第10课 常用工具测试(一)(答案)
- 第10课 常用工具测试(二)
- 第10课 常用工具测试(二)(答案)
- 阶段二 从网页搭建入门 JavaWeb
- 步骤1:HTML 与 CSS
- 第01课 HTML 入门
- 第01课 HTML 入门(作业)
- 第02课 CSS 入门
- 第02课 CSS 入门(作业)
- 第03课 CSS 布局
- 第03课 CSS 布局(作业)
- 步骤2:JavaScript 与前端案例
- 第01课 JavaScript 入门
- 第01课 JavaScript 入门(作业)
- 第02课 仿计算器
- 第03课 前端油画商城案例
- 第04课 轮播图
- 第05课 网页搭建测试
- 第05课 网页搭建测试(含答案)
- 步骤3:JavaScript 教程
- 入门
- 概述
- 基本语法
- 数据类型
- 概述
- 数值
- 字符串
- undefined, null 和布尔值
- 对象
- 函数
- 数组
- 运算符
- 算术运算符
- 比较运算符
- 布尔运算符
- 位运算符
- 运算顺序
- 语法专题
- 数据类型的转换
- 错误处理机制
- 标准库
- String
- Date
- Math
- DOM
- 概述
- Document 节点
- 事件
- EventTarget 接口
- 事件模型
- 常见事件
- 阶段三 数据库开发与实战
- 步骤1:初始数据库操作
- 第01课 数据类型
- 第02课 表的管理
- 第03课 数据管理
- 第04课 常用函数
- 第05课 JDBC 入门
- 第06课 Java 反射
- 第07课 油画商城
- 第08课 数据库基础测试
- 步骤2:MyBatis 从入门到进阶
- 第01课 IntelliJ IDEA 开发工具入门
- 第02课 Maven 入门
- 第03课 工厂模式
- 第04课 MyBatis 入门
- 第05课 MyBatis 进阶
- 第06课 商品信息管理
- 第07课 MyBatis 基础测试
- 步骤3:Redis 数据库与 Linux 下项目部署
- 第01课 Linux 基础
- 第02课 Linux 下 JDK 环境搭建及项目部署
- 第03课 Redis 入门
- 阶段四 SSM 到 Spring Boot 入门与综合实战
- 步骤1:Spring 从入门到进阶
- 第01课 Spring 入门
- 第02课 Spring Bean 管理
- 第03课 Spring AOP
- 第04课 基于 AspectJ 的 AOP 开发
- 第05课 JDBC Template
- 第06课 Spring 事务管理
- 第07课 人员管理系统开发
- 第08课 Spring 从入门到进阶测试
- 步骤2:Spring MVC 入门与 SSM 整合开发
- 第01课 Spring MVC 入门与数据绑定
- 第02课 Restful 风格的应用
- 第03课 SpringMVC 拦截器
- 第04课 办公系统核心模块
- 步骤3:Spring Boot 实战
- 第01课 Spring Boot 入门
- 第02课 校园商铺项目准备
- 第03课 校园商铺店铺管理
- 第04课 校园商铺商品管理及前台展示
- 第05课 校园商铺框架大换血
- 步骤4:Java 面试
- 第01课 面试准备
- 第02课 基础面试技巧
- 第03课 Web基础与数据处理
- 第04课 主流框架