HTML 自定義富文字設定行高

2021-10-08 18:18:02 字數 1964 閱讀 9475

問題:由於設定行高沒有類似設定字型或字型大小那樣,比如設定字型樣式

document.execcommand('stylewithcss', false, true)

document.execcommand('fontname', false, '微軟雅黑')

這就需要我們自己去實現行高的效果:

// 設定行距

export const lineheight = (value) =>

let range = selection.getrangeat(0)

// 選中區域的html

let outspan = document.createelement('span')

outspan.style.csstext = 'line-height: ' + value + ';display: inline-block;'

let content = setlineheight(outspan.innerhtml, value)

// 選取中的純文字

let txt = range.extractcontents().textcontent

let length = txt.length

if (length === 0)

// 刪除被選擇的內容

range.deletecontents()

// 建立新的元素

let span = document.createelement('span')

span.style.csstext = 'line-height: ' + value + ';display: inline-block;'

// 設定 span 內容

span.innerhtml = content

// 在被選擇的位置設定行距的元素

range.insertnode(span)

}// 設定指定行距

function setlineheight (content, value)

設定行距中遇到的問題:

問題一:設定完行距後,之前設定的樣式消失;

// 行距

export const lineheight = (value) =>

// 刪除被選擇的內容

range.deletecontents()

// 建立新的元素

let span = document.createelement('span')

span.style.csstext = 'line-height: ' + value + ';display: inline-block;'

// 設定 span 內容

span.innerhtml = txt

// 在被選擇的位置設定行距的元素

range.insertnode(span)

}

range.extractcontents().textcontent獲取的是選區中純文字內容,range.deletecontents()刪除選取內容,

range.insertnode(span)插入加有行距的內容,致使會在設定行距之前的樣式清除掉,這當然不符合我們的要求;

所以,需要獲取帶有樣式的內容range.clonecontents(),然後再插入到選區中。

問題二:行距只能在當前行距的基礎上設定大的行距,比如當前選區1.5倍行距只能設定2倍或更高,而不能設定1.5倍或更小行距;

span.style.csstext = 'line-height: ' + value + ';' 只設定行距時,會出現這種問題,加上display: inline-block;時,行距可自由設定;

span.style.csstext = 'line-height: ' + value + ';display: inline-block;'

因為span為行內元素,需要設定成block或 inline-block。

自定義dialog設定寬高

動態設定自定義dialog的顯示內容的寬和高 windowmanager m getwindowmanager display d m.getdefaultdisplay 為獲取螢幕寬 高 android.view.windowmanager.layoutparams p progressdialo...

百度富文字自定義 命令

以做過的替換表頭為例 首先,找到ueditor.all.js 新增一下 此 功能是 將table 表頭 替換為 一鍵替換表頭 command replacetable method execcommand param cmd 命令字串 example ue.commands replacetable...

cocos2dx js 實現自定義富文字

在做遊戲的時候,有乙個特殊的需求引擎沒有直接提供。一段label有一部分是其他顏色,例如 乙隻 優雅 的 攻城獅 上面這個label,一般想到的常規方式是 用四個label拼接,放到不同的位置。其實richtext是提供了這種功能的,用設定好的四個richelementtext就能實現。但是相對來說...