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作用域链的八点总结
Dec 06 Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
Dec 16 Javascript
js实现tab切换效果实例
Sep 16 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
jQuery实现获取h1-h6标题元素值的方法
Mar 06 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
详解Express笔记之动态渲染HTML(新手入坑)
Dec 13 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
PHP 字符串 小常识
2009/06/05 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
js 操作css实现代码
2009/06/11 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
Python中__init__和__new__的区别详解
2014/07/09 Python
介绍Python中内置的itertools模块
2015/04/29 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
python logging日志模块原理及操作解析
2019/10/12 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
敬老院标语
2014/06/27 职场文书
公司表扬稿范文
2015/05/05 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
HTML基础详解(上)
2021/10/16 HTML / CSS