使用@vueup/vue-quill富文本插件实现图片缩放功能

845 阅读1分钟

vue3+vite版本

1、下载依赖

富文本:npm install @vueup/vue-quill  
图片拖拽插件:npm install quill-image-drop-module  
图片缩放大小插件:npm install quill-image-resize-module

PS:额外依赖下载

npm install @rollup/plugin-inject

2、vite.config配置

import inject from '@rollup/plugin-inject';

plugins: [
  inject({
    'window.Quill': ['@vueup/vue-quill', 'Quill'],
    Quill: ['@vueup/vue-quill', 'Quill'],
  }),
],

3、组件内引用



import { QuillEditor, Quill } from "@vueup/vue-quill";
import "@vueup/vue-quill/dist/vue-quill.snow.css";
import { ImageDrop } from 'quill-image-drop-module';
// import imageResize from 'quill-image-resize-module';
// 2025年2月21日16:36:15:“quill-image-resize-module”这个模块可能是没有默认导出的模块,需要更换导入方式
import * as imageResize from 'quill-image-resize-module';

Quill.register('modules/ImageDrop', ImageDrop);
Quill.register('modules/imageResize', imageResize);

QuillEditor组件options配置:

const options = ref({
  theme: "snow",
  bounds: document.body,
  debug: "warn",
  modules: {
    // 工具栏配置
    toolbar: [
      ["bold", "italic", "underline", "strike"],      // 加粗 斜体 下划线 删除线
      ["blockquote", "code-block"],                   // 引用  代码块
      [{ list: "ordered" }, { list: "bullet" }],      // 有序、无序列表
      [{ indent: "-1" }, { indent: "+1" }],           // 缩进
      [{ size: ["small", false, "large", "huge"] }],  // 字体大小
      [{ header: [1, 2, 3, 4, 5, 6, false] }],        // 标题
      [{ color: [] }, { background: [] }],            // 字体颜色、字体背景颜色
      [{ align: [] }],                                // 对齐方式
      ["clean"],                                      // 清除文本格式
      ["link", "image", "video"]                      // 链接、图片、视频
    ],
    // ImageDrop: true,  // PS:因为QuillEditor自带可拖拽此配置可以不开,开启拖动会复制图片
    // todo 富文本导入图片是否需要缩放拖拽 
    imageResize: {
      displayStyles: {
        backgroundColor: 'black',
        border: 'none',
        color: 'white',
      },
      modules: ['Resize', 'DisplaySize', 'Toolbar'],
    },
  },
  placeholder: "请输入内容",
  readOnly: props.readOnly
});