zoukankan      html  css  js  c++  java
  • 关于js中的offset client scroll的认识

    HTML元素有几个offset、client、scroll开头的属性,。主要是以下几个属性:

      第一组:offsetWidth,offsetHeight,offsetLeft,offsetTop,offsetParent

       第二组:clientWidth,clientHeight,clientLeft,clientTop

      第三组:scrollWidth,scrollHeight,scrollLeft,scrollTop

    这些是它们里面所包含的属性  

    详细一点的定义

     1.1 HTML元素的offsetWidth,offsetHeight以CSS像素返回它的屏幕尺寸,包含元素的边框和内边距,不包含外边距。

      1.2 offsetLeft和offsetTop属性返回元素的X和Y坐标。通常,它们返回值即是文档坐标。但对于已定位元素的后代元素和一些其他元素(如表格单元),这些属性返回的坐标是相对于祖先元素的而非文档。

      1.3 offsetParent属性指定offsetLeft,offsetTop相对的父元素。如果offsetParent为null,后两者的返回值则为文档坐标。因此一般来说,用offsetLeft和offsetTop来计算元素e的位置需要一个循环:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //计算元素的文档坐标
    function getElementPosition(e){
      var x=0,y=0;
      while(e !=null){
        x +=e.offsetLeft;
        y +=e.offsetTop;
        e=e.offsetParent;
      }
      return {x:x, y:y} ; 
    }

    该方法计算的位置也不总是正确的,推荐使用内置的getBoundingClientRect()方法。这个就是一些解释和一段代码的展示

    接下来是对client的详细解释  希望不懂的同学看看

    2.1 clientWidth和clientHeight类似于offsetWidth和offsetHeight属性,不同的是它们不包含边框大小,只包含内容和内边距。同时,如果浏览器在内边距和边框之间添加了滚动条,clientWidth和clientHeight的返回值也不包含滚动条。注意,对于类型<i>,<code>和<span>这些内联元素,clientWidth和clientHeight总是返回0。

    2.2 clientLeft和clientTop返回元素的内边距的外边缘和它的边框的外边缘之间的水平距离和垂直距离,通常这些值就等于左边和上边的边框宽度。但是如果元素有滚动条,并且浏览器将这些滚动条旋转在左侧或顶部,他们就还包含了滚动条的宽度。对于内联元素,它们总是为0。通常clientLeft和clientTop用处不大。

    这个是对scroll的理解

    .1 scrollWidth和scollHeight是元素的内容区域加上它的内边距再加上任何溢出内容的尺寸。当内容正好和内容区域匹配而没有溢出时,这些属性与clientWidth和clientHeight是相等的。但当溢出时,它们就包含溢出的内容,返回值比clientWidth和clientHeight要大。

      3.2 scrollLeft和scrollTop指定元素的滚动条的位置。注意,scrollLeft和scrollTop是可写的,通过设置它们来让元素中的内容滚动(HTML元素并没有类似Window对象的scrollTo()方法)。

    obj.offset[WidthHeightTopLeft]  取控件相对于父控的位置
    event.offset[XY] 取鼠标相在触发事件的控件中的坐标
    event.screen[XY] 鼠标相对于屏幕坐标
    event.client[XY] 鼠标相对于网页坐标在在
    obj.scroll[WidthHeightTopLeft] 获取对象滚动的大小
    obj.client[WidthHeightTopLeft] 获取对象可见区域的大小

    上面那些就是我说查到的和自己了解的关于js 三大属性的认知

  • 相关阅读:
    LeetCode OJ-- 二战 Palindrome Number
    Cracking-- 17.13 将二叉树转换成双向链表
    Cracking-- 4.7 在一颗二叉树中找两个节点的第一个共同祖先
    priority_queue 示例
    heap c++ 操作 大顶堆、小顶堆
    【转】当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
    Cracking-- 1.1 判断字符串中是否有重复字符
    如何取得SharePoint Timer Job的历史成功数和失败数,并按照日期计算排列
    SharePoint document 右键菜单和【...】菜单不一致的解决办法
    SharePoint Search 分词(WordBreaker)
  • 原文地址:https://www.cnblogs.com/zhangao/p/10105067.html
Copyright © 2011-2022 走看看