CSS 中position:absolute的定位到底是相当于body,还是父级元素的问题
position:absolute的定位是一个相对麻烦的问题。
首先在文档流中,定义为position:absolute的元素已经被删除了。
那它的定位到底是相对于body,还是父级元素呢?
结论如下:
position:absolute是相对于他的包含块中第一个有position:absolute或者position:relative属性的父级元素,如果都没有,就是相对于body。
举例如下:
1、它的父级元素都没有,就是相对于body定位的。
<!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <div style="width:200px;height:200px;background-color:red;"> <div style="width:100px;height:100px;background-color:blue;"> <div style="width:50px;height:50px;background-color:yellow;position:absolute;left:20px;top:10px;"></div> </div> </div> </body> </html>
2、它的父级元素里有,就是相对于哪个有的父级元素。
例一:相对于第一个div定位
<!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <div style="width:200px;height:200px;background-color:red;position:absolute;"> <div style="width:100px;height:100px;background-color:blue;"> <div style="width:50px;height:50px;background-color:yellow;position:absolute;left:20px;top:10px;"></div> </div> </div> </body> </html>
例二:相对于第二个div定位
<!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <div style="width:200px;height:200px;background-color:red;position:absolute;"> <div style="width:100px;height:100px;background-color:blue;position:relative;"> <div style="width:50px;height:50px;background-color:yellow;position:absolute;left:20px;top:10px;"></div> </div> </div> </body> </html>