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的eval JSON object问题
Nov 15 Javascript
在Javascript里访问SharePoint列表数据的实现方法
May 22 Javascript
怎么选择Javascript框架(Javascript Framework)
Nov 22 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
Jun 21 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
详解Vue2 SSR 缓存 Api 数据
Nov 20 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
微信小程序:数据存储、传值、取值详解
May 07 Javascript
jQuery带控制按钮轮播图插件
Jul 31 jQuery
一个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编程最快明白》第三讲:php数组
2010/11/01 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
JavaScript对象字面量和构造函数原理与用法详解
2020/04/18 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
django连接mysql配置方法总结(推荐)
2018/08/18 Python
pytorch forward两个参数实例
2020/01/17 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
夜班门卫岗位职责
2013/12/09 职场文书
考试退步检讨书
2014/01/15 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
美术教师个人工作总结
2015/02/06 职场文书
创建文明城市倡议书
2015/04/28 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python
MySql数据库 查询时间序列间隔
2022/05/11 MySQL
Nginx利用Logrotate实现日志分割
2022/05/20 Servers