找个地方记录一下各种xxxTop和xxxHeight

267 阅读1分钟

xxxLeft和xxxWidth 同理可证

<!DOCTYPE html>
<html lang="en" oncontextmenu="return false">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--<script src="index.js"></script>-->
    <link rel="stylesheet" type="text/css" href="index.css">
    <style>
        html,body,{
            height: 100%;
            width: 100%;

        }
        div#container{
            height: 800px;
            width: 100%;
            background-color: whitesmoke;
            overflow: scroll;
            border: white 5px solid;
        }
        div.box{
            height: 150px;
            width: 150px;
            margin-top: 1050px;
            background-color: aquamarine;
            border: 10px black solid;
        }
        .button{
            position: fixed;
        }
    </style>
</head>
<body>
    <div id="container">
        <button class="button">showMessage</button>
        <div class="box">
            container里面的box
        </div>
    </div>
   <script>
    window.onload = function () {
        let container = document.querySelector("#container")
        let box = document.querySelector(".box")
        let btn = document.querySelector(".button")
        btn.addEventListener('click',showMessage)
        function showMessage() {
            let windowScrollTop = document.documentElement.scrollTop //window滚动区域的高度 32px
            let windowpageYOffset = window.pageYOffset//window滚动区域的高度 32px
            let containerScrollTop = container.scrollTop//contianer滚动区域的高度 614px
            let containerscrollHeight = container.scrollHeight // 1218px 包括滚动区域的高度
            let containerclientHeight = container.clientHeight //779px,不包括滚动区域的高度,content+padding(如果出现滚动,这个不包括滚动条的高度)
            let containeroffsetHeight = container.offsetHeight //810px 不包括滚动区域的高度 783px content+padding+border
            let boxoffsetTop = box.offsetTop //距离文档左上角的高度
            let boxclientTop = box.clientTop //border设置了10px,clientTop为10
            let rectObject = box.getBoundingClientRect();
            <!--
                rectObject: DOMRect
                bottom: 1225
                height: 170
                left: 5
                right: 175
                top: 1055
                width: 170
                x: 5
                y: 1055
            -->
            // DOM元素到浏览器视图左上角的Y轴距离(需要手动计算) =  DOM元素对象.offsetTop -  滚动元素.scrollTop
            let DOMHeight = box.offsetTop - containerScrollTop //1055px - 441px = 614px
            debugger
        }
        showMessage()
    }
    </script>
</body>
</html>