基于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 相关文章推荐
Javascript 定时器调用传递参数的方法
Nov 12 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
自动最大化窗口的Javascript代码
May 22 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
BootStrap selectpicker后台动态绑定数据的方法
Jul 28 Javascript
Three.js中网格对象MESH的属性与方法详解
Sep 27 Javascript
js实现Tab选项卡切换效果
Jul 17 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
React传值 组件传值 之间的关系详解
Aug 26 Javascript
React-redux实现小案例(todolist)的过程
Sep 29 Javascript
使用原生javascript开发计算器实例代码
Feb 21 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 Hex RGB颜色值互换的使用
2013/05/10 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
nodejs基础知识
2017/02/03 NodeJs
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
从零学Python之入门(四)运算
2014/05/27 Python
python复制与引用用法分析
2015/04/08 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
python算法题 链表反转详解
2019/07/02 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
ubuntu上安装python的实例方法
2019/09/30 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
tensorflow 环境变量设置方式
2020/02/06 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
运动会演讲稿
2014/05/07 职场文书
委托书的写法
2014/09/16 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
美术教师个人总结
2015/02/06 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js