html5中加亮文本,html实现高亮关键字

正则优化一:仅处理位于标签内的元素

1

2

3

4

5

6

var formatKeyword = text.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') // 转义处理keyword包含的特殊字符,如 /.

var finder = new RegExp(">.*?"++".*?

element.innerHTML = element.innerHTML.replace(finder,function(matched){

return matched.replace(text,"
"+text+)

})// 对提取的标签内文本进行关键字替换

以能解决大多数问题,但依旧存在的问题是,只要标签属性存在类似 < 符号,将会打破匹配规则导致正则提取内容错误, HTML5 dataset 可以自定义任意内容,故这些特殊字符是无法避免的。

1

替换

(推荐教程:html教程)

正则优化二:清除可能影响的标签

1

2

3

4

5

6

7

keyword

=》将闭合标签用变量替换

[replaced1]keyword[replaced2]//闭合标签内 id="keyword" 不会被处理

=》

[replaced1]keyword[replaced2]

=》将暂存变量 replaced 替换为原先标签

keyword

问题:如果 [replaced1] 包含 keyword, 那么替换时将发生异常。

最重要的,当标签值中包含 <> 符号时,此方法也不能正确的提取标签。

总之在经过了N多尝试之后,通过正则都没能有效的处理各种情况。然后换了个思路,不通过字符串的方式,通过节点处理。element.childNodes 可以最有效的清理标签内的干扰信息。

[完美解决方案]通过 DOM 节点处理

1

2

3

4

5

6

keyword 1

keyword 2

通过 parent.childNodes 得到所有子节点。child 节点可以通过 innerText.replce(keyword,result) 的方式替换得到想要的高亮效果,如下: keyword 2 (递归处理:当child节点不含子节点时进行replace操作)。

但是 keyword 1 是属于文本节点,只能修改文本内容,无法增加 HTML,更无法单独控制其样式。而文本节点也不能转换为普通节点。

### 如何在HTML表格中设置背景图片 为了给HTML表格添加背景图片,推荐使用CSS来实现这一功能。通过这种方式不仅能够简化代码结构,还能更灵活地控制样式效果。 #### 使用内联样式定义背景图片 可以直接在`<table>`标签内部应用带有`style`属性的内嵌式CSS规则: ```html <table style="background-image:url('path_to_image.jpg');"> <!-- 表格内容 --> </table> ``` 这种方法简单直观,但是不利于维护和重用样式表[^2]。 #### 利用外部或内部样式表指定背景图像 更加优雅的做法是在单独的`.css`文件或者文档头部内的`<style>`区块里声明类选择器或ID选择器: ```css /* 外部/内部样式 */ .table-with-bg { background-image: url('/images/table-background.png'); } ``` 接着,在对应的HTML部分链接该样式: ```html <table class="table-with-bg"> <!-- 表格内容 --> </table> ``` 此方法有助于保持良好的分离关注点原则,并便于全局调整设计风格[^1]。 #### 设置固定背景图及其尺寸适应性考量 需要注意的是,当设定`background-attachment: fixed;`时,可能会遇到一些浏览器兼容性和表现差异的问题。特别是对于较旧版本Internet Explorer的支持情况不佳;另外,这也会导致某些情况下无法正常工作于移动设备上。因此建议谨慎考虑是否真的需要锁定背景的位置不变[^3]。 此外,利用`background-size`属性可以帮助更好地管理背景图案填充整个区域的方式,不过要注意到并非所有主流浏览器都完全支持这个特性(尤其是低于IE9版)。所以应当测试目标平台上的实际渲染效果并作出相应优化措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值