您现在的位置: 万盛学电脑网 >> 程序编程 >> 脚本专题 >> javascript >> 正文

JS实现等比例缩放图片

作者:佚名    责任编辑:admin    更新时间:2022-06-22

  有时候我们前端页面只有500×500像素的宽和高的布局,但是后台返回的数据图片是1000×1000,那么这种情况下 如果我直接返回的话 那么图片肯定有一部分没有显示出来,在这种情况下我是想能不能在我们前端开发实现图片等比例缩放。比如如下HTML代码:

  <div id="demo1">      <img src=http://www.2cto.com/uploadfile/2014/0120/20140120084827179.jpg" alt="">  </div>  CSS代码如下:   #demo1{width:800px;height:300px;overflow:hidden;} 外层div的css样式定了宽度是800像素 高度是300像素,但是这张图片的宽度和高度分别是1060像素和300像素,如果我们不做任何处理的话,那么图片肯定会有260像素被隐藏掉了,而我们现在想要图片被渲染出来后 根据外层容器800像素×300像素的宽度和高度分别等比例缩放,这样的话 不管图片的宽度和高度是多少,都可以自适应!   下面我们可以先看看JSFIddle效果是什么样的!第一张图片是没有任何处理的,第2张小的是根据宽度800像素进行等比例缩放后的。   想要看效果,请轻轻点击我!   已知图片的宽度和高度的等比例缩放的原理是:     HTML代码如下:   <img src=http://www.2cto.com/uploadfile/2014/0120/20140120084827179.jpg" width="1060" height="300" alt="">  <div id="demo1">      <img src=http://www.2cto.com/uploadfile/2014/0120/20140120084827179.jpg" alt="">  </div> CSS代码如下:   #demo1{width:800px;height:300px;overflow:hidden;} JS代码如下:     /**  * 已知图片的宽度和高度的等比例缩放  */    function knowImgSize(id) {     var idWidth = $(id).width(),  // 容器的宽度和高度         idHeight = $(id).height();       $(id + ' img').each(function(index,img){         var img_w = $(this).width(),             img_h = $(this).height();           // 如果图片自身宽度大于容器的宽度的话 那么高度等比例缩放         if(img_w > idWidth) {                          var height = img_h * idWidth / img_w;             $(this).css({"width":idWidth, "height":height});         }     });    }    // 初始化  $(function(){     knowImgSize("#demo1");  });