美文网首页
JS & jQuery的各种宽高

JS & jQuery的各种宽高

作者: 黑色的五叶草 | 来源:发表于2018-11-01 16:55 被阅读0次

一、JS宽高计算

参考地址:http://caibaojian.com/js-name.html

  1. 名词解释
    screen:屏幕。这一类取到的是关于屏幕的宽度和距离,与浏览器无关,是获取window对象的属性。
    client:使用区、客户区。指的是客户区,当然是指浏览器区域。
    offset:偏移。指的是目标甲相对目标乙的距离。
    scroll:卷轴、卷动。指的是包含滚动条的的属性。
    inner:内部。指的是内部部分,不含滚动条。
    avail:可用的。可用区域,不含滚动条,易与inner混淆。

  2. Window对象

window-浏览器
  • window.innerWidth/innerHeight 浏览器可见区域的内宽度、高度(不含浏览器的边框,但包含滚动条)。
  • window.outerWidth/outerHeight 浏览器外宽度(包含浏览器的边框,因各个浏览器的边框边一样,得到的值也是不一样的)。
  • window.screenLeft/screenTop 浏览器的位移。
    ie浏览器的内边缘距离屏幕边缘的距离,chrome浏览器的外边缘距离屏幕边缘的距离
  • window.screenX/screenY 浏览器的位移
    ie9/10浏览器的外边缘距离屏幕边缘的距离,chrome浏览器的外边缘距离屏幕边缘的距离。
  • window.pageXOffset/pageYOffset 表示浏览器X轴(水平)、Y轴(垂直)滚动条的偏移距离。
  • window.scrollX/scrollY 表示浏览器X轴(水平)、Y轴(垂直)滚动条的偏移距离。

由此可知,chrome的screenLeft和screenX是相等的(其目的是为了兼容ie和firefox)。chrome和firefox中window.pageXOffset和window.scrollX是相等的

screen-屏幕
  • window.screen.width/height 屏幕的宽度、高度(指的是屏幕的分辨率,单位为像素)。
  • window.screen.availWidth/availHeight 屏幕的可用宽度、高度(通常与屏幕的宽度、高度一致)。
element-元素

元素的宽度、位移、距离以元素的盒模型为content-box为例。即:box-sizing: content-box;

  • elment.clientWidth/clientHeight 不包含滚动条宽度 clientWidth = padding + width
    有滚动条时:clientWidth=元素左内边距宽度+元素宽度+元素右内边距宽度-元素垂直滚动条宽度
    无滚动条时:clientWidth=元素左内边距宽度+元素宽度+元素右内边距宽度
  • element.clientLeft/clientTop border宽度,clientLeft为左边框宽度,clientTop为上边框宽度。
  • element.offsetWidth/offsetHeight
    offsetWidth = border + padding + width = clientWidth + clientLeft
    offsetWidth = 元素左边框宽度 + 元素左内边距宽度 + 元素宽度 + 元素右内边距宽度 + 元素右边框宽度。
  • element.offsetLeft/offsetTop 表示该元素相对于最近的定位祖先元素的距离。
  • element.scrollWidth/scrollHeight
    有滚动条时:scrollWidth
    chrome、firefox、ie8/9/10:左内边距宽度+内容宽度。 ie6/7:左内边距宽度+内容宽度+右内边距宽度(是由CSS的BUG引起)。
    无滚动条时:左内边距宽度+宽度+右内边距宽度。
  • element.scrollLeft/scrollTop 表示当前元素的水平滚动条向右侧滚动的距离

总结:
屏幕宽度:window.screen.width
浏览器内宽度:window.innerWidth || document.documentElement.clientWidth
元素内容宽度:element.clientWidth
元素占位宽度:element.offsetWidth

二、jQuery宽高计算

  1. $(window).width()window.innerWidth有什么区别?
    window.innerWidth获取当前窗口的宽度(包含滚动条),$(window).width()获取当前窗口的宽度(不包含滚动条
  2. jQuery宽高
  • width()/height():获得或设置元素内容的宽/高;若元素的display:none,其值为0。
  • innerWidth()/innerHeight():获得包括内边距(padding)的元素宽度/高度,不包括边框;
  • outerWidth()/outerHeight():获得包括内边距(padding)和边框(border)的元素宽度/高度;
  • outerWidth(true)/outerHeight(true):获得整个元素的宽度/高度,包括外边距(margin)、边框(border)、内边距(padding)和内容(width)
  1. 元素偏移量
    原生js用element.offsetTop/left是相对于父元素的偏移量;
    jQuery用offset()position()方法,这两个方法都返回一个对象,包含top和left属性。不同的是前者是相对于document,后者相对于已定位的父元素。

相关文章

网友评论

      本文标题:JS & jQuery的各种宽高

      本文链接:https://www.haomeiwen.com/subject/zryxxqtx.html