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中ajax的load()与post()方法实例详解
Jan 05 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 Javascript
分析javascript原型及原型链
Mar 18 Javascript
React路由管理之React Router总结
May 10 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 Javascript
JS实现在线ps功能详解
Jul 31 Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
vue项目中微信登录的实现操作
Sep 08 Javascript
JavaScript如何优化逻辑判断代码详解
Jun 08 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跨服务器访问方法小结
2015/05/12 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
vue多次循环操作示例
2019/02/08 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python 中pandas.read_excel详细介绍
2017/06/23 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
标准毕业生自荐信范文
2013/11/04 职场文书
高中生自我评价个人范文
2013/11/09 职场文书
资产经营总监岗位职责范文
2013/12/01 职场文书
个人函授自我鉴定
2014/03/25 职场文书
先进班组事迹材料
2014/12/25 职场文书
会计工作检讨书
2015/02/19 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android