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 相关文章推荐
js prototype 格式化数字 By shawl.qiu
Apr 02 Javascript
javascript Base类 包含基本的方法
Jul 22 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
Sep 05 Javascript
解析prototype,JQuery中跳出each循环的方法
Dec 12 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
js变量、作用域及内存详解
Sep 23 Javascript
Javascript中With语句用法实例
May 14 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
Jan 10 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
简单的js表格操作
Sep 24 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
Sep 08 Javascript
react antd实现动态增减表单
Jun 03 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.ini中文版(2)
2006/10/09 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
jQuery 解析xml文件
2009/08/09 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
详解Vue的mixin策略
2020/11/19 Vue.js
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
python实现抖音视频批量下载
2018/06/20 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
linux面试题参考答案(9)
2016/01/29 面试题
音乐系毕业生自荐信
2013/10/27 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
项目经理任命书内容
2014/06/06 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
优秀校长事迹材料
2014/12/24 职场文书
奖学金个人总结
2015/03/04 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL