html设置字号行高,【HTML】自定义富文本设置行高
问题:由于设置行高没有类似设置字体或字体大小那样,比如设置字体样式
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】自定义富文本设置行高相关推荐
- Tinymce 4富文本设置行高
由于是Tinymce 4 对于line height 这个插件不支持,只要版本5以上才可以,所以只能通过重新style的方法去实现, 添加 toolbar styleselect 重写 style, ...
- 如何通过VB合并Excel单元格以及设置Excel行高?VB创建Excel表格,合并单元格,生成图形等操作
如何通过VB合并Excel单元格以及设置Excel行高? 例如:我想把第一列的第4,5,6,7行合并...我在怎样让合并单元格里的字居中,怎样改变字体. 请不吝赐教... ============== ...
- html table设置行高_单元格的行高怎么设置 html语言怎么设置设置表格行高?
在Excel中,如何设置表格最合适的行高.列宽? 本次操作使用的软件为Excel电子表格,软件版本为office家庭和学生版2016. 小编只是难过不能陪你一起到老,再也没有机会,看到你的笑. 请问怎 ...
- POI java导出Excel设置自适应行高
本文章参考于:https://www.cnblogs.com/dtts/p/4741575.html 需求:根据单元格的内容自动设置行高 代码: /*** 设置自适应行高的方法*/public int ...
- poi设置excel行高
poi设置excel行高其实百度到处都是,不外乎就是 HSSFRow row = sheet.getRow(rowNum); row.setHeight(height); 但是有一个行高为0的行,如果 ...
- [Flex] 组件Tree系列 —— 运用variableRowHeight和wordWrap设置可变行高
mxml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <!--功能描述:运用variableRow ...
- html设置表格行高和列宽,怎么在腾讯文档中设置表格的行高和列宽
摘要 腾兴网为您分享:怎么在腾讯文档中设置表格的行高和列宽,云集,虚拟机,我的世界,卫星云图等软件知识,以及cad2009,kmp,mt4,usb转串口驱动,wifi吸粉,csgo动态组名,亿方云,单 ...
- Vue 自定义富文本编辑器 tinymce 支持导入 word 模板
自定义富文本编辑器分为前端项目和后端项目两个部分,首先先说一下前端项目 前端 前端项目地址: https://github.com/haoxiaoyong1014/editor-ui 编辑器名称: t ...
- quilleditor 字体大小设置_Quill 自定义富文本功能
前言 富文本是给输入的内容增加样式,Quill 提供 api 的方式去判断修改 DOM ,而不像很多其他的编辑器通过遍历 DOM 树的方式来做到这点.并且 Quill 支持定制化功能,接下来来了解下如 ...
最新文章
- 二叉树遍历的递归、非递归方法(前序、中序、后序,层序)——Java实现
- 正则表达式实现将html文本转换为纯文本格式(将html字符串转换为纯文本方法)
- springboot配置servlet容器的两种途径:配置文件及编码方式
- 吃饭、睡觉、打星星之“打星星”!
- cuda编程_CUDA刷新器:CUDA编程模型
- 【Python】TensorBoard已发送内容的清除
- c语言定义64位的变量,李洪强-C语言9-C语言的数据,变量和常量
- AutoCAD.net: 用于ObjectARX 开发的Visual Studio 智能感知文件
- 获取xcode下载地址的页面
- Springboot 1.x 连接Oracle 10.2数据库
- js 中的 number 为何很怪异 1
- 编译android4.4 报错error: call to '__property_get_too_small_error' declared with attribute 的处理 (转载)...
- 关于Apache Struts2远程执行任意命令漏洞的紧急通报
- 信息安全等级保护 实施方案
- SlickEdit 使用技巧大收集
- JAVA IO流读取中文出现乱码
- win10 请求操作需要提升解决方案
- 软件测试工作效率的衡量标准,软件测试人员绩效工作考核详细(33页)-原创力文档...
- 中国电子学会-全国青少年机器人技术等级考试标准 (1-6级)
- 怎样给CSDN博客添加微信二维码