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 相关文章推荐
JavaScript 的方法重载效果
Aug 07 Javascript
jQuery生成asp.net服务器控件的代码
Feb 04 Javascript
ext 列表页面关于多行查询的办法
Mar 25 Javascript
ie8本地图片上传预览示例代码
Jan 12 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
Aug 08 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
Jan 18 Javascript
Angular封装搜索框组件操作示例
Apr 25 Javascript
vue+eslint+vscode配置教程
Aug 09 Javascript
javascript前端和后台进行数据交互方法示例
Aug 07 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
Nov 02 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
php的header和asp中的redirect比较
2006/10/09 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
Python中的ctime()方法使用教程
2015/05/22 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
python实现微信自动回复机器人功能
2019/07/11 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
np.dot()函数的用法详解
2020/01/17 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
公司活动策划方案
2014/01/13 职场文书
12岁生日感言
2014/01/21 职场文书
企业人事任命书
2014/06/05 职场文书
资产运营委托书范本
2014/10/16 职场文书
python如何读取.mtx文件
2021/04/22 Python
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers