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实现select添加option
Jul 03 Javascript
js实现圆盘记速表
Aug 03 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
纯js实现手风琴效果
Apr 17 Javascript
AngularJS服务service用法总结
Dec 13 Javascript
详解jQuery中的DOM操作
Dec 23 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
js封装成插件的步骤方法
Sep 11 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
Mar 14 Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 Javascript
js实现录音上传功能
Nov 22 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
一个查看session内容的函数
2006/10/09 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
js读取本地文件的实例
2017/12/22 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
scrapy-splash简单使用详解
2021/02/21 Python
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
机械专业毕业生推荐信范文
2013/11/25 职场文书
自我评价个人范文
2013/12/16 职场文书
大学毕业感言一句话
2014/02/06 职场文书
写求职信有什么意义
2014/02/17 职场文书
前台文员职责范本
2014/03/07 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年学前班工作总结
2014/12/08 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL