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 相关文章推荐
使用JavaScript switch case 另类写法
Mar 14 Javascript
jquery 图片上传按比例预览插件集合
May 28 Javascript
js indexOf()定义和用法
Oct 21 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
Nov 15 Javascript
JavaScript Length 属性的总结
Nov 02 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
关于动态执行代码(js的Eval)实例详解
Aug 15 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
Jun 04 Javascript
JS实现元素上下左右移动效果
Oct 18 Javascript
ES6新增的数组知识实例小结
May 23 Javascript
Vue 组件复用多次自定义参数操作
Jul 27 Javascript
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
限制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
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
php实现的顺序线性表示例
2019/05/04 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
js function定义函数的几种不错方法
2014/02/27 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
python中日志logging模块的性能及多进程详解
2017/07/18 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python列表推导式实现代码实例
2020/09/09 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
函授大学生自我鉴定
2014/02/05 职场文书
网络编辑岗位职责
2014/03/18 职场文书
信访工作经验交流材料
2014/05/23 职场文书
反邪教标语
2014/06/23 职场文书
小学语文教研活动总结
2014/07/01 职场文书
党员四风剖析材料
2014/08/27 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang