原生js实现jQuery的功能 width()方法实现 (二)
2018-01-11 20:21
711 查看
上一篇介绍了height()方法的实现,这一篇介绍下width()的方法实现。
其实基本类似,直接看代码吧。如果需要了解原理请看height()的方法实现细节。
其实基本类似,直接看代码吧。如果需要了解原理请看height()的方法实现细节。
getElWidth: function (elObj) { //如果传入的不是对象是字符串 则通过字符串转换成对象 elObj = GoingUtils.getElObj(elObj); if (elObj != null&&GoingUtils.isShow(elObj)) { //如果标签上定义了style 而且style里面定义了width 则返回width if (elObj.style.width != null && elObj.style.width.length > 0) { return parseFloat(elObj.style.width); } //如果elObj.style.width为空 则从css里面获取是否定义了width信息如果定义了 则读取css里面定义的宽度width if(parseFloat(GoingUtils._getStyleValue(elObj,"width"))>0) { return parseFloat(GoingUtils._getStyleValue(elObj,"width")); } //如果从css里获取到的值不是大于0 可能是auto 则通过offsetWidth来进行计算 if (elObj.offsetWidth > 0) { var borderLeftWidth = GoingUtils._getStyleValue(elObj, "borderLeftWidth"); var borderRightWidth = GoingUtils._getStyleValue(elObj, "borderRightWidth"); var paddingLeft = GoingUtils._getStyleValue(elObj, "paddingLeft"); var paddingRight = GoingUtils._getStyleValue(elObj, "paddingRight") var backWidth = parseFloat(elObj.offsetWidth) - parseFloat(borderLeftWidth) - parseFloat(borderRightWidth) - parseFloat(paddingLeft) - parseFloat(paddingRight); return parseFloat(backWidth); } return 0; } else { //将元素显示出来 获取高度 再将元素隐藏掉 注意这里的inline-block 如果是block就是整个宽度了 GoingUtils.attrEl(elObj,'style',"visibility:hidden;display:inline-block !important;"); var width=GoingUtils.getElWidth(elObj); elObj.removeAttribute('style'); return Math.ceil(width); } }
相关文章推荐
- 原生js实现jQuery的功能 height()方法实现(一)
- 原生js实现jQuery的功能 show()方法实现 (三)
- jquery.cookie.js实现用户登录保存密码功能的方法
- JS原生方法实现jQuery的ready()
- 原生js实现jquery的getJSON方法
- 原生JS取代一些JQuery方法的简单实现
- js原生方式实现jquery中的append()方法
- 前端跨域问题相关知识详解(原生js和jquery两种方法实现jsonp跨域)
- JavaScript之JS原生方法实现jQuery的ready()
- 利用原生js和jQuery实现单选框的勾选和取消操作的方法
- jquery全选/全不选/反选另一种实现方法(配合原生js)
- JS原生方法实现jQuery的ready()
- 原生js实现复制对象、扩展对象 类似jquery中的extend()方法
- JS原生方法实现jQuery的ready()
- 【笔记】js原生方法 在元素外部或内部实现添加元素功能(类似jq 的 insert 和 append)
- JS原生方法实现jQuery的ready()
- 习惯了使用jQuery的ajax方法,看看原生js使用xmlhttpRequest实现ajax请求
- 原生JS和jQuery版实现文件上传功能
- 使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
- JavaScript Tag标签切换实现的几种方法 原生js + jquery