问题:由于设置行高没有类似设置字体或字体大小那样,比如设置字体样式

document.execCommand('styleWithCSS', false, true)

document.execCommand('fontname', false, '微软雅黑')

这就需要我们自己去实现行高的效果:

// 设置行距

export const lineHeight = (value) => {

// 获取当前的选区

let selection = window.getSelection()

if (selection.rangeCount === 0) {

return

}

let range = selection.getRangeAt(0)

// 选中区域的html

let outSpan = document.createElement('span')

outSpan.style.cssText = 'line-height: ' + value + ';display: inline-block;'

outSpan.appendChild(range.cloneContents())

let content = setLineHeight(outSpan.innerHTML, value)

// 选取中的纯文本

let txt = range.extractContents().textContent

let length = txt.length

if (length === 0) {

return

}

// 删除被选择的内容

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) {

let reg = /line-height\s*:\s*(\d+(\.*\d+)?)/ig

let c = content.replace(reg, 'line-height: ' + value)

return c

}

设置行距中遇到的问题:

问题一:设置完行距后,之前设置的样式消失;

// 行距

export const lineHeight = (value) => {

// 选择范围

let range = getRange()

let txt = range.extractContents().textContent

let length = txt.length

if (length === 0) {

return

}

// 删除被选择的内容

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。

html设置字号行高,【HTML】自定义富文本设置行高相关推荐

  1. Tinymce 4富文本设置行高

    由于是Tinymce 4 对于line height 这个插件不支持,只要版本5以上才可以,所以只能通过重新style的方法去实现, 添加 toolbar  styleselect 重写 style, ...

  2. 如何通过VB合并Excel单元格以及设置Excel行高?VB创建Excel表格,合并单元格,生成图形等操作

    如何通过VB合并Excel单元格以及设置Excel行高? 例如:我想把第一列的第4,5,6,7行合并...我在怎样让合并单元格里的字居中,怎样改变字体. 请不吝赐教... ============== ...

  3. html table设置行高_单元格的行高怎么设置 html语言怎么设置设置表格行高?

    在Excel中,如何设置表格最合适的行高.列宽? 本次操作使用的软件为Excel电子表格,软件版本为office家庭和学生版2016. 小编只是难过不能陪你一起到老,再也没有机会,看到你的笑. 请问怎 ...

  4. POI java导出Excel设置自适应行高

    本文章参考于:https://www.cnblogs.com/dtts/p/4741575.html 需求:根据单元格的内容自动设置行高 代码: /*** 设置自适应行高的方法*/public int ...

  5. poi设置excel行高

    poi设置excel行高其实百度到处都是,不外乎就是 HSSFRow row = sheet.getRow(rowNum); row.setHeight(height); 但是有一个行高为0的行,如果 ...

  6. [Flex] 组件Tree系列 —— 运用variableRowHeight和wordWrap设置可变行高

    mxml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <!--功能描述:运用variableRow ...

  7. html设置表格行高和列宽,怎么在腾讯文档中设置表格的行高和列宽

    摘要 腾兴网为您分享:怎么在腾讯文档中设置表格的行高和列宽,云集,虚拟机,我的世界,卫星云图等软件知识,以及cad2009,kmp,mt4,usb转串口驱动,wifi吸粉,csgo动态组名,亿方云,单 ...

  8. Vue 自定义富文本编辑器 tinymce 支持导入 word 模板

    自定义富文本编辑器分为前端项目和后端项目两个部分,首先先说一下前端项目 前端 前端项目地址: https://github.com/haoxiaoyong1014/editor-ui 编辑器名称: t ...

  9. quilleditor 字体大小设置_Quill 自定义富文本功能

    前言 富文本是给输入的内容增加样式,Quill 提供 api 的方式去判断修改 DOM ,而不像很多其他的编辑器通过遍历 DOM 树的方式来做到这点.并且 Quill 支持定制化功能,接下来来了解下如 ...

最新文章

  1. 二叉树遍历的递归、非递归方法(前序、中序、后序,层序)——Java实现
  2. 正则表达式实现将html文本转换为纯文本格式(将html字符串转换为纯文本方法)
  3. springboot配置servlet容器的两种途径:配置文件及编码方式
  4. 吃饭、睡觉、打星星之“打星星”!
  5. cuda编程_CUDA刷新器:CUDA编程模型
  6. 【Python】TensorBoard已发送内容的清除
  7. c语言定义64位的变量,李洪强-C语言9-C语言的数据,变量和常量
  8. AutoCAD.net: 用于ObjectARX 开发的Visual Studio 智能感知文件
  9. 获取xcode下载地址的页面
  10. Springboot 1.x 连接Oracle 10.2数据库
  11. js 中的 number 为何很怪异 1
  12. 编译android4.4 报错error: call to '__property_get_too_small_error' declared with attribute 的处理 (转载)...
  13. 关于Apache Struts2远程执行任意命令漏洞的紧急通报
  14. 信息安全等级保护 实施方案
  15. SlickEdit 使用技巧大收集
  16. JAVA IO流读取中文出现乱码
  17. win10 请求操作需要提升解决方案
  18. 软件测试工作效率的衡量标准,软件测试人员绩效工作考核详细(33页)-原创力文档...
  19. 中国电子学会-全国青少年机器人技术等级考试标准 (1-6级)
  20. 怎样给CSDN博客添加微信二维码

热门文章

  1. 关于字符型变量和整形变量相互转换的问题
  2. 线性结构和非线性结构 - 数据结构基础
  3. MT5 EA交易期货-查询资金
  4. PHP微信小程序/抽奖小程序开源源码
  5. Pandas数据归一化
  6. 当shell命令键盘侠dadada!会的眨眨眼!
  7. linux minecraft 指令,linux中uptime命令
  8. 《中国经营报》:“科技业务”拆分独立 广西农信“带路”职能转变
  9. Linux命令 - less命令
  10. Linux C 判断文件是否存在,是否可读,可写,可执行