js和jquery如何获取图片真实的宽度和高度


Posted in Javascript onSeptember 28, 2014

1、什么时候需要获取图片真实的宽度和高度

在做pc网页的时候,有时候会考虑按照插入的图片的尺寸来判断图片是横图还是竖图。然后判断过后给予不同的展示方式!

另外一种就是在手机页面上,在新闻页插入的图片往往都是按照图片的原尺寸来展示,如果手机屏幕太小,太大的图就会超出去!这时候有两种解决办法

1)给所有的图片加上这样的样式

1

.news img{margin:5px auto; display:block;width:100%; height:auto;}

但是这种方式有另外一个问题就是,如果插入的图片本身就很小的话,也会被直接拉伸成100%显示,显然这是不合理的!那么这里就介绍另外一种方式就是通过js动态展示图片的尺寸!

2)js动态获取图片的尺寸

jquery方式

代码如下

var _w = parseInt($(window).width());//获取浏览器的宽度
$(".new_mess_c img").each(function(i){
var img = $(this);
var realWidth;//真实的宽度
var realHeight;//真实的高度
//这里做下说明,$("<img/>")这里是创建一个临时的img标签,类似js创建一个new Image()对象!
$("<img/>").attr("src", $(img).attr("src")).load(function() {
/*
如果要获取图片的真实的宽度和高度有三点必须注意
1、需要创建一个image对象:如这里的$("<img/>")
2、指定图片的src路径
3、一定要在图片加载完成后执行如.load()函数里执行
*/
realWidth = this.width;
realHeight = this.height;
//如果真实的宽度大于浏览器的宽度就按照100%显示
if(realWidth>=_w){
$(img).css("width","100%").css("height","auto");
}
else{//如果小于浏览器的宽度按照原尺寸显示
$(img).css("width",realWidth+'px').css("height",realHeight+'px');
}
});
});

js方式

代码如下

window.onload = function(){
function getViewSize() {//获取浏览器视口的宽高
return {
"w": window['innerWidth'] || document.documentElement.clientWidth,
(3water.com) "h": window['innerHeight'] || document.documentElement.clientHeight
}
}
function getFullSize() {//获取浏览器最大的宽度
var w = Math.max(document.documentElement.clientWidth, document.body.clientWidth) +
Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
var h = Math.max(document.documentElement.clientHeight, document.body.clientHeight) +
Math.max(document.documentElement.scrollTop, document.body.scrollTop);
w = Math.max(document.documentElement.scrollWidth, w);
h = Math.max(document.documentElement.scrollHeight, h);
return {
"w": w,
"h": h
};
}
var _sv_w = getViewSize()["w"];
var _sf_w = getFullSize()["w"];
var _w = _sv_w;//这里用视口的宽度,具体视情况
var Imgarray = document.getElementsByTagName("img");
var realWidth;//真实的宽度
var realHeight;//真实的高度
for(var i =0;i<Imgarray.length;i++){
var imgtemp = new Image();//创建一个image对象
imgtemp.src = Imgarray[i].src;
imgtemp.index = i;//指定一个检索值,用于确定是哪张图
imgtemp.onload = function(){//图片加载完成后执行
var _stemp = this;//将当前指针复制给新的变量,不然会导致变量共用
realWidth = this.width;
realHeight = this.height;
if(realWidth >=_w )
{
Imgarray[_stemp.index].style.width = _w+'px';
Imgarray[_stemp.index].style.height = 'auto';
}
else{
Imgarray[_stemp.index].style.width = realWidth+'px';
Imgarray[_stemp.index].style.height = realHeight+'px';
}
}
}
}

上面两种方法中jquery比较简单,实现起来比较快,第二种比较复杂些,但是执行起来比jquery要快!

Javascript 相关文章推荐
Javascript解决常见浏览器兼容问题的12种方法
Jan 04 Javascript
JS中怎样判断undefined(比较不错的方法)
Mar 27 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
Dec 31 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
Node.js测试中的Mock文件系统详解
Nov 21 Javascript
Bootstrap禁用响应式布局的实现方法
Mar 09 Javascript
JavaScript反射与依赖注入实例详解
May 29 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
JavaScript Canvas实现验证码
Aug 02 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
May 08 Javascript
微信小程序封装多张图片上传api代码实例
Dec 30 Javascript
如何使JavaScript休眠或等待
Apr 27 Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 #Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 #Javascript
js propertychange和oninput事件
Sep 28 #Javascript
javascript检测是否联网的实现代码
Sep 28 #Javascript
javascript检测浏览器的缩放状态实现代码
Sep 28 #Javascript
Node.js中使用mongoskin操作mongoDB实例
Sep 28 #Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 #Javascript
You might like
php学习之运算符相关概念
2011/06/09 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
php实现的ping端口函数实例
2014/11/12 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python实现简单HTML表格解析的方法
2015/06/15 Python
python操作redis的方法
2015/07/07 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
物业管理毕业生的自我评价
2014/02/17 职场文书
企业后勤岗位职责
2014/02/28 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
建筑安全责任书范本
2014/07/24 职场文书
2015个人半年总结范文
2015/03/09 职场文书
毕业感言怎么写
2015/07/31 职场文书
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle