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 setTimeout 常见问题小结
Aug 13 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
js随机生成网页背景颜色的方法
Feb 26 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
Bootstrap每天必学之附加导航(Affix)插件
Apr 25 Javascript
使用vue.js实现联动效果的示例代码
Jan 10 Javascript
jQuery表格(Table)基本操作实例分析
Mar 10 Javascript
小程序getLocation需要在app.json中声明permission字段
Apr 04 Javascript
webpack 代码分离优化快速指北
May 18 Javascript
js实现指定时间倒计时效果
Aug 26 Javascript
vue fetch中的.then()的正确使用方法
Apr 17 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处理json时中文问题的解决方法
2011/04/12 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
js实现文字截断功能
2016/09/14 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
Python编程实现蚁群算法详解
2017/11/13 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
详解Python文件修改的两种方式
2019/08/22 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
Ajax的工作原理
2015/12/04 面试题
英文版网络工程师求职信
2013/10/28 职场文书
模范家庭事迹材料
2014/02/10 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
民主生活会汇报材料
2014/12/15 职场文书
学校党支部公开承诺书
2015/04/30 职场文书