vue富文本编辑器首行缩进
时间: 2023-08-19 08:16:13 浏览: 255
富文本编辑器引入和获取富文本第一张图设置为缩略图
在Vue富文本编辑器中实现首行缩进的方法如下:
首先,在_initEditor()方法中注册菜单名,并将该菜单添加到原有菜单中。这可以通过以下代码实现:
```javascript
const menuKey = "textIndent"; // 给定菜单名
var editor = new E(this.$refs.editor); // 注册菜单
editor.menus.extend(menuKey, AlertMenu);
editor.config.menus = editor.config.menus.concat(menuKey);
```
然后,在constructor中创建一个菜单,并添加hover文字。这可以通过以下代码实现:
```javascript
constructor(editor) {
// data-title属性表示当鼠标悬停在该按钮上时提示该按钮的功能简述
const $elem = E.$(`<div class="w-e-menu" data-title="首行缩进" style="z-index:auto;">
<i class="el-icon-s-fold"></i>
</div>`);
super($elem, editor);
}
```
接下来,我们需要定义一个方法,该方法用于获取选中的DOM元素,判断当前是否已添加首行缩进样式,如果有则取消,如果没有则添加。最后,我们需要恢复选区。这可以通过以下代码实现:
```javascript
// 菜单点击事件
clickHandler(value) {
const editor = this.editor;
const $elems = editor.selection.getSelectionRangeTopNodes(); //$elems——选中完整段落或多个段落——上级节点
if ($elems.length > 0) {
$elems.forEach(item => {
const $elem = $(item).getNodeTop(editor); //获取选中的上一级节点
const reg = /^(P|H\[0-9\]*)$/; //判断是不是p\h标签
if (reg.test($elem.getNodeName())) {
const $elem1 = $elem.elems\[0\]; //获取每一行的带标签内容
if ($elem1.style\["textIndent"\] === "") {
//如果此时的样式没有缩进,就添加缩进样式
$elem.css("text-indent", "2em");
} else {
//如果此时的样式有缩进,就取消缩进样式
$elem.css("text-indent", "");
}
}
});
}
// 恢复选区
editor.selection.restoreSelection();
this.tryChangeActive(); //菜单高亮
}
```
这样,你就可以在Vue富文本编辑器中实现首行缩进功能了。
#### 引用[.reference_title]
- *1* *2* *3* [wangEditor富文本编辑器(第四章:自定义首行缩进菜单)](https://blog.csdn.net/DW14687/article/details/126102601)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文