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 中对象的继承〔转贴〕
Jan 22 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
Jquery Uploadify上传带进度条的简单实例
Feb 12 Javascript
Jquery中扩展方法extend使用技巧
Aug 24 Javascript
javascript异步编程代码书写规范Promise学习笔记
Feb 11 Javascript
JQuery实现左右滚动菜单特效
Sep 28 Javascript
JSONP和批量操作功能的实现方法
Aug 21 Javascript
jQuery实现的分页功能示例
Jan 22 Javascript
Angular使用$http.jsonp发送跨站请求的方法
Mar 16 Javascript
AngularJS实现的锚点楼层跳转功能示例
Jan 02 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
May 01 Javascript
javascript实现弹出层效果
Dec 10 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
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
解析php获取字符串的编码格式的方法(函数)
2013/06/21 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php处理复杂xml数据示例
2016/07/11 PHP
重定向实现代码
2006/11/20 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
python实现rsa加密实例详解
2017/07/19 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python计算列表内各元素的个数实例
2018/06/29 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
校园运动会广播稿
2015/08/19 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
Java实现学生管理系统(IO版)
2022/02/24 Java/Android