CSS选择器匹配可能包含文本的每个元素?

时间:2014-01-10 20:32:31

标签: css css-selectors

有没有办法选择可能包含文字的元素?

这样的事情:

*:text {
   font-size: 12px;
}

我想将它用于我的reset.css,但我找不到如何操作的方法,所以现在我使用这段代码:

* {
   font-size: 12px;
}

此解决方案适用于所有基于文本的元素(例如STRONG,P,A等),但它也将此样式应用于非文本元素,如IMG,OBJECT等。

所以我想知道是否有其他解决方案为所有基于文本的元素设置CSS属性,但没有别的。

3 个答案:

答案 0 :(得分:3)

如果您只想设置imgobject等元素的样式,那么最简单的解决方案是直接在您的CSS中引用这些元素。

值得的是:empty选择器(伪类)。它不是你想要的,但它选择没有子元素的元素,包括文本节点。当然,它会涵盖img,但也是空的(原文!)p。旧浏览器可能不支持它。

答案 1 :(得分:2)

您无法根据包含文本的事实来定位元素,也不能使用css选择器。另一方面,您可以查看为文本设置所需的全局字体大小或样式的最佳方法。

用你已有的,

* {
   font-size: 12px;
}

这是将该样式分配给dom中的所有内容。您可能不会这么想,但它会将其应用到您的头部,正文,html以及页面上的任何标记。你可以选择几个选项,我会从最好到最差列出它们。

html, body { /* this allows the children to inherit this style */
   font-size: 12px;
}

body * { /* assigns this style to every tag inside of your body tag */
    font-size: 12px;
}

p, span, a, etc { /* you decided what tags would most likely contain text to apply that style */
    font-size: 12px;
}

* { /* the worst option, applying that style to every tag */
    font-size: 12px;
}

答案 2 :(得分:1)

我认为没有一种特定的方法可以使用伪选择器定位基于文本的元素,但这是了解伪类的更多信息的好地方: http://www.w3.org/TR/CSS2/selector.html#pseudo-class-selectors

这是一篇关于重置的好文章: http://www.css-reset.com/

创建CSS重置的一个很好的资源: http://www.cssreset.com/