使用CSS设置某些字符的样式

时间:2013-04-18 19:27:39

标签: css

我认为这是不可能的,但是为了防止它或某人有一个很好的技巧,是否有办法使用CSS定位某些角色?

例如,将段落中的所有字母z设为红色,或者在我的特定情况下,在标有课程vertical-align:sup的元素中的所有7上设置chord

5 个答案:

答案 0 :(得分:23)

嗨,我知道你在CSS中说过,但是每个人都告诉你,你不能,这是一个javascript解决方案,只需要2美分。

...最好

JSFiddle

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");

<强> 结果 enter image description here

答案 1 :(得分:11)

这在CSS中是不可能的。你唯一的选择是first-letter,这不会削减它。使用JavaScript或(如您在评论中所述),您的服务器端语言。

答案 2 :(得分:0)

在CSS中执行此操作的唯一方法是将它们包装在span中并为span提供一个类。然后以该类别为目标。

答案 3 :(得分:0)

据我了解,它仅适用于常规字符/字母。例如:如果我们要突出显示页面上的所有星号(\ u002A)符号,该怎么办。试过了 $("p").highlight("u\(u002A)","highlight");在js中并在HTML中插入了&#42;,但是没有用。

答案 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'