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对象数据缓存Cache原理以及jQuery.data详解
Apr 07 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
实例浅析js的this
Dec 11 Javascript
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
Aug 24 Javascript
vue实现计步器功能
Nov 01 Javascript
JavaScript鼠标悬停事件用法解析
May 15 Javascript
JavaScript缓动动画函数的封装方法
Nov 25 Javascript
vue中 this.$set的使用详解
Nov 17 Vue.js
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编程中字符串处理的5个技巧小结
2007/11/13 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
php获取系统变量方法小结
2015/05/29 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
js null,undefined,字符串小结
2010/08/21 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
Java中实现多态的机制
2015/08/09 面试题
安全生产投入制度
2014/01/29 职场文书
加油口号大全
2014/06/13 职场文书
毕业大学生自荐信
2014/06/17 职场文书
雷人标语集锦
2014/06/19 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL