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的一个浮动框(扩展性比较好 )
Aug 27 Javascript
jquery遍历数组与筛选数组的方法
Nov 05 Javascript
jquery datatable后台封装数据示例代码
Aug 07 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
javascript函数式编程程序员的工具集
Oct 11 Javascript
使用jQuery获取data-的自定义属性
Nov 10 Javascript
每日十条JavaScript经验技巧(二)
Jun 23 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
Oct 17 Javascript
vue-router:嵌套路由的使用方法
Feb 21 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
Aug 28 Javascript
layUI的验证码功能及校验实例
Oct 25 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
vue2.0实战之基础入门(1)
2017/03/27 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
高三高考决心书
2014/03/11 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
个人求职信格式范文
2015/03/20 职场文书
孙振耀退休感言
2015/08/01 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
判断Python中的Nonetype类型
2021/05/25 Python