基于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 相关文章推荐
Boostrap入门准备之border box
May 09 Javascript
Javascript的比较汇总
Jul 25 Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 Javascript
Angular 4.x 路由快速入门学习
May 03 Javascript
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 Javascript
vue+elementUi图片上传组件使用详解
Aug 20 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 Javascript
js实现移动端吸顶效果
Jan 08 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
jQuery的三种$()
2009/12/30 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
Python 初始化多维数组代码
2008/09/06 Python
Python里隐藏的“禅”
2014/06/16 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
简约控的天堂:The Undone
2016/12/21 全球购物
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
英语专业职业生涯规划范文
2014/03/05 职场文书
元旦晚会感言
2014/03/12 职场文书
政工例会汇报材料
2014/08/26 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
辞职信范文大全
2015/03/02 职场文书
债务纠纷代理词
2015/05/25 职场文书
傅雷家书读书笔记
2015/06/29 职场文书