JavaScript获取图片真实大小代码实例


Posted in Javascript onSeptember 24, 2014

网页页面上的图片尺寸似乎都千篇一律。我们最常见到的带有多图的文章页面中,图的大小通常是和页面的宽度一致,这样看起来,页面就是一个直筒形,这样的布局看多了就会觉得很单调。之所以形成这样的局面,我想很大程度上是因为老式浏览器的限制。但随着现代浏览器(火狐/谷歌/IE11)的普及,浏览器对页面设计的限制越来越少,Web程序员的想象能力能够得到极大的发挥。

比如,冷知识:你知道每个视窗都有的 [x] 是怎么来的吗?这篇文章中,很多图片超出了文本宽度的限制,给人一种参差错落的感觉,同时,让大图片以其真实的尺寸展示,给人以更震撼的感觉。

但从技术上,我们可以轻松的用文本的最大宽度限制图片,让它们都保持一个宽度,而不按文本的宽度时,我们就需要每个图片的自己的尺寸。我们可以在服务端编辑时声明图片的原始尺寸。而一种更灵活的方式是通过在页面上放一段js来动态的获取图片的原始大小尺寸,动态改变图片的显示大小。这样即能兼容老的也文本最大宽度的方式,还可以在需要的时候让图片呈现出其原始的大小。

如何用JavaScript在浏览器端获取图片的原始尺寸大小?

var img = $(“#img_id”); // Get my img elem

var pic_real_width, pic_real_height;

$(“<img/>”) // Make in memory copy of image to avoid css issues

.attr(“src”, $(img).attr(“src”))

.load(function() {

pic_real_width = this.width;   // Note: $(this).width() will not

pic_real_height = this.height; // work for in memory images.

});

Webkit浏览器(谷歌浏览器等)是在图片的loaded事件之后才能获取高度和宽度值。所以,你不能使用timeout函数延时等待,最好的方法是使用图片的onload事件。

为了避免CSS对图片大小尺寸的影响,上面的代码将图片拷贝到内存中进行计算。

如果你的页面是老式页面,你可以按需把这段代码嵌入页面底部,它不需要你修改原有页面。

Javascript 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
JavaScript表单通过正则表达式验证电话号码
Mar 14 Javascript
JavaScript中的this关键字使用详解
Aug 14 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
Vue-resource实现ajax请求和跨域请求示例
Feb 23 Javascript
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
js + css实现标签内容切换功能(实例讲解)
Oct 09 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
May 06 Javascript
再探JavaScript作用域
Sep 24 #Javascript
深入理解javascript原型链和继承
Sep 23 #Javascript
深入理解javascript构造函数和原型对象
Sep 23 #Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 #Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
Sep 23 #Javascript
IE6 hack for js 集锦
Sep 23 #Javascript
深入理解javascript作用域和闭包
Sep 23 #Javascript
You might like
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
Open and Print a Word Document
2007/06/15 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
python生成验证码图片代码分享
2016/01/28 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
施工人员岗位职责
2013/12/12 职场文书
大学生职业生涯规划范文
2013/12/31 职场文书
学校师德承诺书
2014/05/23 职场文书
优秀党支部申报材料
2014/12/24 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
flex弹性布局详解
2022/03/20 HTML / CSS
mysql sql常用语句大全
2022/06/21 MySQL