龙空技术网

使用 Tailwind CSS 和 Flowbite 构建的开源 WYSIWYG 富文本编辑器组件

程序员蛋卷 41

前言:

此时看官们对“wysiwyg安装教程”大体比较珍视,小伙伴们都需要知道一些“wysiwyg安装教程”的相关文章。那么小编同时在网络上汇集了一些对于“wysiwyg安装教程””的相关文章,希望各位老铁们能喜欢,看官们快快来学习一下吧!

#记录我的9月生活#

Flowbite 的 WYSIWYG 文本编辑器 是基于 Tip Tap 库的开源项目,采用 MIT 许可协议,允许您轻松编辑包含排版样式、链接、图片、视频等复杂的文本数据。

Flowbite 提供的标记和样式都基于 Tailwind CSS 的工具类,而 WYSIWYG 文本编辑器中的内容样式则基于 Flowbite Typography 插件。

此页面提供的所有示例均支持深色模式、RTL(从右到左)样式、移动设备的响应式布局,您还可以轻松使用 JavaScript 和 Flowbite API 添加自定义功能。

开始

在继续之前,请确保您的项目已安装 Tailwind CSS、Flowbite 和 Tip Tap。

请参阅 Flowbite 的 快速入门指南 以启用交互元素。

安装 Flowbite Typography 插件,用于格式化 WYSIWYG 编辑器预览中的文本内容:

npm i flowbite-typography

tailwind.config.js 文件中引入该插件:

theme: {      // ...  },  plugins: [      require('flowbite-typography'),      // ...  ],

将 Flowbite 插件中的 wysiwyg 字段设置为 true,以启用伪样式:

plugins: [    require('flowbite/plugin')({        wysiwyg: true,    }),    // ... other plugins  ]

最后,通过 NPM 安装 Tip Tap,或者如果使用 CDN,则跳过此步骤:

npm install @tiptap/core @tiptap/pm @tiptap/starter-kit

现在,您可以通过复制以下 HTML 和 JavaScript 代码来使用示例。

默认文本编辑器

使用此 WYSIWYG 文本编辑器示例,启用基本的排版样式和格式,包括添加列表、链接、图片、视频、代码块、文本对齐、引用块、标题和段落等。

获取源码和示例文本格式化

使用此 WYSIWYG 文本编辑器示例启用文本格式化功能,如下划线、加粗、斜体、删除线、代码、高亮显示等,还可以选择文本大小、颜色、字体等。

获取源码和示例文本对齐

启用 WYSIWYG 组件内容的左对齐、居中、右对齐和两端对齐。

获取源码和示例排版元素

使用此示例创建基于 Tailwind CSS 工具类和 Flowbite API 的排版元素,如无序列表、编号列表、引用块、水平线、段落、标题和代码块等。

获取源码和示例配置链接

使用此示例为 WYSIWYG 文本编辑器中的内容添加和移除锚点链接。

获取源码和示例使用图片

使用此示例学习如何在 WYSIWYG 文本编辑器中添加图片,并配置图片 URL、alt 属性(对 SEO 和无障碍访问非常重要)和图片标题。

获取源码和示例添加视频

使用此示例在 WYSIWYG 文本编辑器中基于 YouTube URL 源嵌入视频,并使用 Flowbite 模态组件 API 设置视频的宽度和高度。

获取源码和示例编辑表格

使用此示例在 WYSIWYG 文本编辑器中编辑表格数据,添加和移除表格列、行和单元格,并使用其他功能轻松导航表格数据。

获取源码和示例撤销与重做

使用 WYSIWYG 文本编辑器组件的历史功能集成撤销与重做操作。

获取源码和示例导出数据

使用 editor.getJSON() 和 editor.getHTML() 函数,将 WYSIWYG 文本编辑器中的文本内容导出为 JSON 或原始 HTML 格式,以便持久化到数据库或 API 结构中。

获取源码和示例Javascript 行为

了解如何通过 JavaScript 编程地使用 WYSIWYG 编辑器,通过创建对象实例、设置选项、方法、事件监听器等,集成到您的代码库中。

在通过 NPM 或 CDN 安装 Tip Tap 后,您可以创建一个新的 Editor 对象:

import { Editor } from '@tiptap/core';  import StarterKit from '@tiptap/starter-kit';    new Editor({    element: document.getElementById('wysiwyg'),    extensions: [StarterKit],    content: '<p>Welcome to Flowbite!</p>',  })

确保您还创建了一个带有合适 ID 的空 div 元素:

<div id="wysiwyg"></div>

此代码将自动设置 WYSIWYG 组件中所需的标记。请注意,Tip Tap 库是无头的,因此需要自行为元素设置样式,但您可以从 Flowbite 页面复制示例。

内容样式

我们还建议从 Flowbite Typography 包中添加自定义排版类,以确保文本编辑器中的内容正确显示样式:

new Editor({    element: document.getElementById('wysiwyg'),    extensions: [StarterKit],    content: '<p>Welcome to Flowbite!</p>',    editorProps: {          attributes: {              class: 'format lg:format-lg dark:format-invert focus:outline-none format-blue max-w-none',          },      }  })
扩展

Tip Tap 是一个模块化的库,这意味着如果你想在 WYSIWYG 组件中引入图片、视频、链接等元素,你需要专门从库中导入这些资源,并在初始化 Editor 对象时将其设置为扩展。

以下是添加链接扩展的示例:

import { Editor } from '@tiptap/core';  import StarterKit from '@tiptap/starter-kit';  import Link from '@tiptap/extension-link';    const editor = new Editor({      element: document.querySelector('#wysiwyg-links-example'),      extensions: [          StarterKit,          Link.configure({              openOnClick: false,              autolink: true,              defaultProtocol: 'https',          })      ],      content: '<p>Flowbite 是一个 <strong>基于实用优先的 Tailwind CSS 框架的开源 UI 组件库</strong>,支持深色模式、Figma 设计系统等。</p><p>它包含网站常用的所有组件,如按钮、下拉菜单、导航栏、模态框、日期选择器、高级图表等。</p><p>了解更多组件信息,请访问 <a href=";>Flowbite 文档</a>。</p>',      editorProps: {          attributes: {              class: 'format lg:format-lg dark:format-invert focus:outline-none format-blue max-w-none',          },      }  });
方法

你可以轻松调用 Editor 对象中的方法来设置文本样式、链接、图片等。以下是一个基于按钮点击事件的示例,它会提示输入链接的 URL 并将其添加到当前选中的文本:

// 为按钮设置自定义事件监听器  document.getElementById('toggleLinkButton').addEventListener('click', () => {      const url = window.prompt('输入图片链接:', ';);      editor.chain().focus().toggleLink({ href: url }).run();  });

以下是另一个示例,展示如何通过按钮点击移除链接:

// 基于按钮点击移除链接  document.getElementById('removeLinkButton').addEventListener('click', () => {      editor.chain().focus().unsetLink().run()  });

本页面中的示例具有功能性元素,您可以查看 JavaScript 标签中的源代码。

许可协议

本页面的资源,包括 Flowbite 示例和 Tip Tap,均依据 MIT 许可协议授权使用。

鸣谢

这些示例的实现得益于以下开源资源:

Flowbite 库Tailwind CSS WYSIWYG — FlowbiteTip Tap 库Tailwind CSSFlowbite SVG 图标

标签: #wysiwyg安装教程