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 相关文章推荐
DEFER怎么用?
Jul 01 Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
jQuery在ul中显示某个li索引号的方法
Mar 17 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
Jul 25 Javascript
深入探讨Vue.js组件和组件通信
Sep 12 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
JS实现页面打印功能
Mar 16 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
Aug 08 Javascript
JavaScript fetch接口案例解析
Aug 30 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
React服务端渲染原理解析与实践
Mar 04 Javascript
JS的深浅复制详细
Oct 16 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
PHP集成FCK的函数代码
2008/09/27 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
bootstrap table实现合并单元格效果
2018/12/24 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
vue中nextTick用法实例
2019/09/11 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
Pycharm更换python解释器的方法
2018/10/29 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
浅析Python requests 模块
2020/10/09 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
求网格中的黑点分布
2013/11/06 面试题
中间件分为哪几类
2016/09/18 面试题
UNIX文件名称有什么规定
2013/03/25 面试题
初婚未育证明
2014/01/15 职场文书
中学生自我鉴定
2014/02/04 职场文书
挂牌仪式主持词
2014/03/20 职场文书
产假请假条
2014/04/10 职场文书
假面舞会策划方案
2014/05/29 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js