我认为这是不可能的,但是为了防止它或某人有一个很好的技巧,是否有办法使用CSS定位某些角色?
例如,将段落中的所有字母z
设为红色,或者在我的特定情况下,在标有课程vertical-align:sup
的元素中的所有7
上设置chord
。
答案 0 :(得分:23)
嗨,我知道你在CSS中说过,但是每个人都告诉你,你不能,这是一个javascript解决方案,只需要2美分。
...最好
CSS
span.highlight{
background:#F60;
padding:5px;
display:inline-block;
color:#FFF;
}
p{
font-family:Verdana;
}
HTML 的
<p>
Let's go Zapata let's do it for the revolution, Zapatistas!!!
</p>
的javascript
jQuery.fn.highlight = function (str, className) {
var regex = new RegExp(str, "gi");
return this.each(function () {
this.innerHTML = this.innerHTML.replace(regex, function(matched) {return "<span class=\"" + className + "\">" + matched + "</span>";});
});
};
$("p").highlight("Z","highlight");
<强> 结果 强>
答案 1 :(得分:11)
这在CSS中是不可能的。你唯一的选择是first-letter
,这不会削减它。使用JavaScript或(如您在评论中所述),您的服务器端语言。
答案 2 :(得分:0)
在CSS中执行此操作的唯一方法是将它们包装在span中并为span提供一个类。然后以该类别为目标。
答案 3 :(得分:0)
据我了解,它仅适用于常规字符/字母。例如:如果我们要突出显示页面上的所有星号(\ u002A)符号,该怎么办。试过了
$("p").highlight("u\(u002A)","highlight");
在js中并在HTML中插入了*
,但是没有用。
答案 4 :(得分:0)
回复@ncubica 但评论太长,这里有一个不使用正则表达式并且不改变除文本节点之外的任何 DOM 节点的版本。请原谅我的 CoffeeScript。
# DOM Element.nodeType:
NodeType =
ELEMENT: 1
ATTRIBUTE: 2
TEXT: 3
COMMENT: 8
# Tags all instances of text `target` with <span class=$class>$target</span>
#
jQuery.fn.tag = (target, css_class)->
@contents().each (index)->
jthis = $ @
switch @.nodeType
when NodeType.ELEMENT
jthis.tag target, css_class
when NodeType.TEXT
text = jthis.text()
altered = text.replaceAll target, "<span class=\"#{css_class}\">$&</span>"
if altered isnt text
jthis.replaceWith altered
($ document).ready ->
($ 'div#page').tag '⚀', 'die'