js 获取图像缩放后的实际宽高,位置等信息


Posted in Javascript onMarch 07, 2017

项目中遇到图片实际显示尺寸的判定问题,图片可能被缩放过,所以实际显示的宽高无法通过常见的各种width,height拿到(都是得到图像的自然宽度或者字面宽度,并非实际显示结果)

在网上百度了一大圈也没有找到,今天早上偶然找到2个很方便的方法:

object.getClientRects();object.getBoundingClientRect();

可以轻易获得当前元素的绝对位置(不含scrollLeft和scrollTop,需要用的话单独加上去)和显示出来的实际宽高

getClientRects 和 getBoundingClientRect 的区别

getClientRects 返回一个TextRectangle集合,就是TextRectangleList对象。

getBoundingClientRect 返回 一个TextRectangle对象,即使DOM里没有文本也能返回TextRectangle对象.

浏览器差异:

除了safari,firefox2.0外所有浏览器都支持getClientRects和getBoundingClientRect,

firefox 3.1给TextRectangle增加了 width 和 height。

ie 和非ie浏览器在使用getClientRects还是有些差别的,ie获取TextRectangleList的范围很大。而非ie获取的范围比较小, 只有display:inline的对象才能获取到TextRectangleList,例如em i span 等标签。

通过测试,至少Chrome 2+\Safari 4\Firefox3.5\0pera 9.63+已经支持getBoundingClientRect方法。

出于浏览器兼容的考虑,现在用得最多的是getBoundingClientRect,经常用来获取一个element元素的viewport坐标。

MDN关于getBoundingClientRect的详细介绍:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery 简单导航实现代码
Sep 11 Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
jQuery快速实现商品数量加减的方法
Feb 06 Javascript
JS实现复制功能
Mar 01 Javascript
React进阶学习之组件的解耦之道
Aug 07 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 Javascript
webpack中的模式(mode)使用详解
Feb 20 Javascript
详解JavaScript自定义函数
Jul 29 Javascript
JavaScript和JQuery获取DIV值的方法示例
Mar 07 #Javascript
AngularJS监听路由变化的方法
Mar 07 #Javascript
微信小程序开发之入门实例教程篇
Mar 07 #Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 #Javascript
Node.js查找当前目录下文件夹实例代码
Mar 07 #Javascript
jQuery模拟下拉框选择对应菜单的内容
Mar 07 #Javascript
详解JS异步加载的三种方式
Mar 07 #Javascript
You might like
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
PHP时间函数使用详解
2019/03/21 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
超详细的JS弹出窗口代码大全
2020/04/18 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
小程序实现左滑删除效果
2019/07/25 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
Python实现查找系统盘中需要找的字符
2015/07/14 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
python实现简单加密解密机制
2019/03/19 Python
Python Django 命名空间模式的实现
2019/08/09 Python
Python函数基本使用原理详解
2020/03/19 Python
python打包多类型文件的操作方法
2020/09/21 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
如何理解委托
2012/01/06 面试题
大学专科生推荐信范文
2013/11/23 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
2014年度工作总结报告
2014/12/15 职场文书
小学教育见习总结
2015/06/23 职场文书