js 和 jquery 里面几个获取宽高的调查
罗列下 js 和 jquery 里面获取宽高的方法:
obj.offsetWidth = $obj.outerWidth() // offsetWidth
obj.clientWidth = obj.scrollWidth // offsetWidth - border - scrollbar
$obj.innerWidth() // offsetWidth - border
$obj.width() // offsetWidth - border - padding
基本是这样(当然测试的过程复杂得多,移动端 scrollbar 为 0,是加法还是减法,还考虑 inline 形态等)...

css 是这样的 width:100px; padding: 15px; border: 5px solid; overflow:auto;
获取高度同理,此处不赘述...
可见 jquery 的 width() 方法和 js 的 clientWidth 还是有区别的,
可以认为当有滚动条时,子级的宽度会和 scrollbar 有关,而不是单纯的 offsetWidth - border - padding
而且 border-box 状态下这一切又不一样了...(JQuery 忽略了盒模式,Zepto 倒是由 box-sizing 决定)
另外,inline-block 形态与 block 一致
而 inline 状态时,clientWidth 和 scrollWidth 是为 0 的,但 width() 依然可用
再写点不错引用:
// 判断子级是否超出了父级范围
obj.scrollHeight > obj.clientHeight || obj.offsetHeight > obj.clientHeight;
// 判断是否在屏幕中显示
$.fn.isInView = function(options) {
var $this = $(this); if (!$this.visible()) return false; var windowLeft = $win.scrollLeft(), windowTop = $win.scrollTop();
var offset = $this.offset();
var left = offset.left, top = offset.top; options = $.extend({
topOffset: 0, leftOffset: 0
}, options); return (
top + $this.height() >= windowTop &&
top - options.topOffset <= windowTop + $win.height() &&
left + $this.width() >= windowLeft &&
left - options.leftOffset <= windowLeft + $win.width()
);
};
js 和 jquery 里面几个获取宽高的调查的更多相关文章
- 17.在自适应屏幕里通过JQ来获取宽高并赋给需要的
在自适应屏幕里通过JQ来获取宽高并赋给需要的div. var height = document.documentElement.clientHeight; $(window).height();(同 ...
- 原生js获取宽高与jquery获取宽高的方法的关系
说明:1.因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况. 2.以下所说的所有方法与属性所返回的值都是不带单位的. 3.为了方便说明,以下情况采用缩写表示: obj -> ...
- DOM中获取宽高、位置总结
原生JS 一.文档.窗口的宽高和位置 // 获取屏幕的宽高 window.screen.height | window.screen.width // 屏幕可用工作区宽高 window.screen. ...
- html 获取宽高
jquery获取元素宽高的方法如下 1.元素自身高度 $("#div").height(); 2.元素自身高度 + padding $("#div").inne ...
- 自定义view获取宽高
View在构造函数初始化并未布局处理,此时宽高均为0,待所有控件初始化完毕后,由上级容器对内部各控件进行布局,此时控件才会具有位置与大小属性,可以通过以下方法获取:1.在ondraw()函数中获取,2 ...
- JavaScript 中禁止用户右键菜单,复制,选取,Ctrl,Alt,Shift. 获取宽高,清除浮动
//禁用右键菜单 document.oncontextmenu = function(){ event.returnValue = false; } //禁用选取内容 document.onselec ...
- 一步一步解析H.264码流的NALU(SPS,PSS,IDR)获取宽高和帧率
分析H.264码流的工具 CodecVisa,StreamEye以及VM Analyzer NALU是由NALU头和RBSP数据组成,而RBSP可能是SPS,PPS,Slice或SEI 而且SPS位于 ...
- iOS硬解码获取宽高
1: CVPixelBufferGetWidth(_:The pixel buffer whose width you want to obtain) 获取解码后图像宽度 CVPixelBufferG ...
- jquery操作html中图片宽高自适应
在网站制作中如果后台上传的图片不做宽高限制,在前台显示的时候,经常会出现图片变形,实用下面方法可以让图片根据宽高自适应,不论是长图片或者高图片都可以完美显示. $("#myTab0_Cont ...
随机推荐
- request.getParameterValues()用法
<form name="checkform" method="post" action="getvalue.jsp"> 你希望学 ...
- 个人博客开发之xadmin与ueditor集成
项目源码下载:http://download.vhosts.cn 1. xadmin 添加ueditor 插件 vim extra_apps\xadmin\plugins\ueditor.py #没有 ...
- 【转】在Eclipse中使用JUnit4进行单元测试(初级篇)
http://www.builder.com.cn/2007/0901/482336.shtml 首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新 ...
- jQuery 和其他 JavaScript 框架
正如您已经了解到的,jQuery 使用 $ 符号作为 jQuery 的简写. 如果其他 JavaScript 框架也使用 $ 符号作为简写怎么办? 其他一些 JavaScript 框架包括:MooTo ...
- sql server case when then
http://blog.csdn.net/wuxiaokaixinguo/article/details/8895187
- Android-ViewPagerIndicator框架使用——TabPageIndicator
前言:TabPageIndicator这个类和之前的不大一样,他不仅提供了展示的功能,而且可以点击,下面的viewpager可以跳转的有点tabhost的感觉. 一:布局文件的定义,simple_ta ...
- Laravel创建模型
laravel中创建模型 <?php /** * Created by PhpStorm. * 新建模型 * User: chuang * Date: 17-1-15 * Time: 上午9:1 ...
- Type Group(类型组)
在 APAP 程序开发中, 经常需要定义一些常量或变量, 而且可能存在多个程序中需要用到的类似的变量或结构体, SAP 提供了类型组, 允许用户建立一些公用的对象, 允许在不同的程序中调用, 这样不但 ...
- 信息属性列表关键字 info.plist
本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6650491 本附录说明了那些可以在束和包的属性列表文件中定义的关键字. 束关键 ...
- es站内站内搜索笔记(一)
es站内站内搜索笔记(一) 第一节: 概述 使用elasticsearch进行网站搜索,es是当下最流行的分布式的搜索引擎及大数据分析的中间件,搜房网的主要功能:强大的搜索框,与百度地图相结合,实现地 ...