vue3中使用wangEditor,展示html时无样式的解决方法

正常我们在编辑器中输入内容时,是会有自带的样式的,比如这样

但是在拿到这个html时,所展示出来的内容是无样式的,比如这里,表格的样式就消失了

在官网的演示demo这里有讲到关于不显示样式的问题

官网是这样解决的

点进来后有以下代码

.editor-content-view {
  border: 3px solid #ccc;
  border-radius: 5px;
  padding: 0 10px;
  margin-top: 20px;
  overflow-x: auto;
}

.editor-content-view p,
.editor-content-view li {
  white-space: pre-wrap; /* 保留空格 */
}

.editor-content-view blockquote {
  border-left: 8px solid #d0e5f2;
  padding: 10px 10px;
  margin: 10px 0;
  background-color: #f1f1f1;
}

.editor-content-view code {
  font-family: monospace;
  background-color: #eee;
  padding: 3px;
  border-radius: 3px;
}
.editor-content-view pre>code {
  display: block;
  padding: 10px;
}

.editor-content-view table {
  border-collapse: collapse;
}
.editor-content-view td,
.editor-content-view th {
  border: 1px solid #ccc;
  min-width: 50px;
  height: 20px;
}
.editor-content-view th {
  background-color: #f1f1f1;
}

.editor-content-view ul,
.editor-content-view ol {
  padding-left: 20px;
}

.editor-content-view input[type="checkbox"] {
  margin-right: 5px;
}

把这些代码放在一个css文件中,再从外部引入进来就可以了。笔者这里没有单独创建一个css文件,而是把这一段直接放在.vue文件中的<style>部分了

在你的<template>部分中绑定class属性

到这一步还是显示不了样式的,可以把<style>的scoped属性删除,即不要使用<style scoped>,不然样式会不生效。或者还有一种解决办法,用:deep()把以上的所有css属性括起来,像这样(过度使用:deep()可能会导致性能问题,因为它需要Vue去解析和处理更多的CSS选择器)

:deep(.editor-content-view) {
        /* border: 3px solid #ccc; */
        border-radius: 5px;
        padding: 0 10px;
        margin-top: 20px;
        overflow-x: auto;
    }

完成上述步骤后就可以正常显示有样式的内容了

### Vue 集成 Wangeditor 教程 #### 安装依赖包 为了在 Vue 项目中使用 `WangEditor` 富文本编辑器,需先通过 npm 或 yarn 来安装必要的软件包。对于 Vue3 版本的应用程序来说,应该这样操作: ```bash npm install @wangeditor/editor @wangeditor/editor-for-vue@next ``` 这会把最新版本的 `WangEditor` 和其对应的 Vue 组件加入到项目的依赖列表里[^2]。 #### 创建组件并初始化 Editor 实例 创建一个新的 Vue 单文件组件来承载富文本编辑区域,在 `<template>` 中引入官方提供的封装好的 editor 组件;接着利用生命周期钩子函数完成实例化的配置工作以及销毁清理资源的任务。 ```html <template> <div id="editor-container"></div> </template> <script setup lang="ts"> import { onMounted, ref } from &#39;vue&#39; import &#39;@wangeditor/editor/dist/css/style.css&#39; // 引入 css import createEditor from &#39;@wangeditor/editor&#39; const editor = ref(null) onMounted(() => { const editorInstance = createEditor({ selector: &#39;#editor-container&#39;, config: {}, mode: &#39;default&#39;, // or &#39;simple&#39; }) editor.value = editorInstance }) </script> ``` 上述代码展示了如何在一个简单的 Vue SFC (Single File Component) 内部加载和启动 WangEditor 编辑器,并将其挂载到了指定的选择符上。注意这里还包含了 CSS 文件的导入语句以确保样式能够正常生效[^1]。 #### 处理内容变更事件与自定义命令 当希望监听编辑区内的变动情况或是向其中注入特定的操作指令,则可以借助于所提供的 API 接口来进行交互式的编程活动。比如下面的例子就实现了对输入框内文字改变后的响应机制,同也示范了怎样调用内置的方法去修改选中的部分格式属性。 ```javascript // 假设我们在 mounted hook 后面继续编写如下逻辑... watchEffect(() => { if (!editor.value) return; editor.value.on(&#39;change&#39;, ({ text }) => console.log(`当前文档内容已更新为:${text}`)); function insertText() { editor.value.command.insertText(&#39;Hello World!&#39;); } }); ``` 这段脚本片段不仅注册了一个观察者用于捕捉实的数据流变化状况,而且定义了一条辅助性的 utility 函数用来往光标位置追加固定字符串序列[^3]。 #### 解决粘贴 Word 内容的问题 有开发者可能会遇到从 Microsoft Office 应用如 Word 粘贴过来的文字带有额外 HTML 结构标签的情况,影响最终渲染效果。针对此类现象可采取措施优化用户体验,例如调整默认行为过滤掉不必要的标记元素或者重写解析规则使之更贴近目标平台的要求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值