kingtakeshi
2016-08-03 16:25
什么是前辈元素?为什么前辈元素必须是relative,相对参照的是absolute?
完全不明白啊,难道不是参照的绝对定位(不动的),而相对参照的才是相对定位吗(按照参照定位元素来定位)?
首先建立参考系,就是relative,一起发生移动就是absolute
什么是绝对定位:
如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口
首先你得理解绝对定位到底是怎么回事。
分析一下老师给的定义:
将元素从文档流中拖出来:
意味着这个元素它不会占用原来的位置(和相对定位做对比)
相对于其最接近的一个具有定位属性的父包含块进行绝对定位:
最接近:就是离得最近的
具有定位属性:意味着在css中需要设置position是什么(absolute/relative/fixed)
父包含块:意味着参考块包含着定位块。
如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口
这样的块是什么块?
这样的快必须同时满足两个条件:
具有定位属性
是父包含块
如果找不到,那就相对于body元素定位。
<div id="box1">
<div id="box2">
<div id="box3"> </div>
</div>
</div>
例如上面这段代码,假设box3为定位块,box1是参考块,那么box1就应该包含box3.同理,如果你想把box2作为参考块,那么box2也得包含着box3.
(这时,box2,box1都满足条件“是box3的父包含块”,但是还不满足条件“具有定位属性”,如果想把box2或者box2,box1作为参考块,还要给他们添加定位属性,如下)
<style type="text/css">
#box1{positon:abosute}
</style>
(这时,box1既满足条件“父包含块”,也满足条件“具有定位属性”,那么box1就可以作为参考块了;而box2,依旧不满足“具有定位属性”,尽管box2离box3是最近的,但是依然不能作为参考块。)
综上:只要参考块是定位块的父包含块,并且具有定位属性,那就可以作为参考块。至于是否一定要设置为position:relative,是不一定的。
定位块,你要做相对参考块的定位,那么可以用absolute或者relative,未必一定是absolute,不能用fixed,因为fixed是相对于浏览器窗口的,才不管你参考块是什么。
(1)前辈元素定义得很形象啊,除了父元素外,还有父元素的父元素、与父元素共父元素的元素以及更外层的元素。(2)楼上AirLuo的解释非常形象,只不过考虑到其他前辈元素时,你得说明一下,前辈元素设为relative是相对于它自己的前辈元素,而定位元素则是相对于当前的前辈元素设置的absolute。
absplute是不移动的,所以作为儿子,relative是可以移动的,所以做为爸爸,当你在编写页面的时候需要把爸爸移动,儿子是会跟着走的,不然你还要在编写一下儿子弄到爸爸那,
首先,我想告诉你的是,如果父级元素是绝对定位(absolute)或者没有设置,里面的绝对定位(absolute)自动以body定位。这句话是错的。
正确的是:只要父级元素设了position并且不是static(默认既是static),那么设定了absolute的子元素即以此为包含块(最近的)。
绝对定位(Absolute positioning)元素定位的参照物是其包含块,既相对于其包含块进行定位,不一定是其父元素。
橱窗=浏览器,一盒烟=relative,烟盒里的烟=absolute。这时候从橱窗中挪动一盒烟。
所以烟盒是在橱窗里,相对它原来的位置发生了移动,即相对位置relative
因为烟盒包括烟(父类),而烟盒里的烟也和烟盒一起发生了移动,是因为烟相对烟盒是绝对位置,即absolute
父元素当然jiu是前辈元素
初识HTML(5)+CSS(3)-升级版
1225294 学习 · 18230 问题
相似问题