博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让页面上图片不变形
阅读量:5329 次
发布时间:2019-06-14

本文共 2788 字,大约阅读时间需要 9 分钟。

很多列表图片的原图超过指定大小,然而图片本身高宽比例不是固定的,因此在设置此类情况时最好的处理方式是使用js来固定图片大小并保证图片居中,且让图片不变形。

js代码:

1:  /******************************************************************/
2:  /******将图片居中,在图片外面嵌套一个div不设置任何样式*************/
3:  /******参数:图片最大宽度,图片最大高度,******/
4:  /******调用方法:$('.class').centerImage({MaxWidth:190,MaxHeight:135})*************/
5:  /******************************************************************/
6:  (function ($) {
7:      $.fn.centerImage = function (options) {
8:          var opts = $.extend({}, {
9:              MaxWidth: 190, MaxHeight: 135
10:          }, options);
11:          var img = new Image(); //创建一个Image对象,实现图片的预下载
12:          img.src = $(this).attr('src');
13:          var oldImg = $(this);
14:          if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
15:              SetImageCenter(img, oldImg, opts);
16:              return; // 直接返回,不用再处理onload事件
17:          } else {
18:              img.onload = function () { //图片下载完毕时异步调用callback函数。
19:                  SetImageCenter(img, oldImg, opts); //将回调函数的this替换为Image对象
20:              };
21:          }
22:      }
23:      function SetImageCenter(img, imgold, opts) {
24:          var iwidth = opts.MaxWidth;
25:          var iheight = opts.MaxHeight;
26:          //设置图片的高宽
27:          if (img.width > 0 && img.height > 0) {
28:              if (img.width / img.height >= iwidth / iheight) {
29:                  if (img.width > iwidth) {
30:                      imgold.css({ width: iwidth, height: (img.height * iwidth) / img.width });
31:                  } else {
32:                      imgold.css({ width: img.width, height: img.height });
33:                  }
34:              } else {
35:                  if (img.height > iheight) {
36:                      imgold.css({ width: (img.width * iheight) / img.height, height: iheight });
37:                  } else {
38:                      imgold.css({ width: img.width, height: img.height });
39:                  }
40:              }
41:          }
42:          //设置图片外层div的margin-top和margin-left
43:          var div = imgold.parent(); //获取包含本图片的div
44:          if (imgold.height() < iheight) {
45:              var top = (iheight - imgold.height()) / 2;
46:              div.css('margin-top', top + 'px');
47:          }
48:          if (imgold.width() < iwidth) {
49:              var left = (iwidth - imgold.width()) / 2;
50:              div.css('margin-left', left + 'px');
51:          }
52:      }
53:  })(jQuery);
54:   

需要使用jq1.7.2以上。

调用方式:

1:   $("img[flag=img]").each(function (){
2:                  $(this).centerImage({ MaxWidth: 190, MaxHeight: 135 });
3:              });
如果使用:$("img[flag=img]").centerImage({ MaxWidth: 190, MaxHeight: 135 });会导致页面上的图片变形,但图片整体大小会以用户设置的大小为准。

转载于:https://www.cnblogs.com/maomao999/p/3708506.html

你可能感兴趣的文章
介绍Win7 win8 上Java环境的配置
查看>>
Linux设置环境变量的方法
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>
epoll使用具体解释(精髓)
查看>>
AndroidArchitecture
查看>>
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
大数据学习
查看>>
简单工厂模式
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
Objective-C 【关于导入类(@class 和 #import的区别)】
查看>>
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点击运行按钮进入到运行状态报错Error starting TwinCAT System怎么办 AdsWarning1823怎么办...
查看>>
【转】javascript 中的很多有用的东西
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>
给C#学习者的建议 - CLR Via C# 读后感
查看>>
Recover Binary Search Tree
查看>>