掌握position的static relative absolute fixed sticky

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Offset Function Test</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            position: relative;
        }

        .container {
            position: relative;
            top: 100px;
            left: 50px;
            border: 2px solid blue;
            padding: 20px;
        }

        .nested {
            position: relative;
            top: 30px;
            left: 40px;
            border: 2px solid red;
            padding: 10px;
        }

        .element {
            /* position: absolute;  不算nested 的 padding值  绝对定位 offsetTop 10+2+30+2+100+20 = 164 */
            position: relative;  /* 算nested 的 padding值 相对定位 offsetTop 10+10+30+2+20+2+100 =174 */
            top: 10px;
            left: 20px;
            border: 2px solid green;
        }
    </style>
</head>

<body>
    <div class="container">

        <div class="nested">

            <div class="element" id="testElement">Test Element</div>
        </div>
    </div>

    <script>
        /*
         * 获取元素距离BODY的偏移值 
         */
        function offset(element) {
            // debugger
            let parent = element.offsetParent,
                top = element.offsetTop,
                left = element.offsetLeft;
            while (parent) {
                if (!/MSIE 8/.test(navigator.userAgent)) {
                    left += parent.clientLeft;
                    top += parent.clientTop;
                }
                left += parent.offsetLeft;
                top += parent.offsetTop;
                parent = parent.offsetParent;
            }
            return {
                top,
                left
            };
        }

        // 测试函数
        window.onload = () => {
            const testElement = document.getElementById('testElement');
            console.log('testElement.offsetTop:', testElement.offsetTop)


            const offsets = offset(testElement);
            console.log('Offset Top:', offsets.top);
            console.log('Offset Left:', offsets.left);
        };
    </script>
</body>

</html>
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是CSS中五种常见的定位方式的介绍和用法: 1. static(静态定位):元素的位置遵循正常的文档流,不受top、bottom、left、right影响。 2. relative(相对定位):元素的位置相对于它在文档流中的初始位置进行定位,可以通过top、bottom、left、right属性进行微调。 3. absolute(绝对定位):元素的位置相对于最近的已定位祖先元素(position属性不为static)进行定位,如果没有已定位的祖先元素,则相对于文档的body元素进行定位。 4. fixed(固定定位):元素的位置相对于浏览器窗口进行定位,不随页面滚动而改变。 5. sticky(粘性定位):元素在跨越特定阈值前为相对定位,之后为固定定位。可以通过top、bottom、left、right属性进行微调。 下面是一个例子,展示了这五种定位方式的用法: ```html <!DOCTYPE html> <html> <head> <title>定位方式示例</title> <style type="text/css"> .container { height: 300px; position: relative; border: 1px solid black; } .box { width: 100px; height: 100px; background-color: red; color: white; text-align: center; line-height: 100px; font-size: 20px; } .static { position: static; } .relative { position: relative; top: 50px; left: 50px; } .absolute { position: absolute; top: 50px; left: 50px; } .fixed { position: fixed; top: 50px; left: 50px; } .sticky { position: sticky; top: 50px; } </style> </head> <body> <div class="container"> <div class="box static">static</div> <div class="box relative">relative</div> <div class="box absolute">absolute</div> <div class="box fixed">fixed</div> <div class="box sticky">sticky</div> </div> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值