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 相关文章推荐
使用隐藏的new来创建对象
Mar 29 Javascript
js中unicode转码方法详解
Oct 09 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 Javascript
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
Sep 18 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
May 10 Javascript
Promise静态四兄弟实现示例详解
Jul 07 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
2006/12/14 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
JSONP之我见
2015/03/24 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
3种vue路由传参的基本模式
2018/02/22 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
致100米运动员广播稿
2014/02/14 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
2014年班主任工作总结
2014/11/08 职场文书
春节随笔
2015/08/15 职场文书
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
Redis数据同步之redis shake的实现方法
2022/04/21 Redis