三大家族(offset、scroll、client)

offset


  • 用于获取当前元素尺寸
  • 5个属性
    属性 含义
    offsetWidth 获取对象自身的宽 width+border+padding
    offsetHeight 获取对象自身的高 height+border+padding
    offsetLeft 距离最近的第一个有定位父级盒子左边的距离,如无定位则以body为准 从父标签的padding开始计算,不包括border
    offsetTop 距离最近的第一个有定位父级盒子上边的距离,如无定位则以body为准 从父标签的padding开始计算,不包括border
    offsetParent 返回当前对象的父级(带定位)盒子,无定位返回body ---
  • offset与style的区别
    1. style.left只取行内样式,offsetLeft可以获取到所有的样式。
    2. offsetLeft可以返回无定位盒子的左距离;而style.left只能返回有定位的盒子距离。
    3. offsetLeft返回的是数字,而style.left返回的是字符串,还带单位px。
    4. offsetLeft是只读的;style.left是可写的。
    5. 若无指定当前元素top,则style.top返回空字符串。

scroll


  • 与滚动事配合使用(onscroll)

  • 4个属性

    1. document.body.scrollWidth =>网页正文全文宽
      scrollWidth =>元素中能够滚动的内容的宽度
    2. document.body.scrollHeight =>网页正文全文高
      scrollHeight =>元素中能够滚动的内容的高度
    3. document.body.scrollTop => 页面被卷去的高
    4. document.body.scrollLeft => 页面被卷去的宽
  • 浏览器兼容

    1. 严格模式:document.compatMode = CSS1Compat
    2. 怪异模式:document.compatMode = BackCompat
    3. 兼容方式:高版本浏览器 || 严格模式 || 怪异模式
      var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
      var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
    4. 封装成工具类
      • 获取被卷去的宽或者高
      scroll:function () {
          if(window.pageYOffset !== null){
              return{
                  "top":window.pageYOffset,
                  "left":window.pageXOffset
              }
          }else if (document.compatMode === 'CSS1Compat'){
              return {
                  "top":document.documentElement.scrollTop,
                  "left":document.documentElement.scrollLeft
              }
          }
          return {
              "top":document.body.scrollTop,
              "left":document.body.scrollLeft
          }
      }
      
      • 获取能够滚动的内容的宽或者高
      scrollText:function () {
          if (document.compatMode === 'CSS1Compat'){
              return {
                  "height":document.documentElement.scrollHeight,
                  "width":document.documentElement.scrollWidth
              }
          }
          return {
              "height":document.body.scrollHeight,
              "width":document.body.scrollWidth
          }
      }
      

client


  • 与窗口尺寸事件配合使用(onresize)
  • 4大属性
    属性
    clientWidth 可视区域宽:width + padding
    clientHeight 可视区域高:height + padding
    clientLeft 盒子左边边框宽
    clientTop 盒子上边边框宽
  • 获取屏幕可视区域(兼容模式)
    ie9以上版本最新浏览器 || 标准模式 || 怪异模式
    var clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
    var clientHeigth = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

附:事件


  1. 拿到事件
btn.addEventListener("click", function (ev1) {
        // 兼容方式拿到事件对象
          var e = ev1 || window.event;
}
  1. 事件对象的属性和用途
    属性 用途
    clientX 光标相对于网页的水平位置
    clientY 光标相对于网页的垂直位置
    type 事件的类型
    target 改事件被传送到的对象
    screenX 光标相对于该屏幕的水平位置
    screenY 光标相对于该屏幕的垂直位置
    pageX 光标相对于该网页的水平位置(包括卷去的部分,不适用于IE)
    pageY 光标相对于该网页的垂直位置(包括卷去的部分,不适用于IE)
    width 该窗口或框架的宽度
    height 该窗口或框架的高度
    data 返回拖拽对象的URL字符串
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352