原生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实现划词标记+划词搜索功能
Mar 06 Javascript
js checkbox(复选框) 使用集锦
Apr 28 Javascript
Script的加载方法小结
Jan 12 Javascript
在jQuery ajax中按钮button和submit的区别分析
Oct 07 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
Apr 17 Javascript
如何通过javascript操作web控件的自定义属性
Nov 25 Javascript
JavaScript函数使用的基本教程
Jun 04 Javascript
基于Bootstrap实现图片轮播效果
May 22 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
vue.js的computed,filter,get,set的用法及区别详解
Mar 08 Javascript
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
小程序图片长按识别功能的实现方法
Aug 30 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执行速度全攻略(下)
2006/10/09 PHP
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP实现简易计算器功能
2020/08/28 PHP
laravel请求参数校验方法
2019/10/10 PHP
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
清空元素html("") innerHTML="" 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
python用来获得图片exif信息的库实例分析
2015/03/16 Python
用C++封装MySQL的API的教程
2015/05/06 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
windows下python安装小白入门教程
2018/09/18 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
基于python代码批量处理图片resize
2020/06/04 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
年度考核个人总结
2015/03/06 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
Python如何使用循环结构和分支结构
2022/04/13 Python