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 相关文章推荐
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
May 30 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
JavaScript原生对象之Date对象的属性和方法详解
Mar 13 Javascript
jQuery实现TAB选项卡切换特效简单演示
Mar 04 Javascript
JavaScript隐式类型转换
Mar 15 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
利用JQuery阻止事件冒泡
Dec 01 Javascript
微信小程序实现收藏与取消收藏切换图片功能
Aug 03 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
JS表格的动态操作完整示例
Jan 13 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 字符串替换的方法
2012/01/10 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
php链表用法实例分析
2015/07/09 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
JavaScript常用事件介绍
2019/01/21 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
Python单例模式实例分析
2015/01/14 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
Python 读写文件的操作代码
2018/09/20 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
python 实现批量图片识别并翻译
2020/11/02 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
三个儿子教学反思
2014/02/03 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js