表格
表格的处理方式和其他的元素稍微有些不同:
- 不管单元格中的内容有多少,一行中的所有单元格都具有相同的高度。
- 在同一列中,不管单元格内容是多少,一列中的所有单元格都具有相同的宽度。
表格标题
表格标题可以从表格上继承样式,可以设置内边距、边框、背景。
表格标题的宽度由表格决定。表格元素是标题的容纳块。
caption-side:value
,用来设置表格标题的位置。
- top,放在表格上面(
caption-side: top;
默认值)。 - bottom,放在表格下面。
注意:
caption-side: left; 和 caption-side: right;
设置无效,以前有效,现在没有效了。
单元格的边框
CSS中有两种不同的边框模型:
- 分离边框模型,单元格与单元格之间有间隔。
- 折叠边框模型,单元格和单元格之间没有间隔,边框和边框合并在一起。
border-collapse:value
(这个属性加在table上面,方tr或td上无效),
-
separate,分离边框模式。
-
collapse,折叠边框模式。
注意:
-
每个tr里面的内容是属于同一行。
-
dl, dt, dd {
margin: 0;
padding: 0;
}
去掉元素子代的margin和padding,这个
dl, dt, dd
之间的逗号不能省略。
-
文档流
文档流:它是CSS世界中的一种基本的定位和布局机制,这个流和现实世界的水流有些类似。
文档源代码(文档源代码就是你写的文件)书写时有正常的顺序,是从上到下从左到右的。在解释其代码时就会从上到下、从左到右来进行解释,解释时如果是行内元素就当在一行、如果是块状元素就有分隔的行。
codereview: 代码审查
完全脱离文档流:内容完全重叠。
浮动
浮动的出现是为了打破这种正常的文档流而实现环绕效果。浮动的本质是为了实现文字环绕效果(文字环绕图片显示的效果)。
格式: float
none,没有浮动。
left,元素向左浮动(其他的内容包围在浮动元素的右边)
right,元素向右浮动(其他的内容包围在浮动元素的左边)
原理:
- 父类高度塌陷,让跟随的内容可以和浮动元素在一条水平线上。
- 块状盒子和浮动元素会重叠,但是块状元素中的行框盒子和浮动元素不会重叠。
float的规则
-
浮动元素的上边缘位置要考虑它 之前 的块状元素或浮动元素。
- 如果一个正常流中的元素在浮动元素之前,那么那个浮动元素会将之前的位置也考虑在内,会在块状元素的下一行开始。
<!DOCTYPE htmL>
<html>
<head>
<meta charset="utf-8" />
<style>
div{
width:300px;
height: 300px;
border:1px solid green;
}
</style>
</head>
<body>
<div style="background-color:black"></div>
<div style="float:left;background-color: aqua;"></div>
</body>
</html>
显示:
2. 普通流中的元素不考虑它之前的浮动元素(就相当于他们不存在)。
<!DOCTYPE htmL>
<html>
<head>
<meta charset="utf-8" />
<style>
div{
width:300px;
height: 300px;
border:1px solid green;
}
</style>
</head>
<body>
<div style="float:left;background-color: aqua;"></div>
<div style="background-color:black;width:500px;height: 500px;"></div>
</body>
</html>
显示:
解析问题:
<!DOCTYPE htmL>
<html>
<head>
<meta charset="utf-8" />
<style>
#f1{
width:300px;
height: 300px;
background-color: red;
}
#f2{
width:350px;
height: 350px;
background-color: royalblue;
float:left;
}
#f3{
width:400px;
height: 400px;
background-color: greenyellow;
}
</style>
</head>
<body>
<div id="f1"></div>
<div id="f2"></div>
<div id="f3"></div>
</body>
</html>
#f2
要考虑到#f1
的情况,所以 #f2
自己重启了一行,因为#f3
是在浮动元素之后所以就当做浮动的#f2
不存在了。
2. 不管什么元素,浮动后会自动变为块级元素。
<!DOCTYPE htmL>
<html>
<head>
<meta charset="utf-8" />
<style>
span{
float:left;
width:100px;
height: 100px;
border:1px solid green;
}
</style>
</head>
<body>
<span></span>
</body>
</html>
显示: