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 相关文章推荐
Dojo 学习要点
Sep 03 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
JS去除字符串两端空格的简单实例
Dec 27 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
JavaScript将XML转成JSON的方法
Mar 12 Javascript
3种不同的ContextMenu右键菜单实现代码
Nov 03 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
Apr 19 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 Javascript
在Vue中使用mockjs代码实例
Nov 25 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
PHP执行速率优化技巧小结
2008/03/15 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
composer.lock文件的作用
2016/02/03 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
Javascript Objects详解
2014/09/04 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
英语生日邀请函
2014/01/23 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
会计员岗位职责
2014/03/15 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
计划生育诚信协议书
2014/11/02 职场文书
城管个人总结
2015/02/28 职场文书
JS ES6异步解决方案
2021/04/29 Javascript