CSS定位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS定位相关的知识,希望对你有一定的参考价值。
如果页面内某个元素没有设定position属性,那么他具有position属性,并且属性值是static。原因在于网页里任一元素的默认position属性值均是static(静态)。
绝对定位具有以下属性:(对于下面说的“父级”,就是在原有的盒子外面,在套一层宽度和高度大于原有盒子尺寸的盒子)
- 如果没有TRBL,以父级的左上角,在没有父级的时候,他是参照浏览器左上角,如果在没有父级元素的情况下,存在文本,则以它前面的最后一个文字的右上角为原点进行定位但是不断开文字,覆盖于上方。
- 如果设定TRBL,并且父级没有设定position属性,那么当前的absolute则以浏览器左上角为原始点进行定位,位置将由TRBL决定。
- 如果设定TRBL,并且父级设定position属性(无论是absolute还是relative),则以父级的左上角为原点进行定位,位置由TRBL决定。即使父级有Padding属性,对其也不起作用,说简单点就是:它只坚持一点,就以父级左上角为原点进行定位,父级的padding对其根本没有影响。
以上三点可以总结出,若想把一个定位属性为absolute的元素定位于其父级元素内,必须满足两个条件:
- 设定TRBL
- 父级设定Position属性
相对定位,他是默认参照父级的原始点为原始点,配合TRBL进行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点进行定位。
- 如果没有TRBL,以父级的左上角,在没有父级的时候,他是参照浏览器左上角(到这里和absolute第一条一样),如果在没有父级元素的情况下,存在文本,则以文本的底部为原始点进行定位并将文字断开(和absolute不同)。
- 如果设定TRBL,并且父级没有设定position属性,仍旧以父级的左上角为原点进行定位(和absolute不同)
- 如果设定TRBL,并且父级设定position属性(无论是absolute还是relative),则以父级的左上角为原点进行定位,位置由TRBL决定(前半段和absolute一样)。如果父级有Padding属性,那么就以内容区域的左上角为原点,进行定位(后半段和absolute不同)。
- 相对定位有以下属性:
- 属性中加上position:relative后,就不只是用float布局页面了,还可以用TRBL进行布局页面了,再或者说加上position:relative的div也可以像普通的div进行布局页面了,只不过还可以用TRBL进行布局页面。但是,position属性为absolute不可以用来布局页面,因为如果用来布局的话,所有的DIV都相对于浏览器的左上角定位了,所以只能用于将某个元素定位于属性为absolute的元素的内部某个位置,这样我们就可以总结比较重要的结论属性为relative的元素可以用来布局页面,属性为absolute的元素用来定位某元素在父级中的位置,既然属性为absolute的元素用来定位某元素在父级中位置,就少不了TRBL,这时候根据一开始讲的absolute的第三条,如果父级元素没有position属性那么absolute元素就会脱离父级元素,但是如果是布局页面,父级元素position的属性又不能为absolute,不然就会以浏览器左上角为原点了,所以父级元素的position属性只能为relative!
- 总结:如果用定位来布局页面,父级元素的position属性必须为relative,而定位于父级内部某个位置的元素,最好用absolute,因为它不受父级元素的padding的属性影响,当然你也可以用relative,计算的时候不要忘记计算padding的值。
以上是关于CSS定位的主要内容,如果未能解决你的问题,请参考以下文章