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 相关文章推荐
JavaScipt基本教程之前言
Jan 16 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
jQuery实用函数用法总结
Aug 29 Javascript
JavaScript实现拖拽网页内元素的方法
Apr 15 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
Jan 26 Javascript
谈一谈javascript闭包
Jan 28 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
Apr 07 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
Mar 21 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 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删除左端与右端空格的方法
2014/11/29 PHP
ThinkPHP模型详解
2015/07/27 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python连接DB2数据库
2016/08/27 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
化工专业推荐信范文
2013/11/28 职场文书
实习生个人的自我评价
2013/12/08 职场文书
服务理念标语
2014/06/18 职场文书
学习教师法的心得体会
2014/09/03 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
治庸问责工作总结
2015/08/11 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
作文之亲情600字
2019/09/23 职场文书
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL