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 相关文章推荐
js判断输入是否为正整数、浮点数等数字的函数代码
Nov 17 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
js对文章内容进行分页示例代码
Mar 05 Javascript
使用js复制链接中的部分文字的方法
Jul 30 Javascript
基于AngularJS+HTML+Groovy实现登录功能
Feb 17 Javascript
AngularJS之页面跳转Route实例代码
Mar 10 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
Dec 31 Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 Javascript
在vue中使用eslint,配合vscode的操作
Nov 09 Javascript
Vue + ts实现轮播插件的示例
Nov 10 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
牡丹941资料
2021/03/01 无线电
PHP4与PHP5的时间格式问题
2008/02/17 PHP
smarty中js的调用方法示例
2014/10/27 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
django中静态文件配置static的方法
2018/05/20 Python
Django如何实现上传图片功能
2019/08/16 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
函授本科自我鉴定
2013/11/03 职场文书
商场中秋节活动方案
2014/02/07 职场文书
档案室主任岗位职责
2014/02/12 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
材料员岗位职责
2015/02/10 职场文书
教师个人总结范文
2015/02/11 职场文书
债务纠纷代理词
2015/05/25 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
Sql Server之数据类型详解
2022/02/28 SQL Server