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版代码高亮
Jun 26 Javascript
firefox下frameset取不到值的解决方法
Sep 06 Javascript
Javascript 静态页面实现随机显示广告的办法
Nov 17 Javascript
我的Node.js学习之路(二)NPM模块管理
Jul 06 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
浅谈javascript中this在事件中的应用
Feb 15 Javascript
json格式的javascript对象用法分析
Jul 04 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
JS switch判断 三目运算 while 及 属性操作代码
Sep 03 Javascript
详解使用jQuery.i18n.properties实现js国际化
May 04 jQuery
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
Aug 19 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
给多个地址发邮件的类
2006/10/09 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
vue-star评星组件开发实例
2018/03/01 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
玩转python爬虫之正则表达式
2016/02/17 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
期中考试复习计划
2015/01/19 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫