Dropify.js图片宽高自适应的方法


Posted in Javascript onNovember 27, 2017

最近发现了一个比较好用的图片上传插件, Dropify.js ,具体使用方法挺简单的,这里就不介绍了。

但是由于我希望图片样式是宽度固定,高度自适应的,而这个插件好像无法自适应高度,只能在固定的区域内显示图片,看的非常不舒服。

Dropify.js图片宽高自适应的方法

看了一下插件的源码,发现可以在预览图片时,调整图片高度。需要修改css和js,下面贴下代码。

<!-- 插件容器 -->
<div class="blog-title-img clear">
  <input type="file" class="dropify" data-max-file-size-preview="3M" data-allowed-file-extensions="jpeg jpg png gif bmp">
</div>

css可以写在自己的css文件中:

/*这个是图片的容器*/
.title-img{ 
  width:660px;
  margin:40px auto 0;
}

/*下面是需要修改的样式*/
.dropify-wrapper .dropify-preview{
  padding:0 !important;
}
.dropify-wrapper .dropify-preview .dropify-render img{
  width:100%;
  height:auto;
  -webkit-transform:none;
  transform:none;
  top:0;
}
.dropify-wrapper{
  border:0;
  background-color:#f7f8f9;
  padding:0!important;
}

下面是js需要修改的部分,打开源码文件,找到Dropify.prototype.setPreview方法

Dropify.prototype.setPreview = function(previewable, src)
{
  this.wrapper.removeClass('has-error').addClass('has-preview');
  this.filenameWrapper.children('.dropify-filename-inner').html(this.file.name);
  var render = this.preview.children('.dropify-render');
  this.hideLoader();
  if (previewable === true) {

    // 存一下wrapper,wrapper.width()是css中自己设置的固定的宽,我设置的是660px
    var wrapper = this.wrapper; 

    // 首次上传时,获取图片真实的宽和高,按比例计算显示时图片的高
    var height = (wrapper.width() / this.file.width) * this.file.height; 

    // 如果初始化时使用默认图片,则file.height不存在,需要用另一种方式获取图片真实的宽和高
    if(!height){
        // 新建一个image,将图片路径赋给新的image
      var i = new Image(), src = Comm.getRoot() + src;
        i.src = src;

        // 这里需要等图片加载完,才能获取到准确的宽和高。
        $(i).load(function(){

          // 计算方式和上面相同
          height = (wrapper.width() / i.width) * i.height;
          wrapper.height(height);
        });
    } else {
      wrapper.height(height);
    }
    
    var imgTag = $('<img />').attr('src', src);
    
    if (this.settings.height) {
      imgTag.css("max-height", this.settings.height);
    }
    imgTag.appendTo(render);
  } else {
    $('<i />').attr('class', 'dropify-font-file').appendTo(render);
    $('<span class="dropify-extension" />').html(this.getFileType()).appendTo(render);
  }
  this.preview.fadeIn();
};

改造完成后,不管上传还是默认图片,都可以宽度固定,高度自适应了。改造完成后效果:

Dropify.js图片宽高自适应的方法

改造完成

Dropify.js图片宽高自适应的方法

改造完成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 的addEventListener()及attachEvent()区别分析
May 21 Javascript
IE6弹出“已终止操作”的解决办法
Nov 27 Javascript
Bootstrap 实现查询的完美方法
Oct 26 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
Vue实现导航栏的显示开关控制
Nov 01 Javascript
JavaScript实现tab栏切换效果
Mar 16 Javascript
浅析JavaScript 函数防抖和节流
Jul 13 Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 Javascript
jfinal与bootstrap的登出实战详解
Nov 27 #Javascript
JQuery 又谈ajax局部刷新
Nov 27 #jQuery
Bootstrap实现翻页效果
Nov 27 #Javascript
jQuery Datatables表头不对齐的解决办法
Nov 27 #jQuery
JS使用贪心算法解决找零问题示例
Nov 27 #Javascript
Vue.js实现分页查询功能
Nov 15 #Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 #Javascript
You might like
PHP脚本中include文件出错解决方法
2008/11/20 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
Python的subprocess模块总结
2014/11/07 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
python3.4中清屏的处理方法
2020/07/06 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
《果园机器人》教学反思
2014/04/13 职场文书
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript