jQuery实现等比例缩放大图片让大图片自适应页面布局


Posted in Javascript onOctober 16, 2013

在布局页面时,有时会遇到大图片将页面容器“撑破”的情况,尤其是加载外链图片(通常是通过采集的外站的图片)。那么本文将为您讲述使用jQuery如何按比例缩放大图片,让大图片自适应页面布局。

通常我们处理缩略图是使用后台代码(PHP、.net、Java等)根据大图片生成一定尺寸的缩略图,来供前台页面调用,当然也有使用前台javascript脚本将加载后的大图强行缩放,变成所谓的缩略图,这种方法不可取。但是,针对网站内容页,如本站文章详情页,如果需要加载一张很大的图片时,为了防止“撑破”布局,我们使用jQuery来等比例缩放图片。我们分两种情况来讲述:

1.已知图片尺寸

<div id="demo1"> 
<img src="a.jpg" width="800" height="300" alt="图片"> 
</div>

当页面加载的图片中含有属性width和height值,则可以使用几句简单的jQuery代码实现等比例缩放。
$(function(){ 
var w = $("#demo1").width();//容器宽度 
$("#demo1 img").each(function(){//如果有很多图片,我们可以使用each()遍历 
var img_w = $(this).width();//图片宽度 
var img_h = $(this).height();//图片高度 
if(img_w>w){//如果图片宽度超出容器宽度--要撑破了 
var height = (w*img_h)/img_w; //高度等比缩放 
$(this).css({"width":w,"height":height});//设置缩放后的宽度和高度 
} 
}); 
});

2.未知图片尺寸

当页面加载的图片尺寸未知的情况下,上述代码则不能进行有效的缩放,这种情况多出现在采集的外部链接图片。

<div id="demo2"> 
<img src="a.jpg" alt="图片"> 
</div>

所幸的是,有好心朋友已经写出来专门的插件来处理,而且跨浏览器,解决了前端朋友们的一大难题。

下面隆重介绍下autoIMG。

autoIMG可以快速对文章图片进行尺寸自适应,它利用浏览器获取图片文件头尺寸数据,无需等待图片加载完成。

autoIMG兼容:Chrome | Firefox | Sifari | Opera | IE6 | IE7 | IE8 | ...

调用autoIMG插件方法相当简单:

$(function(){ 
$("#demo2").autoIMG(); 
});

autoIMG实例下载
Javascript 相关文章推荐
De facto standard 世界上不可思议的事实标准
Aug 29 Javascript
js实现回放拖拽轨迹从过程上进行分析
Jun 26 Javascript
Node.js安装教程和NPM包管理器使用详解
Aug 16 Javascript
JavaScript中具名函数的多种调用方式总结
Nov 08 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
Nov 11 Javascript
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
代码详解JS操作剪贴板
Feb 11 Javascript
javascript、php关键字搜索函数的使用方法
May 29 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
使用express来代理服务的方法
Jun 21 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
Sep 26 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
限制textbox或textarea输入字符长度的JS代码
Oct 16 #Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 #Javascript
纯Javascript实现Windows 8 Metro风格实现
Oct 15 #Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 #Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 #Javascript
高效的获取当前元素是父元素的第几个子元素
Oct 15 #Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 #Javascript
You might like
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
浅谈php和.net的区别
2014/09/28 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
简单了解python的一些位运算技巧
2019/07/13 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
工作交流会欢迎词
2014/01/12 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
购房意向书范本
2014/04/01 职场文书
政府四风问题整改措施
2014/10/04 职场文书
付款承诺函范文
2015/01/21 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python