原生js获取宽高与jquery获取宽高的方法关系对比


Posted in Javascript onApril 04, 2014

说明: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未设定宽高的情况下,不会出现滚动条。

Javascript 相关文章推荐
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
angularjs基础教程
Dec 25 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
80%应聘者都不及格的JS面试题
Mar 21 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
angularjs获取到My97DatePicker选中的值方法
Oct 02 Javascript
利用jqgrid实现上移下移单元格功能
Nov 07 Javascript
js的各种数据类型判断的介绍
Jan 19 Javascript
JS运算符优先级与表达式示例详解
Sep 04 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
Apr 04 #Javascript
javascript中的循环语句for语句深入理解
Apr 04 #Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 #Javascript
调试代码导致IE出错的避免方法
Apr 04 #Javascript
javascript写的一个模拟阅读小说的程序
Apr 04 #Javascript
js 显示base64编码的二进制流网页图片
Apr 04 #Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 #Javascript
You might like
三个类概括PHP的五种设计模式
2012/09/05 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python中偏函数用法示例
2018/06/07 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
经济管理专业毕业生推荐信
2013/11/11 职场文书
美术教师岗位职责
2014/03/18 职场文书
常务副总经理任命书
2014/06/05 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
大客户经理岗位职责
2015/04/09 职场文书
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android