国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uniapp 實現(xiàn)富文本編輯器【小程序端】

這篇具有很好參考價值的文章主要介紹了uniapp 實現(xiàn)富文本編輯器【小程序端】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

css資源文件戳該鏈接:富文本css文件鏈接
編輯菜單我搞成吸頂效果了,方便手機編輯不用再滑到頭部點編輯菜單:css實現(xiàn)元素吸頂效果

uni-app富文本編輯器,# 微信小程序開發(fā),uni-app,小程序
————————————————————————————————————————————文章來源地址http://www.zghlxwxcb.cn/news/detail-594908.html

頁面代碼

<template>
	<view class="container">
		<view class="page-body">
			<view class='wrapper'>
				<view class='toolbar' @tap="format">
					<view :class="formats.bold ? 'ql-active' : ''" 
						class="iconfont icon-zitijiacu" data-name="bold"> </view>
						
					<view :class="formats.italic ? 'ql-active' : ''" 
						class="iconfont icon-zitixieti" data-name="italic"> </view>
						
					<view :class="formats.underline ? 'ql-active' : ''" 
						class="iconfont icon-zitixiahuaxian" data-name="underline"></view>
						
					<view :class="formats.strike ? 'ql-active' : ''" 
						class="iconfont icon-zitishanchuxian" data-name="strike"></view>
						
					<view :class="formats.align === 'left' ? 'ql-active' : ''" 
						class="iconfont icon-zuoduiqi" data-name="align" data-value="left"></view>
						
					<view :class="formats.align === 'center' ? 'ql-active' : ''" 
						class="iconfont icon-juzhongduiqi" data-name="align" data-value="center"></view>
						
					<view :class="formats.align === 'right' ? 'ql-active' : ''" class="iconfont icon-youduiqi"
						data-name="align" data-value="right"></view>
						
					<view :class="formats.align === 'justify' ? 'ql-active' : ''" class="iconfont icon-zuoyouduiqi"
						data-name="align" data-value="justify"></view>
						
					<view :class="formats.lineHeight ? 'ql-active' : ''" class="iconfont icon-line-height"
						data-name="lineHeight" data-value="2"></view>
						
					<view :class="formats.letterSpacing ? 'ql-active' : ''" class="iconfont icon-Character-Spacing"
						data-name="letterSpacing" data-value="2em"></view>
						
					<view :class="formats.marginTop ? 'ql-active' : ''" class="iconfont icon-722bianjiqi_duanqianju"
						data-name="marginTop" data-value="20px"></view>
						
					<view :class="formats.previewarginBottom ? 'ql-active' : ''"
						class="iconfont icon-723bianjiqi_duanhouju" data-name="marginBottom" data-value="20px"></view>
						
					<view :class="formats.fontFamily ? 'ql-active' : ''" class="iconfont icon-font"
						data-name="fontFamily" data-value="Pacifico"></view>
						
					<view :class="formats.fontSize === '24px' ? 'ql-active' : ''" class="iconfont icon-fontsize"
						data-name="fontSize" data-value="24px"></view>
						
					<view :class="formats.color === '#0000ff' ? 'ql-active' : ''" class="iconfont icon-text_color"
						data-name="color" data-value="#0000ff"></view>
						
					<view :class="formats.backgroundColor === '#00ff00' ? 'ql-active' : ''"
						class="iconfont icon-fontbgcolor" data-name="backgroundColor" data-value="#00ff00"></view>
					
					<view class="iconfont icon--checklist" data-name="list" data-value="check"></view>
					
					<view :class="formats.list === 'ordered' ? 'ql-active' : ''" class="iconfont icon-youxupailie"
						data-name="list" data-value="ordered"></view>
						
					<view :class="formats.list === 'bullet' ? 'ql-active' : ''" class="iconfont icon-wuxupailie"
						data-name="list" data-value="bullet"></view>
						
					<view class="iconfont icon-outdent" data-name="indent" data-value="-1"></view>
					<view class="iconfont icon-indent" data-name="indent" data-value="+1"></view>
					
					<view :class="formats.header === 1 ? 'ql-active' : ''" class="iconfont icon-format-header-1"
						data-name="header" :data-value="1"></view>
						
					<view :class="formats.script === 'sub' ? 'ql-active' : ''" class="iconfont icon-zitixiabiao"
						data-name="script" data-value="sub"></view>
						
					<view :class="formats.script === 'super' ? 'ql-active' : ''" class="iconfont icon-zitishangbiao"
						data-name="script" data-value="super"></view>
					
					<view :class="formats.direction === 'rtl' ? 'ql-active' : ''" class="iconfont icon-direction-rtl"
						data-name="direction" data-value="rtl"></view>
					<view class="iconfont icon-fengexian" @tap="insertDivider"></view>
					<view class="iconfont icon-clearedformat" @tap="removeFormat"></view>
					<view class="iconfont icon-charutupian" @tap="insertImage"></view>
					<view class="iconfont icon-date" @tap="insertDate"></view>
					<view class="iconfont icon-shanchu" @tap="clear"></view>
					<view class="iconfont icon-undo" @tap="undo"></view>
					<view class="iconfont icon-redo" @tap="redo"></view>
				</view>

				<editor id="editor" class="ql-container" placeholder="開始輸入..." showImgSize showImgToolbar showImgResize
					@statuschange="onStatusChange" :read-only="false" @ready="onEditorReady" @blur="getContents">
				</editor>
			</view>
		</view>

	</view>
</template>

<script>
	export default {
		data() {
			return {
				formats: {},
				timer: null,
				editorDetail: "",
			}
		},
		mounted() {
			this.onEditorReady();
			// 將數(shù)據(jù)渲染到富文本內(nèi)
			this.timer = setInterval(() => {
				if (this.editorDetail) {
					clearInterval(this.timer)
					this.editorCtx.setContents({
						html: this.editorDetail,
						success(res) {
							// console.log(res);
						}
					})
				}
			}, 100)
		},
		methods: {
			// 失去焦點時觸發(fā),獲取富文本的內(nèi)容
			getContents() {
				let _this = this
				this.editorCtx.getContents({
					success(res) {
						_this.$emit('getContents', res.html)
					}
				})
			},
			//編輯框初始化時觸發(fā)
			onEditorReady() {
				uni.createSelectorQuery().select('#editor').context((res) => {
					this.editorCtx = res.context;
				}).exec()
			},
			//撤銷
			undo() {
				this.editorCtx.undo()
			},
			//恢復
			redo() {
				this.editorCtx.redo()
			},
			format(e) {
				let {
					name,
					value
				} = e.target.dataset
				if (!name) return
				this.editorCtx.format(name, value)
				
			},
			//通過 Context 方法改變編輯器內(nèi)樣式時觸發(fā),返回選區(qū)已設(shè)置的樣式
			onStatusChange(e) {
				this.formats = e.detail
				console.log(e);
			},
			//插入分隔符
			insertDivider() {
				this.editorCtx.insertDivider({
					success: function() {
						console.log('insert divider success')
					}
				})
			},
			//清空全部內(nèi)容
			clear() {
				this.editorCtx.clear({
					success: function(res) {
						console.log("clear success")
					}
				})
			},
			//清除樣式
			removeFormat() {
				this.editorCtx.removeFormat()
			},
			//插入當前日期
			insertDate() {
				const date = new Date()
				const formatDate = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`
				this.editorCtx.insertText({
					text: formatDate
				})
			},
			//插入圖片
			insertImage() {
				uni.chooseImage({
					count: 1,
					success: (res) => {
						this.editorCtx.insertImage({
							src: res.tempFilePaths[0],
							alt: '圖像',
							success: function() {
								console.log('insert image success')
							}
						})
					}
				})
			}
		},
	}
</script>

<style>
	@import "./css/editor.css";
	.wrapper {
		padding: 5px;
	}

	.iconfont {
		display: inline-block;
		padding: 10px 8px;
		width: 24px;
		height: 24px;
		cursor: pointer;
		font-size: 20px;
	}

	.toolbar {
		box-sizing: border-box;
		border-bottom: 0;
		font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
		background-color: #ffffff;
		position: -webkit-sticky;
		position: sticky;
		top: var(--window-top);
		z-index: 99;
		height: 95px;
	}

	.ql-container {
		box-sizing: border-box;
		padding: 12px 15px;
		width: 100%;
		min-height: 30vh;
		height: auto;
		background: #fff;
		margin-top: 10px;
		font-size: 16px;
		line-height: 1.5;
	}

	.ql-active {
		color: #06c;
	}
</style>

到了這里,關(guān)于uniapp 實現(xiàn)富文本編輯器【小程序端】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 淺談WPF之利用RichTextBox實現(xiàn)富文本編輯器

    淺談WPF之利用RichTextBox實現(xiàn)富文本編輯器

    在實際應(yīng)用中,富文本隨處可見,如留言板,聊天軟件,文檔編輯,特定格式內(nèi)容等,在WPF開發(fā)中,如何實現(xiàn)富文本編輯呢?本文以一個簡單的小例子,簡述如何通過RichTextBox實現(xiàn)富文本編輯功能,主要實現(xiàn)復制,剪切,粘貼,撤銷,重做,保存,打開,文本加粗,斜體,下

    2024年02月19日
    瀏覽(18)
  • 【富文本編輯器實戰(zhàn)】02 編寫編輯器配置文件

    【富文本編輯器實戰(zhàn)】02 編寫編輯器配置文件

    本篇文章主要內(nèi)容是項目的配置文件的編寫與講解,包括菜單項配置、語言配置、總體配置。 下圖是編輯器的總體結(jié)構(gòu): 編輯器大致可以分為兩個部分,菜單欄(圖中的 1)和下面的編輯器(圖中的 4)。其中菜單欄的內(nèi)容較多,每個菜單項都包含了圖標,說明文字(圖中的 2)。部

    2024年01月21日
    瀏覽(23)
  • 【富文本編輯器實戰(zhàn)】04 菜單組件和編輯器的整合

    【富文本編輯器實戰(zhàn)】04 菜單組件和編輯器的整合

    在上一篇文章中,我們對整個編輯器項目的大體結(jié)構(gòu)有了一定的了解,主要分為菜單欄和編輯區(qū)。菜單欄包括了編輯器的主要文本操作功能,且菜單項是可配置的。編輯器界面顯示比較簡單,是一個可編輯的 div 區(qū)域。接下來我們就來把編輯器的整體框架搭建起來,讓其可以

    2024年01月24日
    瀏覽(38)
  • dede編輯器修改成純文本編輯器的方法

    dede編輯器修改成純文本編輯器的方法

    我在做優(yōu)秀啦網(wǎng)站大全的時候需要的正文內(nèi)容都不需要設(shè)置什么文字樣式,所以我需要把編輯器上的工具全部取消掉,包括會員投稿中的編輯器工具欄全部取消掉或者屏蔽隱藏掉,所以我需要把DEDE編輯器修改成純文本編輯器的方法如下: 如圖: 首先打開 /include/ckeditor/ckedi

    2024年02月16日
    瀏覽(24)
  • Vue2 實現(xiàn)內(nèi)容拖拽或添加 HTML 到 Tinymce 富文本編輯器的高級功能詳解

    Vue2 實現(xiàn)內(nèi)容拖拽或添加 HTML 到 Tinymce 富文本編輯器的高級功能詳解

    在 Web 開發(fā)中,Tinymce 被廣泛應(yīng)用作為富文本編輯器。除了基礎(chǔ)的文本編輯功能,Tinymce 還提供了一系列高級功能,使得文本編輯更加靈活和便捷。本文將介紹如何在 Tinymce 中實現(xiàn)一些高級功能,并深入了解每個工具的使用。 Tinymce 是一款基于 JavaScript 的富文本編輯器,支持豐

    2024年02月03日
    瀏覽(128)
  • 富文本編輯器

    富文本編輯器

    啥是富文本編輯器,就是下面這個東西: 1.那這玩意兒怎么安裝和配置: 2. 通過(在終端里輸入)? npm install?vue-quill-editor --save? 安裝 3.具體的在項目里的配置過程可以看最新的官方文檔vue-quill-editor · Quill官方中文文檔 · 看云 4.這里先簡單說下怎么配置,首先在main里輸入:

    2024年02月10日
    瀏覽(20)
  • Vim文本編輯器

    Vim文本編輯器

    目錄 一、Vim文本編輯器?? 1.1、什么是Vim文本編輯器 1.2、Vim文本編輯器基本格式 1.3、Vim的三種模式及切換 ?二、命令模式 2.1、Vim的進入與退出 2.2、命令模式下光標跳轉(zhuǎn)的快捷鍵 2.3、常用命令集合 三、編輯模式 四、末行模式 Linux 系統(tǒng)中“一切皆文件”,因此當我們要更改

    2024年02月10日
    瀏覽(28)
  • 【Electron】富文本編輯器之文本粘貼

    【Electron】富文本編輯器之文本粘貼

    由于這個問題導致,從其他地方復制來的內(nèi)容 粘貼發(fā)送之后都會多一個 換行 在發(fā)送的時候如果直接,發(fā)送innerHTML 就 可以解決 Electron h5 Andriod 都沒問題,但是 公司的 IOS 端 不支持,且不提供支持(做不了。)。 于是,繼續(xù)想辦法。 把單純的富文本插入操作,改一下,只粘

    2024年02月03日
    瀏覽(24)
  • vue3+ts+tinynce富文本編輯器+htmlDocx+file-saver 配合實現(xiàn)word下載

    vue3+ts+tinynce富文本編輯器+htmlDocx+file-saver 配合實現(xiàn)word下載

    vue3 請下載html-docx-js-typescript,否則會報錯類型問題 row.report效果及數(shù)據(jù) 調(diào)用

    2024年02月11日
    瀏覽(25)
  • 15 文本編輯器vim

    15 文本編輯器vim

    ? ? ? ? 如果file.txt就是修改這個文件,如果不存在就是新建一個文件。 ?????????使用vim建完文件后,會自動進入文件中。? ????????底部要是顯示插入,是編輯模式; ????????按esc,底部要是空白的,則是進入命令模式,可以輸入一些快捷鍵進行操作,比如說

    2024年02月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包