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函数作用域学习示例(js作用域)
Jan 13 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
利用canvas实现的加载动画效果实例代码
Jul 05 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
Sep 13 Javascript
Vue项目组件化工程开发实践方案
Jan 09 Javascript
解决vue打包之后静态资源图片失效的问题
Feb 21 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
Aug 09 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 jQuery
深入理解 ES6中的 Reflect用法
Jul 18 Javascript
js动态添加带圆圈序号列表的实例代码
Feb 18 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 daodb插入、更新与删除数据
2009/03/19 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
python中的字典详细介绍
2014/09/18 Python
pygame实现简易飞机大战
2018/09/11 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
什么是唯一索引
2015/07/05 面试题
我的长生果教学反思
2014/04/28 职场文书
拓展训练激励口号
2014/06/17 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
紫日观后感
2015/06/05 职场文书
实习证明模板
2015/06/16 职场文书
php字符串倒叙
2021/04/01 PHP
浅谈Python项目的服务器部署
2021/04/25 Python