基于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 相关文章推荐
表单JS弹出填写提示效果代码
Apr 16 Javascript
javascript数据结构之二叉搜索树实现方法
Nov 25 Javascript
快速使用Bootstrap搭建传送带
May 06 Javascript
AngularJS表格详解及示例代码
Aug 17 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
Jun 29 Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
2种在vue项目中使用百度地图的简单方法
Sep 28 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
vue router 传参获取不到的解决方式
Nov 13 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 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中heredoc的使用方法
2013/06/17 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
前端vue如何使用高德地图
2020/11/05 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
python 获取图片分辨率的方法
2019/01/08 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
Django重设Admin密码过程解析
2020/02/10 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
优质服务口号
2014/06/11 职场文书
信用卡工作证明模板
2014/09/14 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
会计专业求职信范文
2015/03/19 职场文书
网聊搭讪开场白
2015/05/28 职场文书
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers