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 相关文章推荐
Javascript添加监听与删除监听用法详解
Dec 19 Javascript
详解JavaScript数组的操作大全
Oct 19 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
AngularJS基础 ng-submit 指令简单示例
Aug 03 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
Aug 15 Javascript
浅谈Angular中ngModel的$render
Oct 24 Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 Javascript
Vue的百度地图插件尝试使用
Sep 06 Javascript
JavaScript多态与封装实例分析
Jul 27 Javascript
vue实例中data使用return包裹的方法
Aug 27 Javascript
详解vuex的简单todolist例子
Jul 14 Javascript
vue 给数组添加新对象并赋值
Apr 20 Vue.js
再探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
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php单链表实现代码分享
2016/07/04 PHP
php实现websocket实时消息推送
2018/03/30 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
python实现BackPropagation算法
2017/12/14 Python
对Python 语音识别框架详解
2018/12/24 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
2013年保送生自荐信格式
2013/11/20 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
大学老师推荐信
2014/02/25 职场文书
高三高考决心书
2014/03/11 职场文书
大学新生军训方案
2014/05/03 职场文书
员工安全生产责任书
2014/07/22 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers