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 相关文章推荐
JS函数实现动态添加CSS样式表文件
Dec 15 Javascript
jQuery模拟超链接点击效果代码
Apr 21 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
Nov 02 Javascript
代码分析jQuery四种静态方法使用
Jul 23 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
Aug 14 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
写gulp遇到的ES6问题详解
Dec 03 Javascript
vuex(vue状态管理)的特殊应用案例分享
Mar 03 Javascript
如何手写简易的 Vue Router
Oct 10 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实现的服务器一致性hash分布算法示例
2018/08/09 PHP
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
TypeScript入门-接口
2017/03/30 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python3读取zip文件信息的方法
2015/05/22 Python
Python 查看文件的编码格式方法
2017/12/21 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
python中有函数重载吗
2020/05/28 Python
python如何保存文本文件
2020/06/07 Python
python excel多行合并的方法
2020/12/09 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
资料员的岗位职责
2013/11/20 职场文书
精通CAD能手自荐书
2014/01/31 职场文书
关于责任的演讲稿
2014/05/20 职场文书
法务专员岗位职责
2015/02/14 职场文书
建国大业观后感
2015/06/01 职场文书
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers
volatile保证可见性及重排序方法
2022/08/05 Java/Android