js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

关于 js 中 top、clientTop、scrollTop、offsetTop 四个属性的区别,我们可以这样来理解:

top

对于 Window 对象和 Frame 对象,top 属性返回当前窗口的最顶层的父级窗口,如果当前对象已经是最顶层窗口,该属性则返回这个对象本身。

对于 HTML 元素,如果元素的 position 属性值为 'static'(默认值),则 top 属性不起作用;如果 position 为 'absolute' 或 'fixed',则 top 属性表示该元素的顶部边缘到其 offsetParent 元素(非 static 定位的父元素)顶部边缘的距离。

示例:

<!DOCTYPE html>
<html>
<head>
    <title>top示例</title>
    <style type="text/css">
        #outer {
            position: absolute;
            top: 100px;
            left: 100px;
            width: 200px;
            height: 200px;
            background-color: pink;
        }
        #inner {
            position: absolute;
            top: 50px;
            left: 50px;
            width: 100px;
            height: 100px;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div id="outer">
        <div id="inner"></div>
    </div>
    <script type="text/javascript">
        // 获取 inner 的 top 值
        var inner = document.getElementById('inner');
        console.log(inner.style.top); // '50px'

        // 获取 inner 的 offsetParent 元素的 top 值
        var offsetParentTop = inner.offsetParent.offsetTop;
        console.log(offsetParentTop); // 100
    </script>
</body>
</html>

clientTop

clientTop 属性返回元素上方和左侧边框的宽度(以像素为单位)。通常情况下,元素的 clientTop 应该等于该元素的 CSS 样式表中定义的边框宽度。

示例:

<!DOCTYPE html>
<html>
<head>
    <title>clientTop示例</title>
    <style type="text/css">
        div {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <div id="box">hello world</div>
    <script type="text/javascript">
        // 获取 box 元素的 clientTop 值
        var box = document.getElementById('box');
        console.log(box.clientTop); // 1
    </script>
</body>
</html>

scrollTop

scrollTop 属性是获取或设置一个可以滚动的元素顶部相对于其顶部的偏移。当元素内容不溢出其任何框架时,scrollTop 值为 0。

示例:

<!DOCTYPE html>
<html>
<head>
    <title>scrollTop示例</title>
    <style type="text/css">
        #box {
            height: 200px;
            overflow: auto;
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <div id="box">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed est nisl, imperdiet eget ipsum vel, egestas mattis magna. Fusce tempus velit mauris, luctus pharetra metus congue vel. Duis mollis dapibus nunc, vel cursus lectus molestie vel. Proin imperdiet in orci ac fringilla. Aliquam condimentum faucibus tellus, ut ultrices tellus congue a. Donec nec tortor blandit, tincidunt sapien ut, auctor nisi. Quisque tempor bibendum metus, viverra convallis ex. Vivamus velit nunc, tristique at risus vitae, lacinia iaculis lacus. Sed euismod nibh vel ipsum sodales, vitae ultricies risus dictum. Sed hendrerit consequat quam, vitae sollicitudin magna vehicula eget. Praesent eleifend mauris a risus bibendum tincidunt. Etiam dapibus, erat vel bibendum mollis, tellus libero ullamcorper sapien, sed vestibulum augue libero vel quam. Nam blandit neque in ex sagittis, sed laoreet nibh sollicitudin. In hac habitasse platea dictumst.</p>
        <p>Donec elementum sapien ultricies tellus egestas dignissim. Nullam posuere elit a elit pharetra imperdiet. Nam vulputate ultrices lectus, vehicula sagittis eros congue eget. Phasellus egestas auctor tincidunt. Praesent congue in magna ac tempor. Duis semper, lectus in aliquet faucibus, quam dui congue ex, sed convallis nisl mi non mi. Nam dapibus sem quis velit facilisis, sit amet mollis ligula sollicitudin. Nullam ornare quam malesuada ante venenatis, vitae vulputate mi consequat. Quisque efficitur, sapien non dapibus finibus, velit risus malesuada nibh, eget malesuada orci justo vel elit. Mauris mauris lectus, pretium at nisi vel, aliquet pharetra mi. Aenean molestie varius augue non dictum. Etiam feugiat at magna eu congue. Nulla eget euismod justo. Praesent ut gravida velit.</p>
        <p>Vivamus vehicula metus risus, ac suscipit lacus mattis ac. Integer eget est gravida diam ornare mollis. Sed eleifend nec sem eget aliquet. Nunc malesuada, velit in tempor dapibus, diam neque viverra orci, ac pretium quam massa eu lorem. Aliquam ornare lacus eu ex interdum ultricies. Praesent eleifend nisl felis, in luctus massa tempus eget. Sed a bibendum nibh. Vivamus dictum, odio vitae imperdiet aliquam, sem tellus bibendum urna, ac tincidunt tellus erat sit amet augue. Nullam vel sapien in quam imperdiet tincidunt. In sed eros sit amet mi maximus mattis eu ut ligula. Ut ac faucibus urna. Sed luctus varius eros sed tincidunt. Sed tristique, magna non blandit elementum, odio quam placerat nunc, a commodo neque libero nec sapien.</p>
    </div>
    <script type="text/javascript">
        var box = document.getElementById('box');

        // 获取 box 元素的 scrollTop 值
        console.log(box.scrollTop); // 0

        // 设置 box 元素的 scrollTop 值
        box.scrollTop = 100;
        console.log(box.scrollTop); // 100
    </script>
</body>
</html>

offsetTop

offsetTop 属性返回当前元素上边缘相对于其 offsetParent 元素上边缘的距离(以像素为单位)。即使该元素被滚动了,该属性也不受影响。

示例:

<!DOCTYPE html>
<html>
<head>
    <title>offsetTop示例</title>
    <style type="text/css">
        #outer {
            position: relative;
            top: 100px;
            left: 100px;
            width: 200px;
            height: 200px;
            background-color: pink;
        }
        #inner {
            position: absolute;
            top: 50px;
            left: 50px;
            width: 100px;
            height: 100px;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div id="outer">
        <div id="inner"></div>
    </div>
    <script type="text/javascript">
        // 获取 inner 的 offsetTop 值
        var inner = document.getElementById('inner');
        console.log(inner.offsetTop); // 150
    </script>
</body>
</html>

以上就是 top、clientTop、scrollTop、offsetTop 四个属性的详细区别说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JS中sort函数排序用法实例分析

    下面是JS中sort函数排序用法实例分析的详细攻略。 什么是sort函数排序? sort()是JavaScript数组的一个方法,用于对数组元素进行排序。 sort()方法不创建新数组,而是直接修改原始数组的顺序。 sort()方法默认按字母顺序排序,如果是数字需要先将其转为字符串。 sort()方法可以接受一个函数作为参数,该函数指定排序规则。 sort函…

    JavaScript 2023年5月28日
    00
  • Javascript Date getUTCMonth() 方法

    JavaScript 中的 getUTCMonth() 方法用于获取 UTC 时间的月份部分。在本教程中,我们将详细介绍 getUTCMonth() 方法的使用方法。 getUTCMonth() 方法的基本语法如下: date.getUTCMonth() 其中,date 是获取月份部分的 UTC 日期对象。 以下两个示例说明: 示例一:使用 getUTCMo…

    JavaScript 2023年5月11日
    00
  • Javascript 高阶函数使用介绍

    Javascript高阶函数使用介绍 在Javascript中,高阶函数是指能够接受一个或多个函数作为参数,或者将函数作为返回值的函数。通过使用高阶函数,我们可以更好地组织我们的代码,使其更加灵活和可复用。下面将详细介绍Javascript高阶函数的几种常见用法。 将函数作为参数传入另一个函数 使用函数作为另一个函数的参数是高阶函数中最基本的用法之一。例如我…

    JavaScript 2023年5月27日
    00
  • JavaScript 学习笔记(十四) 正则表达式

    JavaScript 学习笔记(十四) 正则表达式 什么是正则表达式 正则表达式是一种可以匹配文本片段的模式,它是由一个或多个字符和元字符组成的。在 JavaScript 中,正则表达式是由 RegExp 对象表示的。 正则表达式语法 元字符 元字符是正则表达式中具有特殊意义的字符,包括以下元字符: . : 匹配除 \n 外的任意字符。 [] : 匹配括号内…

    JavaScript 2023年5月28日
    00
  • 论JavaScript模块化编程

    论JavaScript模块化编程 JavaScript的模块化编程是指将一个大型的应用程序划分为小的、互相依赖的模块,每个模块具有特定的功能,实现模块的高内聚、低耦合的特性,方便代码的维护和复用。本文将介绍如何使用JavaScript进行模块化编程,并分别通过常规模块化和ES6模块化两个实例进行说明。 常规模块化 常规模块化是JavaScript模块化的老方…

    JavaScript 2023年5月27日
    00
  • IE8 下的Js错误HTML Parsing Error…

    问题描述: 在 IE8 浏览器中,出现 Js 报错信息 “HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)” 该错误在其他 IE 版本中可能也会出现。 解决方案: 此类问题一般是 HTM…

    JavaScript 2023年5月28日
    00
  • 在JavaScript中实现链式调用的实现

    实现链式调用,可以让代码更加简洁、易读、易维护,主要分为两个步骤:实现方法的返回值为对象本身,实现链式调用调用下一个方法。 实现方法的返回值为对象本身 在JavaScript中,方法可以返回对 对象实例本身 的引用,这样就可以在同一个对象上多次调用不同的方法了。在方法的末尾,使用 return this 将当前对象实例返回即可。 下面是一个简单示例: con…

    JavaScript 2023年6月11日
    00
  • JavaScript对象引用与赋值实例详解

    JavaScript对象引用与赋值实例详解 在JavaScript中,有很多时候我们会需要操作对象(Object)。对象是JavaScript中最基本的数据结构之一,而且在JavaScript中,对象是一种引用类型的数据。 这就引出了一个问题,即JavaScript中对象引用和赋值的问题。该问题会在实际的开发中经常遇到,也会给我们带来一些困惑和不好的体验。本…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部