CSS定位:实现图片在滚动Div中固定于角落不随内容滚动

CSS定位:实现图片在滚动Div中固定于角落不随内容滚动

本文详细讲解如何利用css的`position: relative`和`position: absolute`属性,实现在一个可滚动`div`容器中,将图片精确固定在其角落,且不随内容滚动。通过设置父容器为相对定位,子图片为绝对定位,确保图片始终相对于父容器边界保持固定,同时兼顾移动设备兼容性,是前端开发中处理此类ui布局的实用技巧。

在网页设计中,我们经常会遇到需要在特定容器(如一个可滚动区域)的角落放置装饰性图片或图标的需求。然而,当容器内容发生滚动时,这些角落的图片往往会随之滚动,无法保持其相对于容器边缘的固定位置。本文将深入探讨如何利用CSS的定位属性,优雅地解决这一问题,确保图片始终固定在容器的指定角落,而不受内容滚动的影响。

理解CSS定位机制

要解决此问题,首先需要理解CSS中几个关键的定位属性:position: static、position: relative、position: absolute 和 position: fixed。

  • position: static (默认值):元素遵循正常的文档流。top, right, bottom, left, z-index 属性无效。
  • position: relative (相对定位):元素仍然在正常的文档流中,但可以通过 top, right, bottom, left 属性相对于其自身在文档流中的原始位置进行偏移。更重要的是,一个相对定位的元素会为其绝对定位的子元素创建一个新的定位上下文
  • position: absolute (绝对定位):元素会脱离正常的文档流,不再占据空间。它会相对于其最近的已定位祖先元素(即 position 属性不是 static 的祖先元素)进行定位。如果没有已定位的祖先元素,它将相对于初始包含块(通常是 html> 元素)进行定位。
  • position: fixed (固定定位):元素会脱离正常的文档流,相对于视口(viewport)进行定位。这意味着它会固定在屏幕上的某个位置,即使页面滚动也不会移动。

在我们的场景中,我们希望图片固定在父div的角落,而不是页面的角落,并且不随父div内容的滚动而移动。position: fixed 会使图片固定在视口边缘,这不符合我们的要求。因此,我们需要利用 position: relative 和 position: absolute 的组合。

解决方案:相对定位父容器与绝对定位子元素

核心思路是:将父容器设置为 position: relative,从而为内部的绝对定位子元素提供一个定位上下文。然后,将需要固定在角落的图片设置为 position: absolute,并使用 top, right, bottom, left 属性将其精确地定位到父容器的相应角落。

示例代码

假设我们有一个可滚动的日志更新区域,并希望在它的四个角落放置装饰性图片。

HTML 结构:

<div class="scrollable-container">
    <!-- 左上角图片 -->
    @@##@@
    <!-- 右上角图片 -->
    @@##@@
    <!-- 左下角图片 -->
    @@##@@
    <!-- 右下角图片 -->
    @@##@@

    <!-- 容器内容,此处为更新日志 -->
    <p>
        <b style="padding: 5px;">22/05/22</b>
        <a href="https://toyhou.se/~world/74697.20studios">Updated: Alpha 0.1.3 Added all bases to base character gallery.</a>
    </p>
    <p>更多更新日志内容...</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/1337">
                            <img src="https://img.php.cn/upload/ai_manual/001/431/639/68b6d64b79043646.png" alt="盘古大模型">
                        </a>
                        &lt;div class="aritcle_card_info">
                            <a href="/ai/1337">盘古大模型</a>
                            <p>华为云推出的一系列高性能人工智能大模型</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="盘古大模型">
                                <span>207</span>
                            </div>
                        </div>
                        <a href="/ai/1337" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="盘古大模型">
                        </a>
                    </div>
                
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志内容...</p>
    <p>更多更新日志
Top left cornerTop right cornerBottom left cornerBottom right corner

以上就是CSS定位:实现图片在滚动Div中固定于角落不随内容滚动的详细内容,更多请关注其它相关文章!

本文转自网络,如有侵权请联系客服删除。