说明:1、因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况。
2、以下所说的所有方法与属性所返回的值都是不带单位的。
3、为了方便说明,以下情况采用缩写表示:
obj
-> 在原生JS中表示DOM对象;在JQuery中表示JQuery对象
Width ->
obj.style.width
OffsetWidth ->
obj.offsetWidth
$width ->
obj.width()
$innerWidth ->
obj.innerWidth()
$outerWidth ->
obj.outerWidth()
padding ->
表示对象的padding-left和padding-right之和
border ->
表示对象的border-left-width和border-right-width之和
原生JS获取宽度的相关属性有
width和offsetWidth。width的获取方法是obj.style.width,只有当对象是通过内嵌方式设定宽度时才能获得,否则返回的是一个空字符串。offsetWidth获得的值跟JQuery中获得对象的outerWidth一样,offsetWidth是非标准的但却得到很好支持的属性。
JQuery获得宽度的方法有width()、innerWidth()、outerWidth()这三种方法。具体使用方式是:obj.width()、obj.innerWidth()、obj.outerWidth()。width()获得的是对象的内容宽度,innerWidth()获得的是对象的内容宽度与填充宽度的和,outerWidth()获得的是包括边框、填充宽度与内容宽度在内的宽度。
这五种方法之间的关系如下:
width
= $width;
offsetWidth = border + padding
+width;
$innerWidth = padding +
width;
$outerWidth = border + padding
+width;
这五种方法对firefox、chrome、opera、safari、ie6、ie7、ie8、ie9都兼容,只是存在着两种问题:1、width在没有设定的情况下,chrome在第一次打开页面时,所获取到的宽度全部都是错误的。第二次打开时,结果就跟firefox一致。2、ie6未设定宽高的情况下,不会出现滚动条。
相关文章
- 03-27JS常用公共方法 获取弹出层合适的宽高
- 03-27原生js获取宽高与jquery获取宽高的方法的关系
- 03-27JS-特效 ~ 04. client对象、网页可视区域的宽高、client / offset / scroll 三大家族的区别、冒泡事件、事件委托、获取内嵌式和外链式属性getStyle(ele,attr) ;、缓动动画封装
- 03-27JS获取元素宽高的两种情况
- 03-27JS 获取网页的宽高
- 03-27js获取隐藏元素宽高的方法
- 03-27JS获取页面,元素,窗口和返回页面,元素,窗口的宽高以及滚动值
- 03-27js 获取图片的宽高
- 03-27[Jquery] Jquery获取浏览器宽高的代码
- 03-27jquery 获取图片宽高为0的问题