vue-image-crop基于Vue的移动端图片裁剪组件示例


Posted in Javascript onAugust 28, 2018

本文介绍了vue-image-crop基于Vue的移动端图片裁剪组件示例,分享给大家,具体如下:

代码地址:https://github.com/jczzq/vue-image-crop

vue-image-crop

基于Vue的移动端图片裁剪组件

组件使用URL.createObjectURL()等新特性,使用前注意兼容问题。IE >= 10

注意:该组件适用于 PC 端,不推荐手机端使用。

功能预览

vue-image-crop基于Vue的移动端图片裁剪组件示例

vue-image-crop基于Vue的移动端图片裁剪组件示例

快速开始

安装Node >= 8.9.0(推荐LTS = 8.11.0

# 安装 vue-cli 3.x
npm install -g @vue/cli

cd vue-image-crop
npm install
npm run dev

启动开发模式即可定制功能

构建

npm run build

build之后会重新生成lib文件夹

API

props

属性名 类型 默认值 说明
value Object {} 裁剪后的图片对象;必传;可使用v-model绑定
proportion Object { w: 2, h: 1 } 图片宽高比例对象;非必传;用于动态计算宽高比例,所以w和h两个属性没有固定值
quality Number 0.92 清晰度;非必传;HTMLCanvasElement.toDataURL()的第二个参数
hasRemove Boolean false 是否显示移除按钮;非必传;列表中使用时可能会用到
skipCrop Boolean false 是否直接上传;非必传;设置为true的时候图片将不会裁剪直接返回
config Object { size: 1200, isSlice: true, path: null } 配置对象;此对象不传有默认值,若传时对象里的每个属性都必须传;size:图片最大宽度(px),isSlice:是否需要裁剪,path:显示图片时的路径,path参数将直接与图片id拼接(path + id)

events

事件名 说明 回调参数
remove 移除按钮被点击时触发 -
change 改变选中图片时触发 event.target.files[0],新文件
submit 图片操作完成时触发 当前裁剪后的图片对象
cancel 图片操作取消时触发 -

示例代码

<template>
  <div class="ctnr">
    <p>常规用法</p>
    <m-image-crop class="mic mic1"
           v-model="img"></m-image-crop>

    <p>调整比例</p>
    <m-image-crop class="mic mic2"
           v-model="img2"
           :proportion="{ w: 100, h: 35 }"></m-image-crop>

    <p>列表</p>
    <div class="list">
      <div class="item"
         v-for="(item, index) in imgList"
         :key="item.id">
        <m-image-crop class="mic"
               has-remove
               :value="item"
               :proportion="{ w: 1, h: 1 }"
               @remove="removeHandle(index)"></m-image-crop>
      </div>
      <div class="item add"
         @click="addHandle">添加图片</div>
    </div>

  </div>
</template>

<script>
export default {
  data() {
    return {
      img: {},
      img2: {},
      imgList: []
    };
  },
  methods: {
    addHandle() {
      this.imgList.push({});
    },
    removeHandle(index) {
      this.imgList.splice(index, 1);
    }
  }
};
</script>

<style lang="less">
html,
body {
  margin: 0;
}
.ctnr {
  height: 100vh;
  .mic {
    border: 1px dotted #4fc08d;
  }
  .mic1 {
    width: 200px;
    height: 100px;
  }
  .mic2 {
    width: 100vw;
    height: 35vw;
  }
  .list {
    font-size: 0;
    .item {
      box-sizing: border-box;
      font-size: 14px;
      vertical-align: middle;
      display: inline-block;
      border: 1px dotted #4fc08d;
      width: 33.33vw;
      height: 33.33vw;
    }
    .add {
      text-align: center;
      line-height: 33.33vw;
    }
  }
}
</style>

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

Javascript 相关文章推荐
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
从面试题学习Javascript 面向对象(创建对象)
Mar 30 Javascript
用原生js做个简单的滑动效果的回到顶部
Oct 15 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
Dec 17 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
jQuery插件实现静态HTML验证码校验
Nov 06 Javascript
js放到head中失效的原因与解决方法
Mar 07 Javascript
微信小程序支付及退款流程详解
Nov 30 Javascript
node的process以及child_process模块学习笔记
Mar 06 Javascript
使用 Element UI Table 的 slot-scope方法
Oct 10 Javascript
javascript异常处理实现原理详解
Feb 17 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 Javascript
vue移动端微信授权登录插件封装的实例
Aug 28 #Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 #Javascript
对vux点击事件的优化详解
Aug 28 #Javascript
使用D3.js构建实时图形的示例代码
Aug 28 #Javascript
微信小程序手机号码验证功能的实例代码
Aug 28 #Javascript
AngularJS 事件发布机制
Aug 28 #Javascript
vue.js 添加 fastclick的支持方法
Aug 28 #Javascript
You might like
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php 启动报错如何解决
2014/01/17 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
js初始化验证实例详解
2016/11/26 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
Python入门教程之运算符与控制流
2016/08/17 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
python实现整数的二进制循环移位
2019/03/08 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
测绘工程系学生的自我评价
2013/11/30 职场文书
高中毕业自我鉴定
2013/12/19 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
生产部管理制度
2014/01/31 职场文书
信息员培训方案
2014/06/12 职场文书
个人借款协议书范本
2014/11/17 职场文书
优秀教师个人材料
2014/12/15 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技
分享3个非常实用的 Python 模块
2022/03/03 Python
Golang 对es的操作实例
2022/04/20 Golang