图片缩放JavaScript原生实现
function scalImg(aLi){
for(var i=0,l=aLi.length;i<l;i++){
var oImg = new Image(),
oLi = aLi[i],
imgEle = oLi.children[0];
oLi.style.width = winW+'px';
oImg.src = imgEle.src;
imgEle.style.width = 'auto';
imgEle.style.height = 'auto';
/*初始化图片尺寸,相对屏幕水平垂直居中处理;以最大边为基准等比例缩放*/
(function(img){
oImg.onload = function(){
var imgW = this.width,
imgH = this.height,
rate = imgW/imgH,
winRate = winW/winH,
w = 0,
h = 0;
if(rate>1){ /*图片宽度大于图片高度*/
w=Math.min(imgW,winW);
h = w/rate;
if(h>winH){ /*缩放后高度大于屏幕高度*/
img.style.height = winH +'px';
}else{
img.style.width = w+'px';
}
}else{
h = Math.min(imgH,winH);
w = h*rate;
if(w>winW){ /*缩放后宽度大于屏幕宽度*/
img.style.width = winW +'px';
}else{
img.style.height = h+'px';
}
}
}
})(imgEle);
}
}
缩放比例的大致方法是
1、new一个img对象,
2、添加img src属性
3、在img的load函数中判断其宽高比例;
判断:若宽度大于高度 此时选择 一个图片宽度;从页面宽度和图片本身宽度中选择较小的宽度作为图片计算宽度;
然后根据比例算出图片高度,
此时又得判断若图片高度大于页面高度,图片最终按照高度缩放,高度等于页面高度;
反之按照图片宽度缩放页面;
若宽度小于高度;
在图片高度和页面高度间选择一个一个较小的值作为计算高度,按比例计算出图片宽度。
若图片宽度大于页面宽度,图片按宽度缩放,宽度等于页面宽度;
反之图片按高度缩放,高度等于计算高度;
图片缩放JavaScript原生实现的更多相关文章
- 据说每个大牛、小牛都应该有自己的库——JavaScript原生对象拓展
在据说每个大牛.小牛都应该有自己的库——框架篇中我扬言要做个小牛,没想到一天没更新,小伙儿伴们就戏谑的问我,油哥是不是要太监了?其实事情是这个样子的,这不是太监的节奏,一是,关于写个自己的库的想法由来 ...
- JavaScript原生对象拓展
JavaScript原生对象拓展 在据说每个大牛.小牛都应该有自己的库——框架篇中我扬言要做个小牛,没想到一天没更新,小伙儿伴们就戏谑的问我,油哥是不是要太监了?其实事情是这个样子的,这不是太监的节奏 ...
- jQuery? 回归JavaScript原生API
如今技术日新月异,各类框架库也是层次不穷.即便当年漫山红遍的JQuery(让开发者write less, do more,So Perfect!!)如今也有被替代的大势.但JS原生API写法依旧:并且 ...
- CSS实现图片缩放特效
今天是感恩节,祝大家感恩节快乐哦!最近天冷了,大家注意保暖哟.下面一起看看小颖写的demo吧. html代码: <!DOCTYPE html> <html> <head& ...
- HTML5 图片缩放功能
腾讯新闻上用的插件(xw.qq.com) 缩放插件scale.js (function(window, undefined) { var document = window.document, sup ...
- PHP图片裁剪_图片缩放_PHP生成缩略图
在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...
- UISlider显示进度(并且实现图片缩放)
图片展示效果如下: 其他没什么好说的,直接上代码: RootView.h: #import <UIKit/UIKit.h> @interface RootView : UIView @pr ...
- JavaScript原生折叠扩展收缩菜单带缓冲动画
JavaScript原生折叠扩展收缩菜单带缓冲动画 @落雨 <div id="div_two" style="display: none;"> &l ...
随机推荐
- 关于KeyEvent.Callback
keycode------------>KEYCODE_BACK,KEYCODE_MENU event.getAction------->ACTION_DOWN,ACTION_UP,ACT ...
- Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具
Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大 ...
- StrPCopy与StrPas功能正好相反,作用是与C语言字符串和Delphi的String相互转化
StrPCopy = Copies an AnsiString (long string) to a null-terminated string.function StrPCopy(Dest: PA ...
- C#调用C++DLL传递结构体数组的终极解决方案
在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了.但是当传递的是结构体.结构体数组或者结构体指针的时候,就会发现C#上没有类型 ...
- zookeeper数据弱一致性
zookeeper本身支持单机部署和集群部署,生产环境建议使用集群部署,因为集群部署不存在单点故障问题,并且zookeeper建议部署的节点个数为奇数个,只有超过一半的机器不可用整个zk集群才不可用. ...
- vim改变多窗口的大小
摘自:http://blog.163.com/lgh_2002/blog/static/44017526201031671927647/ vim改变多窗口的大小 VIM改变窗口大小 *window-r ...
- Exchange Cards(dfs)
Exchange Cards Time Limit: 2 Seconds Memory Limit: 65536 KB As a basketball fan, Mike is also f ...
- linux命令学习笔记
操作文件和文件夹: copy: $ cp file1 file2 $ cp -r dir1 dir2 move: $ mv file .. $ mv file dir/ rename: $ mv fi ...
- scrapy-redis实现爬虫分布式爬取分析与实现
本文链接:http://blog.csdn.net/u012150179/article/details/38091411 一 scrapy-redis实现分布式爬取分析 所谓的scrapy-redi ...
- "margin塌陷现象"div盒子嵌套盒子外边距合并现象
问题描述:原型大概是“一个div嵌套了两个 div,给main设定了background="pink" ,header1设定background=“red” .header2 设定 ...