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 无废话系列教程(一) jquery入门 [推荐]
Jun 23 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
Nov 17 Javascript
javascript实现仿IE顶部的可关闭警告条
May 05 Javascript
javascript实现判断鼠标的状态
Jul 10 Javascript
js钢琴按钮波浪式图片排列效果代码分享
Aug 26 Javascript
Javascript函数式编程语言
Oct 11 Javascript
用原生js做单页应用
Jan 17 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
Node.js操作系统OS模块用法分析
Jan 04 Javascript
angular4+百分比进度显示插件用法示例
May 05 Javascript
jQuery cookie的公共方法封装和使用示例
Jun 01 jQuery
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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
js判断密码强度的方法
2020/03/18 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
Python 通过pip安装Django详细介绍
2017/04/28 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
pycharm快捷键汇总
2020/02/14 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python os库常用操作代码汇总
2020/11/03 Python
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
致跳高运动员广播稿
2014/01/13 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
高中体育课教学反思
2016/02/16 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers