基于jQuery的图片不完全按比例自动缩小


Posted in Javascript onJuly 11, 2014

举例来说

第一种情况:如图片大小为 600×350,显示区域大小为 200×140,如果图片根据目标宽度(200)按比例缩放后大小变成 116,那么显示在 200×140 就会很难看。如下图左

第二种情况:刚好相反,如图片大小为400×400,显示区域同样是200×140,如果图片根据目标高度(140)按比例缩放后大小变成 140,即 140×140,同样难看。如下图右

 基于jQuery的图片不完全按比例自动缩小  基于jQuery的图片不完全按比例自动缩小

这时用 jQuery 获取图片大小再判断处理一下就稍微好点:如第一种情况按140高度算出宽度 140×600/350=240,然后图片按240×140显示,多余部分用 css 的 overflow:hidden 隐藏。

下面是我的处理方法:(注意 - 这里所说的是原图片宽高都大于目标显示框大小的情况下——所以才叫缩小)

Demo 》这里

Html 部分

假如显示区域的 class 为 thumbnail

<div id="content">

 <div class="thumbnail"><img src="" alt="" /></div>

</div>

css 部分

.thumbnail{overflow:hidden;width:200px;height:140px;}

jQuery 部分

1. 当然是先挂 jQuery 库了,怎样挂自行Google、百度
2. 核心代码

jQuery(document).ready(function(){
/* 图片不完全按比例自动缩小 by zwwooooo */
  $(window).load(function(){
	$('#content div.thumbnail img').each(function(){
		var x = 200; //填入目标图片宽度
		var y = 140; //填入目标图片高度
		var w=$(this).width(), h=$(this).height();//获取图片宽度、高度
		if (w > x) { //图片宽度大于目标宽度时
			var w_original=w, h_original=h;
			h = h * (x / w); //根据目标宽度按比例算出高度
			w = x; //宽度等于预定宽度
			if (h < y) { //如果按比例缩小后的高度小于预定高度时
				w = w_original * (y / h_original); //按目标高度重新计算宽度
				h = y; //高度等于预定高度
			}
		}
		$(this).attr({width:w,height:h});
	});
  });
});

适用场所:固定大小的图片显示区域,如缩略图。

折腾完。

下面推荐个内容页面中常用图片大小控制代码:

<script type="text/javascript">
$(window).load(function() {  
  $(".cont img").each( function() {
 var maxwidth = 800;
 if ($(this).width() > maxwidth) {
  $(this).width(maxwidth);
 }
}); 
}); 
</script>

代码不用解释,值得注意的是两个地方:

第一:$(window).load(function() { 

声明事件的部分使用$(window).load,不能使用$(document).ready。
我在百度和iteye网站看到有相关的文章,方法都是错误的。根本不起作用。

第二:$(".cont img").each( function()

这里是.each( function() { ....  }),each在这里是对指定的图片集合对象逐一调用下面的方法。

这种方法兼容大部分的浏览器,效果也很便捷。

个人感觉这种方法比较顺手,另外,可以拓展为缩略图的控制方法。

Javascript 相关文章推荐
jquery自动完成插件(autocomplete)应用之PHP版
Dec 15 Javascript
在网站上应该用的30个jQuery插件整理
Nov 03 Javascript
JS 实现导航栏悬停效果
Sep 23 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
JavaScript返回网页中锚点数目的方法
Apr 03 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
JS前端笔试题分析
Dec 19 Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 Javascript
javascript实现循环广告条效果
Dec 12 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
trackingjs+websocket+百度人脸识别API实现人脸签到
Nov 26 Javascript
Vue使用zTree插件封装树组件操作示例
Apr 25 Javascript
js动态改变select选择变更option的index值示例
Jul 10 #Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
Jul 10 #Javascript
js确认删除对话框适用于a标签及submit
Jul 10 #Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 #Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
Sep 12 #Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 #Javascript
jQuery获取选中内容及设置元素属性的方法
Jul 09 #Javascript
You might like
php读取der格式证书乱码解决方法
2015/06/22 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
请求时token过期自动刷新token操作
2020/09/11 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
linux下安装easy_install的方法
2013/02/10 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
python分数表示方式和写法
2019/06/26 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Python识别处理照片中的条形码
2020/11/16 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
武汉东之林科技有限公司机试
2013/09/17 面试题
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
尊师重教主题班会
2015/08/14 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
Python实现日志实时监测的示例详解
2022/04/06 Python
详解flex:1什么意思
2022/07/23 HTML / CSS