微信小程式實戰(zhàn)專案之富文本編輯器實現(xiàn)
Oct 08, 2022 pm 05:51 PM本篇文章為大家?guī)砹岁P(guān)於微信小程式的相關(guān)知識,其中主要介紹了關(guān)於富文本編輯器的實戰(zhàn)示例,包括了創(chuàng)建發(fā)布頁面、實現(xiàn)基本佈局、實現(xiàn)編輯區(qū)操作欄的功能等內(nèi)容,下面一起來看一下,希望對大家有幫助。
【相關(guān)學(xué)習(xí)推薦:小程式學(xué)習(xí)教學(xué)】
1. 實現(xiàn)效果
實作的效果如下圖:
實現(xiàn)的功能點如下:
- 文字加粗、斜體、底線,對齊方式
- 撤銷、恢復(fù)、插入圖片、刪除功能。
2. 建立發(fā)佈頁面,實作基本佈局
首先建立發(fā)佈頁面article,在app.json 中透過設(shè)定生成頁面即可。
"pages": [ "pages/article/article" ]
在article.wxml 中,書寫結(jié)構(gòu):
<view> <!-- 文章類型 --> <view> <picker bindchange="bindPickerChange" model:value="{{index}}" range="{{array}}"> <view class="picker"> 文章類型:{{objectArray[index].name}} </view> </picker> </view> <!-- 文章標(biāo)題 --> <view> <input name="title" class="title" placeholder="請輸入文章標(biāo)題" maxlength="18" model:value="{{title}}"></input> </view> <!-- 編輯區(qū) --> <view class="container"> <view class="page-body"> <view class='wrapper'> <!-- 操作欄 --> <view class='toolbar' bindtap="format"> <i class="iconfont icon-zitijiacu"></i> <i class="iconfont icon-zitixieti"></i> <i class="iconfont icon-zitixiahuaxian"></i> <i class="iconfont icon-zuoduiqi"></i> <i class="iconfont icon-juzhongduiqi"></i> <i class="iconfont icon-youduiqi"></i> <i class="iconfont icon-undo"></i> <i class="iconfont icon-redo"></i> <i class="iconfont icon-charutupian"></i> <i class="iconfont icon-shanchu"></i> </view> <!-- 文章內(nèi)容區(qū),富文本編輯器 --> <editor id="editor" class="ql-container" placeholder="{{placeholder}}" showImgSize showImgToolbar showImgResize> </editor> <!-- 發(fā)布按鈕 --> <view class="button" bindtap="formSubmit">發(fā)布</view> </view> </view> </view> </view>
在article.wxss,書寫基本的樣式:
page{ width: 740rpx; margin: 0 auto; background-color: #f9f9f9; } .title { border: 1rpx solid #f2f2f2; margin: 10rpx; height: 70rpx; line-height: 70rpx; border-radius: 10rpx; } .picker{ padding: 10rpx; } .wrapper { padding: 5px; } .iconfont { display: inline-block; padding: 8px 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; } .ql-container { box-sizing: border-box; padding: 12px 15px; width: 100%; min-height: 30vh; height: auto; background: #fff; margin-top: 20px; font-size: 16px; line-height: 1.5; border: 1rpx solid #f2f2f2; border-radius: 15rpx; } .button{ width: 360rpx; height: 80rpx; line-height: 80rpx; text-align: center; margin: auto; margin-top: 50rpx; border-radius: 8rpx; font-size: 32rpx; color: white; background-color: #497749!important; }
這時我們會發(fā)現(xiàn)中間的操作列圖示不顯示,我們需要在article.wxss 中頭部引入iconfont.wxss 字型圖示。 iconfont.wxss 檔案取得網(wǎng)址
@import "./assets/iconfont.wxss";
3. 實作編輯區(qū)操作列的功能
本文只實作操作列的功能,實作富文本編輯,其他文章類型的選擇,請自行實現(xiàn),不難哦!
首先,我們需要取得富文本編輯器實例EditorContext,透過wx.createSelectorQuery 獲取,我們在頁面Page 函數(shù)中,建立onEditorReady 函數(shù),用於取得該實例:
onEditorReady() { const that = this wx.createSelectorQuery().select('#editor').context(function (res) { that.editorCtx = res.context }).exec() }
然後將該方法綁定到富文本編輯器的bindready屬性上,隨著富文本編輯器初始化完成後觸發(fā),從而取得實例。
<editor id="editor" class="ql-container" placeholder="{{placeholder}}" showImgSize showImgToolbar showImgResize bindstatuschange="onStatusChange" read-only="{{readOnly}}" bindready="onEditorReady">
3.1. 實作文字加粗、斜體、文字下劃線、左對齊、居中對齊、右對齊
我們?nèi)绾涡薷奈淖值臉邮侥兀?
- 透過 EditorContext 實例提供的API:
EditorContext.format(string name, string value)
,進(jìn)行樣式修改。 name
:CSS屬性;value
:值。
透過查閱微信小程式開發(fā)文件可知,實現(xiàn)上述功能,我們需要的name
和value
的值為:
那我們要如何透過點擊按鈕,來修改文字樣式呢?
- 首先我們在圖示
<i>
標(biāo)籤上綁定name
和value
屬性,填入圖標(biāo)所對應(yīng)上圖的name
和value
,無value
的不填即可。 - 然後在父標(biāo)籤上綁定事件 format,透過該事件函數(shù),使用
EditorContext.format
API# 進(jìn)行樣式修改。
<view class='toolbar' bindtap="format"> <i class="iconfont icon-zitijiacu data-name="bold"></i> <i class="iconfont icon-zitixieti data-name="italic"></i> <i class="iconfont icon-zitixiahuaxian data-name="underline"></i> <i class="iconfont icon-zuoduiqi data-name="align" data-value="left"></i> <i class="iconfont icon-juzhongduiqi data-name="align" data-value="center"></i> <i class="iconfont icon-youduiqi data-name="align" data-value="right"></i> </view>
Page 函數(shù)中的format 函數(shù):
format(e) { let { name, value } = e.target.dataset if (!name) return this.editorCtx.format(name, value) },
問題:當(dāng)我們點擊圖示時,改變了文本樣式,但是圖示的樣式?jīng)]有改變,無法提示我們文字現(xiàn)在的樣式狀態(tài),那該怎麼解決呢?
- 這時候我們就需要動態(tài)改變字體圖示的樣式了,例如點擊圖示後,改變顏色。
透過查閱editor 微信小程式開發(fā)相關(guān)文件後,bindstatuschange 屬性綁定的方法,會在當(dāng)你透過Context 方法改變編輯器內(nèi)樣式時觸發(fā),會傳回選取範(fàn)圍已設(shè)定的樣式。
那麼我們可以在 data 中,新增 formats 對象,儲存點擊後的樣式屬性。然後在點擊圖示按鈕時,透過bindstatuschange 綁定的方法,得到已設(shè)定的樣式儲存到formats 中;在模板渲染時,在<i>
的class 屬性上,加上{{formats.align === 'right' ? 'ql-active' : ''}}
(如文字向右),當(dāng)你點擊了這個圖標(biāo),那麼formats 中就有這個屬性了,那就加入我們的動態(tài)類別名稱ql-active 改變圖標(biāo)顏色。
具體實現(xiàn)
- 對 editor 標(biāo)簽屬性 bindstatuschange 綁定方法 onStatusChange
<editor id="editor" class="ql-container" placeholder="{{placeholder}}" showImgSize showImgToolbar showImgResize bindstatuschange="onStatusChange" read-only="{{readOnly}}" bindready="onEditorReady">
onStatusChange(e) { const formats = e.detail this.setData({ formats }) }
- 在圖標(biāo)
<i>
標(biāo)簽上,添加{{formats.align === 'right' ? 'ql-active' : ''}}
<i class="iconfont icon-zitijiacu {{formats.bold ? 'ql-active' : ''}}" data-name="bold"></i> <i class="iconfont icon-zitixieti {{formats.italic ? 'ql-active' : ''}}" data-name="italic"></i> <i class="iconfont icon-zitixiahuaxian {{formats.underline ? 'ql-active' : ''}}" data-name="underline"></i> <i class="iconfont icon-zuoduiqi {{formats.align === 'left' ? 'ql-active' : ''}}" data-name="align" data-value="left"></i> <i class="iconfont icon-juzhongduiqi {{formats.align === 'center' ? 'ql-active' : ''}}" data-name="align" data-value="center"></i> <i class="iconfont icon-youduiqi {{formats.align === 'right' ? 'ql-active' : ''}}" data-name="align" data-value="right"></i>
- 在 article.wxss 添加 ql-active 類
.ql-active { color: #497749; }
3.2. 實現(xiàn)撤銷、恢復(fù)、插入圖片、刪除操作
首先在 <i>
標(biāo)簽上綁定相應(yīng)的事件:
<i class="iconfont icon-undo" bindtap="undo"></i> <i class="iconfont icon-redo" bindtap="redo"></i> <i class="iconfont icon-charutupian" bindtap="insertImage"></i> <i class="iconfont icon-shanchu" bindtap="clear"></i>
撤銷 undo
調(diào)用 EditorContext API 即可
undo() { this.editorCtx.undo() }
恢復(fù) redo
同理
redo() { this.editorCtx.redo() }
插入圖片 insertImage
同理
insertImage() { const that = this wx.chooseImage({ count: 1, success: function (res) { wx.showLoading({ title: '正在上傳圖片', }) wx.cloud.uploadFile({ cloudPath: `news/upload/${time.formatTime(new Date)}/${Math.floor(Math.random() * 100000000)}.png`, // 上傳至云端的路徑 filePath: res.tempFilePaths[0], success: cover => { that.editorCtx.insertImage({ src: cover.fileID, data: { id: cover.fileID, role: 'god' }, success: function () { wx.hideLoading() } }) } }) } }) }
清空 clear
同理
clear() { this.editorCtx.clear({ success: function (res) { console.log("clear success") } }) }
【相關(guān)學(xué)習(xí)推薦:小程序?qū)W習(xí)教程】
以上是微信小程式實戰(zhàn)專案之富文本編輯器實現(xiàn)的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

閒魚官方微信小程式悄悄上線,在小程式中可以發(fā)布閒置與買家/賣家私訊交流、查看個人資料及訂單、搜尋物品等,有用好奇閒魚微信小程式叫什麼,現(xiàn)在快來看一下。閒魚微信小程式叫什麼答案:閒魚,閒置交易二手買賣估價回收。 1、在小程式中可以發(fā)布閒置、與買家/賣家私訊交流、查看個人資料及訂單、搜尋指定物品等功能;2、在小程式的頁面中有首頁、附近、發(fā)閒置、訊息、我的5項功能;3、想要使用的話必要要開通微信支付才可以購買;

實現(xiàn)微信小程式中的圖片濾鏡效果隨著社群媒體應(yīng)用程式的流行,人們越來越喜歡在照片中應(yīng)用濾鏡效果,以增強(qiáng)照片的藝術(shù)效果和吸引力。在微信小程式中也可以實現(xiàn)圖片濾鏡效果,為使用者提供更多有趣和創(chuàng)意的照片編輯功能。本文將介紹如何在微信小程式中實現(xiàn)圖片濾鏡效果,並提供具體的程式碼範(fàn)例。首先,我們需要在微信小程式中使用canvas元件來載入和編輯圖片。 canvas元件可以在頁面

實現(xiàn)微信小程式中的下拉式選單效果,需要具體程式碼範(fàn)例隨著行動互聯(lián)網(wǎng)的普及,微信小程式成為了網(wǎng)路開發(fā)的重要一環(huán),越來越多的人開始關(guān)注和使用微信小程式。微信小程式的開發(fā)相比傳統(tǒng)的APP開發(fā)更加簡單快捷,但也需要掌握一定的開發(fā)技巧。在微信小程式的開發(fā)中,下拉式選單是一個常見的UI元件,實現(xiàn)了更好的使用者操作體驗。本文將詳細(xì)介紹如何在微信小程式中實現(xiàn)下拉式選單效果,並提供具

閒魚官方微信小程式已經(jīng)悄悄上線,它為用戶提供了一個便捷的平臺,讓你可以輕鬆地發(fā)布和交易閒置物品。在小程式中,你可以與買家或賣家進(jìn)行私訊交流,查看個人資料和訂單,以及搜尋你想要的物品。那麼閒魚在微信小程式中究竟叫什麼呢,這篇教學(xué)攻略將為您詳細(xì)介紹,想要了解的用戶們快來跟著本文繼續(xù)閱讀吧!閒魚微信小程式叫什麼答案:閒魚,閒置交易二手買賣估價回收。 1、在小程式中可以發(fā)布閒置、與買家/賣家私訊交流、查看個人資料及訂單、搜尋指定物品等功能;2、在小程式的頁面中有首頁、附近、發(fā)閒置、訊息、我的5項功能;3、

微信小程式實現(xiàn)圖片上傳功能隨著行動網(wǎng)路的發(fā)展,微信小程式已經(jīng)成為了人們生活中不可或缺的一部分。微信小程式不僅提供了豐富的應(yīng)用場景,還支援開發(fā)者自訂功能,其中包括圖片上傳功能。本文將介紹如何在微信小程式中實作圖片上傳功能,並提供具體的程式碼範(fàn)例。一、前期準(zhǔn)備工作在開始編寫程式碼之前,我們需要先下載並安裝微信開發(fā)者工具,並註冊成為微信開發(fā)者。同時,也需要了解微信

實現(xiàn)微信小程式中的圖片旋轉(zhuǎn)效果,需要具體程式碼範(fàn)例微信小程式是一種輕量級的應(yīng)用程序,為用戶提供了豐富的功能和良好的用戶體驗。在小程式中,開發(fā)者可以利用各種元件和API來實現(xiàn)各種效果。其中,圖片旋轉(zhuǎn)效果是一種常見的動畫效果,可以為小程式增添趣味性和視覺效果。在微信小程式中實作圖片旋轉(zhuǎn)效果,需要使用小程式提供的動畫API。以下是一個具體的程式碼範(fàn)例,展示如何在小程

使用微信小程式實現(xiàn)輪播圖切換效果微信小程式是一種輕量級的應(yīng)用程序,具有簡單、高效的開發(fā)和使用特點。在微信小程式中,實作輪播圖切換效果是常見的需求。本文將介紹如何使用微信小程式實現(xiàn)輪播圖切換效果,並給出具體的程式碼範(fàn)例。首先,在微信小程式的頁面檔案中,新增一個輪播圖元件。例如,可以使用<swiper>標(biāo)籤來實現(xiàn)輪播圖的切換效果。在該組件中,可以透過b

實作微信小程式中的滑動刪除功能,需要具體程式碼範(fàn)例隨著微信小程式的流行,開發(fā)者在開發(fā)過程中經(jīng)常會遇到一些常見功能的實作問題。其中,滑動刪除功能是常見、常用的功能需求。本文將為大家詳細(xì)介紹如何在微信小程式中實現(xiàn)滑動刪除功能,並給出具體的程式碼範(fàn)例。一、需求分析在微信小程式中,滑動刪除功能的實作涉及以下要點:列表展示:要顯示可滑動刪除的列表,每個列表項目需要包
