基于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 相关文章推荐
slice函数的用法 之不错的应用
Dec 29 Javascript
js资料prototype 属性
Mar 13 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
Jun 10 Javascript
pace.js页面加载进度条插件
Sep 29 Javascript
JS面向对象编程详解
Mar 06 Javascript
Angular和百度地图的结合实例代码
Oct 19 Javascript
JS中作用域和变量提升(hoisting)的深入理解
Oct 31 Javascript
jQuery实现获取隐藏div高度的方法示例
Feb 09 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
Aug 31 Javascript
每天学点Vue源码之vm.$mount挂载函数
Mar 11 Javascript
浅析Vue下的components模板使用及应用
Nov 27 Javascript
解决vant title-active-color与title-inactive-color不生效问题
Nov 03 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网站基础优化方法小结
2008/09/29 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP单链表的实现代码
2016/07/05 PHP
javascript实用方法总结
2015/02/06 Javascript
js实现网页收藏功能
2015/12/17 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
python 实现堆排序算法代码
2012/06/05 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
大专应届生个人的自我评价
2013/11/21 职场文书
教师职位说明书
2014/07/29 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
法学专业求职信范文
2015/03/19 职场文书
阿凡达观后感
2015/06/10 职场文书
舞出我人生观后感
2015/06/16 职场文书
初中团支书竞选稿
2015/11/21 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js