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学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
微信小程序 wx.uploadFile无法上传解决办法
Dec 14 Javascript
Vuex模块化实现待办事项的状态管理
Mar 15 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
微信小程序8种数据通信的方式小结
Feb 03 Javascript
JavaScript控制台的更多功能
Apr 28 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防止注入攻击实例分析
2014/11/03 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
详解Vite的新体验
2021/02/22 Javascript
python选择排序算法的实现代码
2013/11/21 Python
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python守护进程用法实例分析
2015/06/04 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
python主要用于哪些方向
2020/07/05 Python
python音频处理的示例详解
2020/12/23 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
餐饮业创业计划书范文
2014/01/06 职场文书
节能宣传周活动总结
2014/05/08 职场文书
收款委托书范本
2014/09/11 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
英文慰问信范文
2015/03/24 职场文书
考博导师推荐信范文
2015/03/27 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书