【问题标题】:CSS rule based on content [duplicate]基于内容的CSS规则[重复]
【发布时间】:2010-12-19 03:22:09
【问题描述】:

我想对包含特定单词的所有锚点应用不同的样式。可以用纯 CSS 完成吗?如果它是纯 CSS3 也没关系。

【问题讨论】:

    标签: css


    【解决方案1】:

    是的,CSS3 中有一个:contains 选择器。

    li:contains("special"){text-style: italic;}
    

    在本页下方约 1/2 处提及here

    这也是something you can also do with jQuery ...

    【讨论】:

    • 有趣,但仅适用于静态媒体“此选择器仅适用于静态媒体(即打印而非屏幕显示)。”
    • 啊,是的,我没有注意到这种细微差别.. 我明白为什么它是有道理的(也许)。感谢您发现这一点
    • :contains 选择器没有进入后来的规范。
    • 有效,我不相信!谢谢!
    • 不适用于 Chrome。
    【解决方案2】:

    没有。 :contains 曾被提出,但不在当前的 CSS3 选择器工作草案中。

    你需要一些 JavaScript,例如:

    for (var i= document.links.length; i-->0;)
        if (/\bSpecificWord\b/i.test(document.links[i].innerHTML)
            document.links[i].style.color= 'red';
    

    【讨论】:

    • 我真的希望他们现在已经解决了这个问题。很明显,通过其内容中的文字为元素设置样式是一个极其常见的问题。
    【解决方案3】:

    您可以match attribute values though。如果您使用自定义数据属性,它可能会得到您想要的。

    【讨论】:

    • 这个答案在 chrome 中工作得很好。 td[data-carrier="Verizon"] { color: #F00; } 生成td 单元格,其data-carrier 属性值为Verizon,颜色为Red
    • 这与为每个内容值创建单独的 CSS 类名称相同,例如。 '.carrier-verizon {color:red}'
    【解决方案4】:

    使用Hitch,这是一个小型 JS 库。您可以轻松地将基于内容的样式应用于任何元素。它有很多选项,非常适合条件样式。

    【讨论】:

    • Hitch 是死链接,它移动了吗?
    【解决方案5】:

    @bobince 帮帮我,我写了这段代码:

    var x = document.getElementsByTagName('TD');
    for (var i= x.length; i-->0;)
        if (x[i].innerHTML=='closed')
            x[i].parentNode.style.background= '#FEE';
    

    如果某些TD的内容是'close',那么TR的背景颜色会被标识为浅红色。

    【讨论】:

    • 我不认为通过括号符号访问 nodeList 是标准的。
    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    相关资源
    最近更新 更多