Home  >  Article  >  Web Front-end  >  CSS 定位之绝对与相对_html/css_WEB-ITnose

CSS 定位之绝对与相对_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:30:58985browse

1.static,relative,absolute,fixed含义

static: 元素框正常生成。块级元素生成一个矩形框,作为文档流的

的一部分,行内元素则会常见一个或多个行框,至于其父元素中。

relative: 元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占有的空间仍保留。

absolute: 元素框从文档流中完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素挥着是初始包含块。

元素原先 在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。

元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

fixed: 元素框的表现类似于absolute,不过其包含块是视窗本身。

2.包含块(更像是定义了一个要定位元素的上下文,是定位的重中之重)

(1)根元素的包含块由用户代理创建,在html中,跟元素是html元素,不过有些浏览器会使用body作为根元素。

在大多数浏览器中,初始包含块是一个视窗大小的矩形。

(2)对于一个非根元素来说,如果其position值是relative或static,包含块则由最近的块级框,表单元格或行内块祖先框的内容边界构成。

(或者所包含块就是它自身,自身是其上下文)

(3)对于一个非根元素来说,如果其position值是absolute,包含块设置为最近的position值不是static的 祖先元素(不是兄弟元素) 。

3.偏移属性:top,right,bottom,left(相对于包含块的偏移)

定位元素也就是position不是static的元素。

(1)偏移属性定义元素的大小

尽管有时候元素的尺寸很重要,但是对于定位元素来说则不一定必须要。

下面这个例子中,定位元素就没有指定尺寸,但是效果可以看出它确实有尺寸。

因为这些尺寸将由这些偏移隐含确定计算出。

<div style="  background-color: darkgrey;width: 200px; position: absolute; height: 100px">    <div style="right: 100px;background-color: red;height: 100px;bottom: 0;left: 0;position: absolute;top: 0;"></div></div>

依据上面说的,定位元素是absolute定位,其包含块是最近的position不为static的元素,在这里就是灰块元素。

(2)内容溢出和剪裁

溢出使用overflow的属性,这里就不说了。

剪裁使用clip,这里不是本章的重点。

4.绝对定位

<div style="height: 100px;width: 200px;background-color: #00ee00;top:10px;position: absolute">绿</div><div style="  background-color: darkgrey;width: 300px; position: relative; height: 100px">灰    <div style="background-color: red;width: 200px;height: 100px;top:10px;right: 100px;position: absolute">红</div></div>

上面这个例子说明包含块与定位元素的关系。

①是absolute定位元素。top=10px;相对于页面根元素。

②是包含块,包含着③absolute定位元素。

③是absolute定位元素。top=10px;相对于②包含块。

有时候你可能想确保body元素为其所有后代建立一个包含块,而不是让用户代理选择。

声明: body{position:relative}

5.相对定位

(1)相对定位的元素占据原有空间,如下图中的一段窄空白区域。

并且相对定位元素设置其自身的包含块,然后相对于那个上下文偏移自身。

下图中,红色框就是该②原本文档布局的位置。设置了top:10px;之后,相对于本身的位置下移了10个像素。

<div style="height: 100px;width: 200px;background-color: #00ee00;top:10px;bottom:20px;"></div><div style="height: 100px;width: 200px;background-color: gold;top:10px;bottom:20px;position: relative"></div>

(2)相对定位的过度受限,产生的后果。

css2.1中指出,如果遇到过度受限的相对定位,一个值会重置两一个值得相反数。因此这里博疼痛=-top

也就是top:10px;bottom:-10px;

效果就是:div元素往下移动10个像素。

<div style="height: 100px;width: 200px;background-color: #00ee00;top:10px;bottom:20px;position: relative"></div>

6.个人认为两者有着本质的区别

top,right,bottom,left是元素相对于包含块的偏移属性。

margin-top..等属性是元素中盒模型的外边距属性。

看上去两者都能造成元素与元素的位置关系。

(还有很多内容有待学习与完善)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn