绝对定位出现在盒子中的常见场景
(1)要听最近的已经定位的祖先元素的,不一定是父亲,可能是爷爷
情况1:
代码如下:
<style> *{ margin: 0; padding: 0; } .box1{ width: 360px; height: 360px; border: 5px solid cornflowerblue; margin: 0 auto; margin-top: 50px; /* 要听最近的已经定位的祖先元素的,不一定是父亲,可能是爷爷 */ /* 相对定位 */ position: relative; } .box1 .box2 p{ width: 50px; height: 50px; background-color: coral; /* 绝对定位 */ position: absolute; left: 40px; top: 100px; } </style> </head> <body> <!-- 相对定位 --> <div class="box1"> <!-- 没有定位 --> <div class="box2"> <!-- 绝对定位,将以box1为参考,因为box2没有定位,box1就是最近的父辈元素 --> <p>小汤</p> </div> </div>
预览:
情况2 绝对定位,将以box2为参考,因为box2是自己最近的父辈元素
代码如下:
<style> *{ margin: 0; padding: 0; } .box1{ width: 360px; height: 360px; border: 5px solid cornflowerblue; margin: 0 auto; margin-top: 50px; /* 相对定位 */ position: relative; } .box2{ width: 240px; height: 240px; border: 5px solid red; margin: 0 auto; margin-top: 30px; /* 相对定位 (给它设置相对定位和不设置相对定位,分别自己演示一下,观察细节) */ position: relative; } .box1 .box2 p{ width: 50px; height: 50px; background-color: coral; /* 绝对定位 */ position: absolute; left: 20px; top: 10px; } </style> </head> <body> <!-- 相对定位 --> <div class="box1"> <!-- 相对定位 --> <div class="box2"> <!-- 绝对定位,将以box2为参考,因为box2是自己最近的父辈元素 --> <p>小汤</p> </div> </div>
预览:
(2)不一定是相对定位,任何定位,都可以作为参考点
<div> → 绝对定位
<p></p> → 绝对定位,将以div作为参考点。因为父亲定位了。
</div>
代码如下:
<style> *{ margin: 0; padding: 0; } .parent{ width: 500px; height: 500px; border: 20px solid red; /* 绝对定位 */ position: absolute; } .son{ width: 100px; height: 100px; background-color: orange; /* 绝对定位 */ position: absolute; left: 200px; top: 100px; } </style> </head> <body> <div class="parent"> <div class="son"></div> </div>
预览:
(3)div盒子中包含段落p的情况,
代码如下:
<style> *{ margin: 0; padding: 0; } .parent{ width: 500px; height: 500px; border: 20px solid red; /* 绝对定位 */ position: absolute; } .son{ width: 200px; height: 200px; background-color: orange; /* 绝对定位 */ position: absolute; left: 100px; top: 50px; } .parent .son p{ width: 60px; height: 60px; background-color: coral; position: absolute; left: 20px; top: 30px; } </style> </head> <body> <div class="parent"> <div class="son"> <p>段落</p> </div> </div>
预览: