JS网页图片按比例自适应缩放实现方法

 更新时间:2014年01月15日 14:32:58   作者:  
这篇文章主要介绍了JS网页图片按比例自适应缩放实现方法,有需要的朋友可以参考一下

用户上传照片,照片的尺寸未知;需要生成一个预览,这个预览图要根据提供给用户预览的区域自应用,并且居中;如果图片太大,需要按比例缩放。如下图。

瞄了一下,居中可以用 text-align:center; 来实现。而按比例缩放,利用预设 <img /> 的 width 、height 属性解决不了。因为用户图片可能是很长的,也可能是很宽的。在线上想了一下他们的关系,按条件来判断是这样的:

if(实际宽度 > 预览最大宽度) {
    缩放宽度 = 预览最大宽度
}

if(实际高度 > 预览最大高度) {
    缩放高度 = 预览最大高度
}
但是这样会有问题,比如当宽度和高度都被缩放,如果缩放比较不同,图片就不是按比例缩放,会变得非常丑。为了让它按比例缩放,就需要做各种判断了。那这样就违背了我们希望程序自动化的原则了。再想想,虽然不喜欢数学,但数学还是很好用的,应该有其他办法。而既然是按比例缩放,何不用实际图像和预览区域宽度作的比例来计算他们关系?hmmmm… 果然 OK。实际上我们永远都只需要缩放宽度或高度中的其中一个。因为比例只有大和小种情况。具体的,写一个函数来实现它吧:

复制代码 代码如下:

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

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

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

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

相关文章

  • JavaScript控制Session操作方法

    JavaScript控制Session操作方法

    JavaScript代表客户端,而Session代表的是服务器(不知道这样说大家是否能够理解)接下来介绍JavaScript如何控制Session,感兴趣的朋友可以了解下啊
    2013-01-01
  • 前端无感知刷新token以及超时自动退出实现方案

    前端无感知刷新token以及超时自动退出实现方案

    前端需要做到无感刷新token,即刷token时要做到用户无感知,避免频繁登录,下面这篇文章主要给大家介绍了关于前端无感知刷新token以及超时自动退出的实现方案,需要的朋友可以参考下
    2024-01-01
  • 浅析Bootstrap组件之面板组件

    浅析Bootstrap组件之面板组件

    这篇文章主要介绍了浅析Bootstrap组件之面板组件 的相关资料,需要的朋友可以参考下
    2016-05-05
  • 使用JS来动态操作css的几种方法

    使用JS来动态操作css的几种方法

    这篇文章主要介绍了使用JS来动态操作css的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • JavaScript获取表单内所有元素值的方法

    JavaScript获取表单内所有元素值的方法

    这篇文章主要介绍了JavaScript获取表单内所有元素值的方法,实例分析了javascript操作表单元素的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • IE无法设置短域名下Cookie

    IE无法设置短域名下Cookie

    最近客户在使用我们的流量监测系统以及GA时发现了一个问题,我们统计到的数据比GA的要多很多倍,而且我们统计到的数据中,跳出率非常高,高达99%左右。
    2010-09-09
  • javascript实现2016新年版日历

    javascript实现2016新年版日历

    这篇文章主要为大家介绍了javascript实现2016新年版日历的详细代码,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • js实现简单的获取验证码按钮效果

    js实现简单的获取验证码按钮效果

    本文主要介绍了js实现简单的获取验证码按钮加效果的实例,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • js实现感应鼠标图片透明度变化的方法

    js实现感应鼠标图片透明度变化的方法

    这篇文章主要介绍了js实现感应鼠标图片透明度变化的方法,涉及javascript鼠标操作及css修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Javascript条件判断使用小技巧总结

    Javascript条件判断使用小技巧总结

    我们已经知道,null 没有任何的属性值,并且无法获取其实体(existence)值。所以 null.property 返回的是错误(error)而不是 undefined 。
    2008-09-09

最新评论