html渲染的文字样式大小不统一解决方案

React Hooks 封装可粘贴图片的输入框组件(wangeditor)_react 支持图片拖拽的输入框-CSDN博客

这篇文章中的wangediter可粘贴图片的输入框,输入的文字和粘贴的文字在dangerouslySetInnerHTML渲染后出现了字体不统一的情况

在html中右键检查可以看到粘贴后的文字没有标签为文本节点#text,而在输入框中输入的则在p标签中 自然字体字号样式就不统一了

那么只要让#text也被p标签或者span标签包着 就可以自定义样式啦

我这里用的是找到某个类名下所有的文本节点#text,然后把文本节点替换为其父元素中的span元素,下面是方法:(含注释噢~适合中国宝宝体质阅读的代码片段!)

 function wrapTextNodesInSpanExcept(selector,excludeClass,spanClass = "wrapped-text") {const questionDetails = document.querySelectorAll(selector);function wrapTextNode(node, excludeAncestor) {if (node.nodeType === Node.TEXT_NODE &&/\S/.test(node.nodeValue) &&!excludeAncestor) {const span = document.createElement("span");span.className = spanClass; // 设置span的类名// 将文本节点的文本内容设置到span中span.textContent = node.nodeValue;// 替换文本节点为其父元素中的span元素node.parentNode.replaceChild(span, node);} else if (node.nodeType === Node.ELEMENT_NODE) {// 检查当前元素或其祖先是否有excludeClasslet exclude = false;for (let el = node;el && el !== document.body;el = el.parentElement) {if (el.classList.contains(excludeClass)) {exclude = true;break;}}// 递归处理元素节点的子节点Array.from(node.childNodes).forEach((childNode) => {wrapTextNode(childNode, exclude);});}}questionDetails.forEach((questionDetail) => {// 从question-detail元素开始递归,并传入false作为excludeAncestor的初始值Array.from(questionDetail.childNodes).forEach((childNode) => {wrapTextNode(childNode, false);});});}// 调用函数,为question-detail下的除了question-file类下的所有文本节点添加span标签wrapTextNodesInSpanExcept(".question-detail", "question-file");

加了一点额外的小处理就是后面发现我需要替换的是question-detail下的除了question-file类下的所有文本节点,如果不需要传空就ok,然后在样式中给这个类名或者span标签写样式就OK了!

结果展示:无论你粘贴 输入 插入怎么样输入的文字 在html页面渲染的文字都会被统一啦

此时我觉得在这个页面上 我约等于秦 shi huang(我瞎说的)

又周五啦!下周五过十八周岁的生日!永远18!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/362961.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短视频利器 ffmpeg (2)

ffmpeg 官网这样写到 Converting video and audio has never been so easy. 如何轻松简单的使用: 1、下载 官网:http://www.ffmpeg.org 安装参考文档: https://blog.csdn.net/qq_36765018/article/details/139067654 2、安装 # 启用RPM …

基于Java微信小程序火锅店点餐系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

Dataease配置Nginx代理

Dataease配置Nginx代理 一.修改前端静态资源地址和后端接口地址 **1.**修改应用程序的上下文路径 配置文件地址:backend/src/main/resources 找到文件application-whole.properties,做如下修改: **2.**修改前端静态资源路径和打包配置 配…

【基于深度学习方法的激光雷达点云配准系列之GeoTransformer】——模型部分浅析(1)

【GeoTransformer系列】——模型部分 1. create_model2. model的本质3. 模型的主要结构3.1 backbone3.2 transformer本篇继续对GeoTransformer/experiments/geotransformer.kitti.stage5.gse.k3.max.oacl.stage2.sinkhorn/下面的trainval.py进行详细的解读,主要是模型部分, 可以…

【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板

目录 一、引言 二、TTS(text-to-speech)模型原理 2.1 VITS 模型架构 2.2 VITS 模型训练 2.3 VITS 模型推理 三、ChatTTS 模型实战 3.1 ChatTTS 简介 3.2 ChatTTS 亮点 3.3 ChatTTS 数据集 3.4 ChatTTS 部署 3.4.1 创建conda环境 3.4.2 拉取源…

MySQL一条SQL语句的执行过程

例:SELECT * FROM USERS WHERE age 18 AND name student; 执行过程如下图: 综合上面的说明,我们分析下这个语句的执行流程: 1、使用连接器通过客户端/服务器通信协议与MySQL建立连接,并查询是否有权限。 2、MySQL8.…

[电子电路学]电路分析基本概念1

第一章 电路分析的基本概念和基本定律 电路模型 反映实际电路部件的主要电磁性质的理想电路元件及其组合,是实际电路电气特性的抽象和近似。 理想电路元件 实际电路器件品种繁多,其电磁特性多元而复杂,分析和计算时非常困难。而理想电路元件…

C# 在WPF .net8.0框架中使用FontAwesome 6和IconFont图标字体

文章目录 一、在WPF中使用FontAwesome 6图标字体1.1 下载FontAwesome1.2 在WPF中配置引用1.2.1 引用FontAwesome字体文件1.2.2 将字体文件已资源的形式生成 1.3 在项目中应用1.3.1 使用方式一:局部引用1.3.2 使用方式二:单个文件中全局引用1.3.3 使用方式…

Linux基础 - 使用 vsftpd 服务传输文件

零. 简介 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的标准网络协议。 FTP 允许客户端和服务器之间进行文件的上传、下载、删除、重命名等操作。它基于客户端 - 服务器模型工作,通常使用 TCP 协议进行…

Arduino - Keypad 键盘

Arduino - Keypad Arduino - Keypad The keypad is widely used in many devices such as door lock, ATM, calculator… 键盘广泛应用于门锁、ATM、计算器等多种设备中。 In this tutorial, we will learn: 在本教程中,我们将学习: How to use key…

高性价比蓝牙耳机有哪些?2024超高性价比蓝牙耳机推荐

在2024移动互联网高速发展的时代,蓝牙耳机已成为我们生活中不可或缺的一部分。走在街头,低头看手机,滑动屏幕选歌,耳边传来清晰的旋律,这一幕已经成为现代生活的标配。但面对市场上琳琅满目的蓝牙耳机品牌和型号&#…

LabVIEW在光学与光子学实验室中的应用

光学与光子学实验室致力于光学和光子学前沿领域的研究,涉及超快光学、非线性光学、光纤通信、光子晶体等多个方向。实验室需要高精度的实验控制和数据采集系统,以进行复杂的光学实验,并对实验数据进行实时处理和分析。 项目需求 实时控制与监…

spring和springboot的关系是什么?

大家好,我是网创有方的站长,今天给大家分享下spring和springboot的关系是什么? Spring和Spring Boot之间的关系可以归纳为以下几个方面: 技术基础和核心特性: Spring:是一个广泛应用的开源Java框架&#…

码农:如何快速融入团队

问题: 码农如何快速融入团队? 记住一个标准:能干事、能抗事。 总结一个字: 靠谱。 适用范围:新手码农、老司机码农、测试、DBA、运维、产品经理、项目经理、架构师、技术专家、。。。。适用于任何行业的打工者。 下面要…

C++20中的Feature Test Mocros

C20定义了一组预处理器宏,用于测试各种语言和库的feature。 Feature Test Mocros(特性测试宏)是C20中引入的一种强大机制,用于应对兼容性问题。Feature Test Mocros作为预处理器指令(preprocessor directives)出现,它使你能够在编译过程中仔细…

江科大笔记—FLASH闪存

FLASH闪存 程序现象: 1、读写内部FLASH 这个代码的目的,就是利用内部flash程序存储器的剩余空间,来存储一些掉电不丢失的参数。所以这里的程序是按下K1变换一下测试数据,然后存储到内部FLASH,按下K2把所有参数清0&…

成熟ICT测试系统与LabVIEW定制开发的比较

ICT(In-Circuit Test)测试系统是电子制造行业中用于电路板(PCB)组件检测的重要工具。市场上有许多成熟的ICT测试系统,如Keysight、Teradyne、SPEA等公司提供的商用解决方案。此外,LabVIEW作为一种强大的图形…

python练习题2

python期考复习题 目录 1. 判断n**2的值每一位互不相同​编辑 2. 密码 3. 图书版号 4. 情感分类矩阵 5. 计算数对个数 1. 判断n**2的值每一位互不相同 def isdiff(n):sstr(n)for i in range(len(s)):for j in range(len(s)):if i!j:if s[i]s[j]:return Falsereturn Truel…

Windows和Linux C++判断磁盘空间是否充足

基本是由百度Ai写代码生成的,记录一下。实现此功能需要调用系统的API函数。 对于Windows,可调用函数GetDiskFreeSpaceEx,使用该函数需要包含头文件windows.h。该函数的原型: 它的四个参数: lpDirectoryName&#xff0…

Spring项目报错解读与全部报错详解

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner 🌹 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 想看更多 那就点个关注吧 我…