写一个功能齐全的富文本器
时间: 2024-03-05 22:47:33 浏览: 157
以下是一个功能齐全的富文本器,支持基本的文字编辑、插入图片、插入链接、插入视频等操作:
HTML 部分:
```html
<div class="editor">
<div class="toolbar">
<button class="bold" title="加粗"><i class="fas fa-bold"></i></button>
<button class="italic" title="斜体"><i class="fas fa-italic"></i></button>
<button class="underline" title="下划线"><i class="fas fa-underline"></i></button>
<button class="strike" title="删除线"><i class="fas fa-strikethrough"></i></button>
<button class="subscript" title="下标"><i class="fas fa-subscript"></i></button>
<button class="superscript" title="上标"><i class="fas fa-superscript"></i></button>
<button class="align-left" title="左对齐"><i class="fas fa-align-left"></i></button>
<button class="align-center" title="居中对齐"><i class="fas fa-align-center"></i></button>
<button class="align-right" title="右对齐"><i class="fas fa-align-right"></i></button>
<button class="align-justify" title="两端对齐"><i class="fas fa-align-justify"></i></button>
<button class="undo" title="撤销"><i class="fas fa-undo"></i></button>
<button class="redo" title="重做"><i class="fas fa-redo"></i></button>
<button class="insert-image" title="插入图片"><i class="fas fa-image"></i></button>
<button class="insert-link" title="插入链接"><i class="fas fa-link"></i></button>
<button class="insert-video" title="插入视频"><i class="fas fa-video"></i></button>
</div>
<div class="content" contenteditable="true"></div>
</div>
```
CSS 部分:
```css
.editor {
border: 1px solid #ccc;
padding: 10px;
}
.toolbar {
margin-bottom: 10px;
}
.toolbar button {
border: none;
cursor: pointer;
margin-right: 5px;
background: none;
}
.toolbar button i {
font-size: 16px;
}
.content {
border: 1px solid #ccc;
min-height: 100px;
padding: 5px;
}
```
JavaScript 部分:
```javascript
const boldButton = document.querySelector('.bold');
const italicButton = document.querySelector('.italic');
const underlineButton = document.querySelector('.underline');
const strikeButton = document.querySelector('.strike');
const subscriptButton = document.querySelector('.subscript');
const superscriptButton = document.querySelector('.superscript');
const alignLeftButton = document.querySelector('.align-left');
const alignCenterButton = document.querySelector('.align-center');
const alignRightButton = document.querySelector('.align-right');
const alignJustifyButton = document.querySelector('.align-justify');
const undoButton = document.querySelector('.undo');
const redoButton = document.querySelector('.redo');
const insertImageButton = document.querySelector('.insert-image');
const insertLinkButton = document.querySelector('.insert-link');
const insertVideoButton = document.querySelector('.insert-video');
const content = document.querySelector('.content');
boldButton.addEventListener('click', () => document.execCommand('bold', false, null));
italicButton.addEventListener('click', () => document.execCommand('italic', false, null));
underlineButton.addEventListener('click', () => document.execCommand('underline', false, null));
strikeButton.addEventListener('click', () => document.execCommand('strikethrough', false, null));
subscriptButton.addEventListener('click', () => document.execCommand('subscript', false, null));
superscriptButton.addEventListener('click', () => document.execCommand('superscript', false, null));
alignLeftButton.addEventListener('click', () => document.execCommand('justifyLeft', false, null));
alignCenterButton.addEventListener('click', () => document.execCommand('justifyCenter', false, null));
alignRightButton.addEventListener('click', () => document.execCommand('justifyRight', false, null));
alignJustifyButton.addEventListener('click', () => document.execCommand('justifyFull', false, null));
undoButton.addEventListener('click', () => document.execCommand('undo', false, null));
redoButton.addEventListener('click', () => document.execCommand('redo', false, null));
insertImageButton.addEventListener('click', () => {
const url = prompt('请输入图片链接地址', 'https://');
if (url) {
document.execCommand('insertImage', false, url);
}
});
insertLinkButton.addEventListener('click', () => {
const url = prompt('请输入链接地址', 'https://');
if (url) {
document.execCommand('createLink', false, url);
}
});
insertVideoButton.addEventListener('click', () => {
const url = prompt('请输入视频链接地址', 'https://');
if (url) {
const videoHtml = `<video src="${url}" controls></video>`;
document.execCommand('insertHTML', false, videoHtml);
}
});
```
这个富文本器比较全面,支持多种编辑操作,也可以作为一个基础版本,供您进行二次开发。