vue 实现ps图片编辑_基于vue-simplemde实现图片拖拽、粘贴功能

项目使用的是vue框架,需要一个markdown的编辑框,就在npm上找了一下,发现simplemde挺不错的,由于我比较懒,就顺便在npm又搜了一下,找到了vue-simplemde这个 package ,那就开始使用它吧。

但是这个 vue-simplemde 不支持图片拖拽上传、粘贴上传,也不能说是因为这个 vue-simplemde ,因为 vue-simplemde 只是对 simplemde 的基础上封装成一个Vue插件。所以最后还是由于 simplemde 没有提供相关的功能,但是为了用户体验考虑,这个功能时必要的,除非不使用markdown编辑器。而去使用富文本编辑器,那样的话,项目很多的代码都要进行更改。所以就在网上查了文章,及在github上查了一些代码。下面将进行分析

拖拽

拖拽的API核心是 drop 这个事件,就是当我们从桌面拖动一个文件到浏览器里时,松开的时候,而触发的事件名。

我们都知道,你随便拖动一个图片到浏览器里,会直接打开这个图片,这是因为浏览器默认你拖动文件到浏览器里时,将打开这个文件,所以,我们需要阻止原生的操作。

我们现在先写一段代码,让其屏蔽掉默认事件

window.addEventListener("drop", e => {

e = e || event

if (e.target.className === 'CodeMirror-scroll') { // 如果进入到编辑器的话,将阻止默认事件

e.preventDefault()

}

}, false)

CodeMirror-scroll 这个Class就是 simplemde 编辑框的Class名称。

现在我们拖拽文件到这个编辑框,然后松掉,不会出现任何反应。如果在编辑框之外的地方,还是会继续触发默认事件。

下面就是获取 simplemde 方法,给他 drop 事件处理方法。

// 假设页面一共有三个编辑窗口,所以需要循环监听事件

[ this.$refs.simplemde1,

this.$refs.simplemde2,

this.$refs.simplemde3

].map(({simplemde})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一款非常流行的前端框架,可以很方便地实现图片编辑和裁剪功能。下面,我来介绍一种使用Vue实现图片裁剪的方法。 首先,我们需要引入一个图片裁剪插件。这里我推荐使用Vue-Cropper插件,它是一款基于Cropper.js的Vue图片裁剪组件,支持裁剪、旋转、缩放等操作。 安装Vue-Cropper插件: ``` npm install vue-cropper --save ``` 然后在Vue组件中引入并使用Vue-Cropper: ```vue <template> <div> <vue-cropper ref="cropper" :src="imageUrl" :guides="false" :view-mode="1" :drag-mode="cropDragMode" :aspect-ratio="cropAspectRatio" :auto-crop-area="cropAutoCropArea" :center="cropCenter" :highlight="cropHighlight" :crop-box-moving="cropBoxMoving" @cropend="cropImage" ></vue-cropper> <button @click="getCroppedImage">裁剪图片</button> </div> </template> <script> import VueCropper from 'vue-cropper' export default { components: { VueCropper }, data() { return { imageUrl: '', // 需要裁剪的图片路径 cropAspectRatio: 1 / 1, // 裁剪框的宽高比例 cropAutoCropArea: 0.8, // 裁剪框自动缩放比例 cropCenter: false, // 裁剪框是否居中 cropHighlight: true, // 裁剪框是否高亮显示 cropBoxMoving: true, // 裁剪框是否可以移动 cropDragMode: 'crop', // 裁剪框拖拽模式:crop-裁剪,move-移动,none-禁止操作 croppedImage: '' // 裁剪后的图片 } }, methods: { cropImage() { // 裁剪结束后的回调函数 }, getCroppedImage() { // 获取裁剪后的图片 this.croppedImage = this.$refs.cropper.getCroppedCanvas().toDataURL() } } } </script> ``` 其中,`imageUrl`为需要裁剪的图片路径,`cropAspectRatio`为裁剪框的宽高比例,`cropAutoCropArea`为裁剪框自动缩放比例,`cropCenter`为裁剪框是否居中,`cropHighlight`为裁剪框是否高亮显示,`cropBoxMoving`为裁剪框是否可以移动,`cropDragMode`为裁剪框拖拽模式,`croppedImage`为裁剪后的图片。 在`getCroppedImage`方法中,使用`this.$refs.cropper.getCroppedCanvas().toDataURL()`获取裁剪后的图片数据,然后可以将其保存到服务器或者直接在页面上显示。 以上就是使用Vue-Cropper插件实现图片裁剪的方法。当然,还有其他的图片裁剪插件可以使用,不过大同小异。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值