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 相关文章推荐
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 Javascript
js onload处理html页面加载之后的事件
Oct 30 Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 Javascript
AngularJS ng-repeat数组有重复值的解决方法
Oct 23 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 Javascript
如何使用Bootstrap创建表单
Mar 29 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
May 11 Javascript
Vue.js 实现数据展示全部和收起功能
Sep 05 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
React Native中Mobx的使用方法详解
Dec 04 Javascript
Vue 列表上下过渡效果的实例代码
Jun 25 Javascript
vue设置动态请求地址的例子
Nov 01 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实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
python 数据加密代码
2008/12/24 Python
python查找目录下指定扩展名的文件实例
2015/04/01 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
python框架中flask知识点总结
2018/08/17 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
pytorch方法测试——激活函数(ReLU)详解
2020/01/15 Python
Django在Model保存前记录日志实例
2020/05/14 Python
如何对python的字典进行排序
2020/06/19 Python
Python进行统计建模
2020/08/10 Python
2014国培学习感言
2014/03/05 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
优化Mysql查询的示例
2022/04/26 MySQL
Python实现信息管理系统
2022/06/05 Python