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 相关文章推荐
基于JQuery的简单实现折叠菜单代码
Sep 15 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
Mar 01 Javascript
13 个JavaScript 性能提升技巧分享
Jul 26 Javascript
探讨js中的双感叹号判断
Nov 11 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
Jun 20 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 Javascript
jQuery事件处理的特征(事件命名机制)
Aug 23 Javascript
jQuery实现动态添加tr到table的方法
Dec 26 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 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里的JS打印函数
2006/10/09 PHP
初识Laravel
2014/10/30 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python简单操作excle的方法
2018/09/12 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
机电专业毕业生推荐信
2013/11/10 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
部队万能检讨书
2014/02/20 职场文书
餐饮营销方案
2014/02/23 职场文书
2014年督导工作总结
2014/11/19 职场文书
客户答谢会致辞
2015/07/30 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android