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 相关文章推荐
jquery1.4后 jqDrag 拖动 不可用
Feb 06 Javascript
用按钮控制iframe显示的网页实现方法
Feb 04 Javascript
jquery实现excel导出的方法
Apr 04 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
Jun 06 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
angularJS 中input示例分享
Feb 09 Javascript
javascript 利用arguments实现可变长参数
Nov 21 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
详解vue-cli之webpack3构建全面提速优化
Dec 25 Javascript
使用JS获取页面上的所有标签
Oct 18 Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 Javascript
vue实现行列转换的一种方法
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
PHP 简单数组排序实现代码
2009/08/05 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
php按单词截取字符串的方法
2015/04/07 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
js获取url参数值的两种方式
2013/09/10 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
清除输入框内的空格
2016/12/21 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
python去掉空白行的多种实现代码
2018/03/19 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
NumPy统计函数的实现方法
2020/01/21 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
python实现猜拳游戏
2020/03/04 Python
Python接口自动化测试的实现
2020/08/28 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
师范大学音乐表演专业求职信
2013/10/23 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
经济管理自荐书
2014/06/09 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python