当前位置: 首页 > news >正文

jQuery插件——图片按比例自适应缩放

我只是参照 @sofish 的 关于图片按比例自适应缩放 一文中的 代码 与 原理 写成了 这个 jQuery插件,木有神马技术含量的说、

插件代码如下:

/**
* 图片按比例自适应缩放
* @param maxWidth {Number} 预览区域的最大宽度
* @param maxHeight {Number} 预览区域的最大高度
*/

$.fn.resizeImg = function(maxWidth, maxHeight) {
var w = $.width,
h = $.height;

// 当图片比预览区域小时不做任何改变
if (w < maxWidth && h < maxHeight) return;

// 当实际图片比例大于预览区域宽高比例时
// 缩放图片宽度,反之缩放图片宽度
w/h > maxWidth/maxHeight  ? $.width = maxWidth : $.height = maxHeight;
}

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: <![ jQuery插件——图片按比例自适应缩放 ]]>

 

=.= 这代码基本是 直接 Copy @sofish 的、、掩面~

说一下 如何调用吧、、就按照下面写的代码调用吧,别忘了要先载入 jQuery库、

// 对 class="post-content" 下的所有 img 元素,进行 最大宽度为 500,最大高度为 700 的 自适应按比例缩放、(关键是 缩放、恩!
$( '.post-content img' ). resizeImg( 500 , 700);

最后,为了让这函数能够在网页文档加载好(忽视图片的加载、、)的时候,立马执行,还必须加上 $(document).ready 这个预载代码、

所以,完整的代码如下所示:

$( document ). ready( function (){ //获取文档对象就绪的时候,不需要等待图片等下载完成

/**
* 图片按比例自适应缩放
* @param maxWidth {Number} 预览区域的最大宽度
* @param maxHeight {Number} 预览区域的最大高度
*/
$.fn.resizeImg = function(maxWidth, maxHeight) {
var w = $.width,
h = $.height;

// 当图片比预览区域小时不做任何改变
if (w < maxWidth && h < maxHeight) return;

// 当实际图片比例大于预览区域宽高比例时
// 缩放图片宽度,反之缩放图片宽度
w/h > maxWidth/maxHeight  ? $.width = maxWidth : $.height = maxHeight;
}

$('.post-content img').resizeImg(500, 700);
})

2011/02/19 更新(感谢 @sofish 提醒),使用了 each(),并且重新写了判断条件、

P.S. 调用方法不变、

$ . fn . resizeImg = function( maxWidth , maxHeight) {
// 采取 each() 对单个对象分别进行缩放
$( this ). each( function() {
var w = $( this ). width (),
h = $( this ). height();

// 当图片比预览区域小时不做任何改变
if (w < maxWidth && h < maxHeight) {
return;
} else if (w/h > maxWidth/maxHeight) { // 当实际图片比例大于预览区域宽高比例时

// 缩放图片宽度
$(this).width(maxWidth);
$(this).height((maxWidth*h)/w);
} else {

// 反之缩放图片宽度
$(this).height(maxHeight);
$(this).width((maxHeight*w)/h);
}
})
}

2011/02/21 更新 (感谢 @leeiio),采用 return this.each(function(){.....}); 形式、

P.S. 调用方法依旧不变、、

$ . fn . resizeImg = function( maxWidth , maxHeight) {
return this . each( function() {
var w = $( this ). width (),
h = $( this ). height();
if ( w < maxWidth && h < maxHeight) {
return;
} else if ( w / h > maxWidth / maxHeight) {
$( this ). width( maxWidth);
$( this ). height(( maxWidth * h) / w);
} else {
$( this ). height( maxHeight);
$( this ). width(( maxHeight * w) / h);
}
});
};

转载于:https://www.cnblogs.com/ginowang42/archive/2011/04/18/2019715.html

相关文章:

  • Highcharts:高交互性的javascript图表类库
  • ASP.NET中文乱码的三个解决方案
  • 一招一式攻克linux(二)
  • 知识点 - Attribute在.net编程中的应用
  • Quartz2.1.5学习(一)
  • yahoo排名策略
  • 软件架构
  • 使用Scom监控Linux主机
  • javaScript中with含义与用法
  • lvy打包到本地
  • 具有键“Shape”的 ViewData 项属于类型“System.String”,但它必须属于类型“IEnumerableSelectListItem”。...
  • 对于Linux操作系统进行合理分区建议
  • 格式化字符串
  • SQL Server2008存储结构之非聚集索引
  • 显示接口成员
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • CSS 专业技巧
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • k个最大的数及变种小结
  • laravel with 查询列表限制条数
  • leetcode386. Lexicographical Numbers
  • mongodb--安装和初步使用教程
  • nodejs调试方法
  • php中curl和soap方式请求服务超时问题
  • Python_网络编程
  • spring boot 整合mybatis 无法输出sql的问题
  • spring boot下thymeleaf全局静态变量配置
  • tweak 支持第三方库
  • - 概述 - 《设计模式(极简c++版)》
  • ​【已解决】npm install​卡主不动的情况
  • ###C语言程序设计-----C语言学习(6)#
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (NSDate) 时间 (time )比较
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)php投票系统 毕业设计 121500
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (学习日记)2024.01.19
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转) Android中ViewStub组件使用
  • (转)用.Net的File控件上传文件的解决方案
  • .Mobi域名介绍
  • .NET 8.0 发布到 IIS
  • .NET CLR Hosting 简介
  • .NET 使用配置文件
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .net6 webapi log4net完整配置使用流程
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @Bean有哪些属性
  • @我的前任是个极品 微博分析
  • [20171113]修改表结构删除列相关问题4.txt
  • [2021 蓝帽杯] One Pointer PHP
  • [Android学习笔记]ScrollView的使用