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 相关文章推荐
JavaScript中出现乱码的处理心得
Dec 24 Javascript
js判断浏览器类型的方法
Aug 07 Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
在JavaScript中使用timer示例
May 08 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
Mar 01 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
Jun 23 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
详解webpack自定义loader初探
Aug 29 Javascript
小程序使用watch监听数据变化的方法详解
Sep 20 Javascript
Bootstrap实现模态框效果
Sep 30 Javascript
Javascript如何递归遍历本地文件夹
Aug 06 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
jquery 插件 人性化的消息显示
2008/01/21 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python 实现目录复制的三种小结
2019/12/04 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
工程管理专业个人求职信范文
2013/12/07 职场文书
初中美术教学反思
2016/02/17 职场文书
技术入股合作协议书
2016/03/21 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python