html中的“position:absolute”是绝对定位,一般配合“top”和“left”属性同时使用。
1、新建html文档,在body标签中添加一个div,然后在这个div中再添加一个div,这时默认情况下内div在外div的左上角:
2、为内div添加“position”属性,属性值为“absolute”,外div添加“position”属性,属性值为“relative”,这时内div会向外div绝对定位:
3、为内div设置距离顶部距离属性“top”和距离左侧属性“left”,这时内div会向外div做指定距离的定位:
1、“position:absolute”是绝对定位的意思,单纯的使用absolute属性并不会其效果,需要配合“top bottom left right ”属性才能看到效果。首先需要新建一个html文件,这里定义了10个换行符,换行符的下面定义一个div:
2、此时保存文件,打开浏览器可以看到div在浏览器的下方位置,接下来来设置绝对定位,让div显示在任意位置:
3、给divc的class使用absolute属性, 并使用上下左右位置属性,设置向上和向左分别50px,接着保存文件:
4、再次打开浏览器,可以看到div的位置在浏览器上方,覆盖了换行符的位置:
position:absolute
日常开发中经常涉及元素的定位,我们都知道,绝对定位相对于最近position不为static的父级元素来定位,但其中定位的位置还是有细微的差别的。
绝对定位根据left和top属性来规定绝对定位元素的位置。
但这个位置实际上与padding和父级相对定位的box-sizing有关的。
* 默认盒子的box-sizing为content-box(即盒子所占据的宽度=width+padding)
情况一: 正常盒模型box-sizing:content-box; 同时没有top和left的情况
上图:盒模型,在left和top没有定义时,相对于父级定位元素的content(内容区width)定位
情况二: 正常盒模型box-sizing:content-box; 规定top和left的值
效果图:
上图:在定义了top和left属性时,相对于父级元素的占位区定位(包含padding区域)
情况三:盒模型box-sizing:border-box; 没有top和left的值
情况四:盒模型box-sizing:border-box; 同时规定top和left的值
综上所述:
无论父级盒子是正常显示还是以border-box显示,在没有规定left和top的属性值时,都呈现在父级盒子的内容区(不包含padding)左上角
若规定了left:0;top:0;则统一相对父级盒子的左上角显示(包含padding)