基于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获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
Jan 11 Javascript
JQuery判断子iframe何时加载完成解决方案
Aug 20 Javascript
javascript调试过程中找不到哪里出错的可能原因
Dec 16 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
javascript简易画板开发
Apr 12 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
Jul 10 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
JS 创建对象的模式实例小结
Apr 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中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
php的sso单点登录实现方法
2015/01/08 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
python获取一组汉字拼音首字母的方法
2015/07/01 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
台湾专柜女包:KINAZ
2019/12/26 全球购物
演讲稿开场白
2014/01/13 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js