相对定位是一个很是容易掌握的概念。若是对一个元素进行相对定位,它将出如今它所在的位置上。而后,能够经过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。html
若是将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。若是 left 设置为 30 像素,那么会在元素左边建立 30 像素的空间,也就是将元素向右移动。浏览器
#box_relative {
position: relative;
left: 30px;
top: 20px;
}
以下图所示:app
注意,在使用相对定位时,不管是否进行移动,元素仍然占据原来的空间。所以,移动元素会致使它覆盖其它框。布局
绝对定位使元素的位置与文档流无关,所以不占据空间。这一点与相对定位不一样,相对定位实际上被看做普通流定位模型的一部分,由于元素的位置相对于它在普通流中的位置。
普通流中其它元素的布局就像绝对定位的元素不存在同样:
字体
#box_relative {
position: absolute;
left: 30px;
top: 20px;
}
绝对定位的元素的位置相对于最近的已定位祖先元素,若是元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
对于定位的主要问题是要记住每种定位的意义。因此,如今让咱们复习一下学过的知识吧:相对定位是“相对于”元素在文档中的初始位置,而绝对定位是“相对于”最近的已定位祖先元素,若是不存在已定位的祖先元素,那么“相对于”最初的包含块。
注释:根据用户代理的不一样,最初的包含块多是画布或 HTML 元素。
提示:由于绝对定位的框与文档流无关,因此它们能够覆盖页面上的其它元素。能够经过设置 z-index 属性来控制这些框的堆放次序。spa
CSS 定位属性容许你对元素进行定位。3d
把元素放置到一个静态的、相对的、绝对的、或固定的位置中。代理
属性值:code
属性 | 描述 |
top | 定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。 |
right | 定义了定位元素右外边距边界与其包含块右边界之间的偏移。 |
bottom | 定义了定位元素下外边距边界与其包含块下边界之间的偏移。 |
left | 定义了定位元素左外边距边界与其包含块左边界之间的偏移。 |
属性值:htm
设置当元素的内容溢出其区域时发生的事情。
属性值:
设置元素的形状。元素被剪入这个形状之中,而后显示出来。
属性值:
设置元素的垂直对齐方式。
属性值:
属性值:
浮动的框能够向左或向右移动,直到它的外边缘碰到包含框或另外一个浮动框的边框为止。
因为浮动框不在文档的普通流中,因此文档的普通流中的块框表现得就像浮动框不存在同样。
请看下图,当把框 1 向右浮动时,它脱离文档流而且向右移动,直到它的右边缘碰到包含框的右边缘:
再请看下图,当框 1 向左浮动时,它脱离文档流而且向左移动,直到它的左边缘碰到包含框的左边缘。由于它再也不处于文档流中,因此它不占据空间,实际上覆盖住了框 2,使框 2 从视图中消失。
若是把全部三个框都向左移动,那么框 1 向左浮动直到碰到包含框,另外两个框向左浮动直到碰到前一个浮动框。
以下图所示,若是包含框太窄,没法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间。若是浮动元素的高度不一样,那么当它们向下移动时可能被其它浮动元素“卡住”:
float
属性值:
实例(把图像向右浮动):
img
{
float:right;
}
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
</head>
<body>
<div>
<div style='float:left'><img src="image/1.jpg" ></div>
<div><img src="image/2.jpg" ></div>
<div><img src="image/3.jpg" ></div>
<div><img src="image/4.jpg" ></div>
</div>
</body>
</html>
截图如是:
第一个<div>:
第二个<div>:
第一个<div>去掉'float:left':
咱们对比这几幅截图,能够得知如下几点:
其实,如是解析仍感受对float的“破坏性”描述的不太明白,好吧,再来个例子。看看float的本职工做。
<!DOCTYPE html>
<html lang=“utf8”>
<head>
<meta charset="utf-8">
<title>Demo</title>
</head>
<body>
<div>
<img src="image/1.jpg" style='float:left'>
哇咔咔,我生来是作文字文字环绕效果的!
</div>
</body>
</html>
去掉'float:left'的<img>元素:
带有'float:left'的<img>元素:
<img>元素去掉'float:left'时的<div>元素:
<img>元素带有'float:left'时的<div>元素:
其实 ,我一直想强调,但一直没能说清楚的是: