当前位置: 首页 > article >正文

scrol家族 offset家族 client家族学习

Scroll 系列属性

scrollTop & scrollLeft

  1. scrollTop: 返回元素的内容已向上滚动的部分的高度。
  2. scrollLeft: 返回元素的内容已向左滚动的部分的宽度。

scrollHeight & scrollWidth

  1. scrollHeight: 返回元素的实际高度,包括由于溢出而在屏幕上不可见的内容。
  2. scrollWidth: 返回元素的实际宽度,包括由于溢出而在屏幕上不可见的内容。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Scroll Properties Example</title>
    <style>
        #container {
            width: 200px;
            height: 200px;
            overflow: auto;
            border: 1px solid black;
        }
        .content {
            width: 300px;
            height: 300px;
        }
    </style>
</head>
<body>
    <div id="container">
        <div class="content"></div>
    </div>
    <button onclick="logScrollProperties()">Log Scroll Properties</button>

    <script>
        function logScrollProperties() {
            const container = document.getElementById('container');
            console.log(`scrollTop: ${container.scrollTop}`);
            console.log(`scrollLeft: ${container.scrollLeft}`);
            console.log(`scrollHeight: ${container.scrollHeight}`);
            console.log(`scrollWidth: ${container.scrollWidth}`);
        }

        // 示例:自动滚动到底部
        setTimeout(() => {
            const container = document.getElementById('container');
            container.scrollTop = container.scrollHeight;
            container.scrollLeft = container.scrollWidth;
        }, 2000);
    </script>
</body>
</html>

Offset 系列属性

offsetTop & offsetLeft

  1. offsetTop: 元素相对于最近的定位祖先元素(position != static)顶部的距离。如果没有这样的祖先,则相对于初始包含块(通常是视口)
  2. offsetLeft: 元素相对于最近的定位祖先元素左侧的距离。如果没有这样的祖先,则相对于初始包含块。

offsetParent

  1. offsetParent: 返回一个指向最近的设置了 position 属性(除了static之外)的祖先元素。如果没有这样的祖先,则返回 null 或者 <body> 元素。

offsetHeight & offsetWidth

  1. offsetHeight: 包括 content + padding + border 的总高度。
  2. offsetWidth: 包括 content + padding + border 的总宽度。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Offset Properties Example</title>
    <style>
        #outer {
            position: relative;
            top: 50px;
            left: 50px;
            width: 200px;
            height: 200px;
            background-color: lightblue;
        }
        #inner {
            position: absolute;
            top: 20px;
            left: 20px;
            width: 100px;
            height: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div id="outer">
        Outer Div
        <div id="inner">Inner Div</div>
    </div>
    <button onclick="logOffsetProperties()">Log Offset Properties</button>

    <script>
        function logOffsetProperties() {
            const outer = document.getElementById('outer');
            const inner = document.getElementById('inner');

            console.log(`Outer div's offsetTop: ${outer.offsetTop}, offsetLeft: ${outer.offsetLeft}`);
            console.log(`Inner div's offsetTop: ${inner.offsetTop}, offsetLeft: ${inner.offsetLeft}`);

            console.log(`Outer div's offsetHeight: ${outer.offsetHeight}, offsetWidth: ${outer.offsetWidth}`);
            console.log(`Inner div's offsetHeight: ${inner.offsetHeight}, offsetWidth: ${inner.offsetWidth}`);

            console.log(`Inner div's offsetParent: `, inner.offsetParent);
        }
    </script>
</body>
</html>

Client 系列属性

clientTop & clientLeft

  1. clientTop: 边框的厚度(上边框),不包括外边距、内填充或水平滚动条
  2. clientLeft: 左侧边框的厚度。

clientHeight & clientWidth

  1. clientHeight: 可见区域的高度,包括内填充不包括边框、外边距或水平滚动条
  2. clientWidth: 可见区域的宽度,包括内填充但不包括边框、外边距或垂直滚动条。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Client Properties Example</title>
    <style>
        #element {
            width: 200px;
            height: 200px;
            margin: 20px;
            padding: 10px;
            border: 5px solid red;
            overflow-y: scroll;
        }
    </style>
</head>
<body>
    <div id="element">
        Some long text here... Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    </div>
    <button onclick="logClientProperties()">Log Client Properties</button>

    <script>
        function logClientProperties() {
            const element = document.getElementById('element');

            console.log(`clientTop: ${element.clientTop}`); // Border thickness (top)
            console.log(`clientLeft: ${element.clientLeft}`); // Border thickness (left)

            console.log(`clientHeight: ${element.clientHeight}`); // Visible area including padding but excluding borders and scrollbar
            console.log(`clientWidth: ${element.clientWidth}`); // Same logic applies horizontally
        }
    </script>
</body>
</html>

总结

scrollscrollTop元素内容垂直滚动的像素数。
scrollLeft元素内容水平滚动的像素数。
scrollHeight元素内容的总高度,括在视口中不可见的部分。
scrollWidth元素内容的总宽度,包括在视口中不可见的部分。
offsetoffsetTop元素顶部相对于包含元素的顶部的距离。
offsetLeft元素左边缘相对于包含元素左边缘的距离。
offsetHeight元素的高度,包括边框和内边距
offsetWidth元素的宽度,包括边框和内边距。
clientclientTop元素的上边框的宽度。
clientLeft元素的左边框的宽度。
clientHeight元素的内部高度,不包括水平滚动条高度。
clientWidth元素的内部宽度,不包括垂直滚动条宽度。

http://www.kler.cn/a/524208.html

相关文章:

  • 【Go语言圣经】第五节:函数
  • Acwing94递归实现排列型枚举
  • 把markdown转换为pdf的方法
  • Julia Distributed(分布式计算)详解
  • PC端实现PDF预览(支持后端返回文件流 || 返回文件URL)
  • 反向代理模块。。
  • js学习笔记(2)
  • 单链表专题(上)
  • 玩转 LangChain:深度评估问答系统的三种高效方法(示例生成、手动评估与LLM辅助评估)
  • 19.Word:小马-校园科技文化节❗【36】
  • QT+mysql+python 效果:
  • 八种排序算法【C语言实现】
  • 代码随想录| 动态规划188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费
  • 技术发展视域下中西方技术研发思维方式的比较与启示
  • 传奇引擎游戏微端的作用
  • 5分钟带你获取deepseek api并搭建简易问答应用
  • AI工具灵感速递:离线ChatGPT×自然语言全栈开发×智能文件重命名,开发者效率革命!
  • DeepSeek-R1:开源Top推理模型的实现细节、使用与复现
  • 【华为OD-E卷 - 字符串解密 100分(python、java、c++、js、c)】
  • 52. TCP四次挥手
  • 动态规划<九>两个数组的dp
  • 基于SpringBoot电脑组装系统平台系统功能实现六
  • PHP If...Else 语句详解
  • 高级java每日一道面试题-2025年01月23日-数据库篇-主键与索引有什么区别 ?
  • HTML特殊符号的使用示例
  • Vue5---