css样式position:absolute关于位置的使用实例 

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Position Absolute 实例</title>
<style>
  .container {
    /* 父元素:需要设置为 relative 来作为 absolute 元素的定位基准 */
    position: relative; /* 关键点 */
    width: 400px;
    height: 250px;
    background-color: #f0f0f0;
    border: 2px solid #3498db;
    margin: 50px auto; /* 居中显示 */
    padding: 20px;
    text-align: center;
    font-family: Arial, sans-serif;
    box-sizing: border-box; /* 确保 padding 不增加总宽度 */
  }

  .container p {
    margin-bottom: 15px;
    color: #555;
  }

  .absolute-box {
    /* 子元素:设置为 absolute */
    position: absolute; /* 关键点 */
    width: 100px;
    height: 100px;
    background-color: #e74c3c;
    color: white;
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight: bold;
    font-size: 1.2em;
    border-radius: 8px;
    box-shadow: 2px 2px 5px rgba(0,0,0,0.2);

    /* 定位属性:相对于 .container 的左上角 */
    top: 30px;  /* 距离父元素顶部 30px */
    left: 50px; /* 距离父元素左侧 50px */

    /* 尝试改变定位,例如:*/
    /* bottom: 20px; */
    /* right: 20px; */
    /* top: 50%; */
    /* left: 50%; */
    /* transform: translate(-50%, -50%); /* 用于居中 */
  }

  .another-element {
    /* 其他普通流中的元素,不受 absolute 元素影响 */
    background-color: #2ecc71;
    color: white;
    padding: 10px;
    margin-top: 15px;
  }
</style>
</head>
<body>

<div class="container">
  <p>这是一个父容器元素,它的 <code>position</code> 被设置为 <code>relative</code>。</p>
  <p><code>absolute-box</code> 将基于此容器进行定位。</p>

  <div class="absolute-box">
    绝对定位
  </div>

  <div class="another-element">
    这是另一个在普通文档流中的元素。
    <br>你会发现 "绝对定位" 盒子浮在了它上面。
  </div>
</div>

</body>
</html>

 

解释 

1. position: absolute 的作用

当一个元素的 position 属性设置为 absolute 时,它将:

  • 脱离文档流:这意味着它不再占据空间,就好像它从正常布局中被“抽离”出来一样。其他在普通文档流中的元素会忽略它的存在,就像它不存在一样布局。

  • 基于最近的已定位祖先元素进行定位absolute 元素会根据其最近的、position 值不是 static(即 relativeabsolutefixedsticky)的祖先元素进行定位。如果找不到这样的祖先元素,它将相对于 初始包含块(通常是 <html> 元素,也就是视口)进行定位。

  • 使用 top, right, bottom, left 进行精确控制:你可以通过设置这些属性来精确指定元素相对于其定位父元素的边缘的距离。

2. 示例分析

  • .container (父元素):

    • position: relative;: 这是关键!我们将父容器设置为 relative。这使得 .container 成为了 .absolute-box定位上下文。这意味着 .absolute-box 将会根据 .container 的内边缘来计算它的 topleft 值。

    • 如果没有 position: relative;,那么 .absolute-box 将会向上寻找,直到找到一个已定位的祖先,如果最终都没有找到,它就会相对于 <body>(或者更准确地说,是初始包含块)进行定位。

  • .absolute-box (子元素):

    • position: absolute;: 将这个盒子设置为绝对定位。

    • top: 30px;: 这个盒子将距离其定位父元素(.container)的顶部边缘 30像素

    • left: 50px;: 这个盒子将距离其定位父元素(.container)的左侧边缘 50像素

    • 由于它脱离了文档流,你会看到它浮动在 .another-element 上方,并且没有影响 .another-element 的布局位置。

  • .another-element (其他元素):

    • 这是一个普通的块级元素。它会按照正常的文档流进行布局。你可以观察到 .absolute-box 脱离文档流后,并没有挤压或影响到 .another-element 的位置,它们之间没有正常的盒模型间距。

3. 何时使用 position: absolute

position: absolute 非常适合以下场景:

  • 精确覆盖/叠加:例如,在图片上叠加文字、图标或一个“新”/“热销”标签。

  • 弹出窗口/提示框:当点击某个元素时,弹出一个小窗口或工具提示。

  • 导航菜单的下拉项:在某些复杂的下拉菜单中,子菜单项可能需要绝对定位。

  • 图片画廊中的序号/标题:在图片轮播或画廊中,为图片添加绝对定位的序号或标题。

  • 创建复杂布局效果:当标准流布局难以实现时,absolute 可以提供更大的灵活性。

4. 注意事项

  • 定位上下文:始终要清楚 absolute 元素是相对于哪个祖先元素定位的。通常,你会给父元素设置 position: relative;

  • 脱离文档流:记住 absolute 元素不再占据空间,这可能会影响周围元素的布局。

  • 层叠顺序 (z-index):如果多个 absolute 元素重叠,可以使用 z-index 属性来控制它们的堆叠顺序。z-index 值越大,元素越靠上。

 [ 视频安全 ] 相关原创文章

Logo

全面兼容主流 AI 模型,支持本地及云端双模式

更多推荐