使用哪个CSS选择器?

时间:2011-02-02 18:27:41

标签: javascript html css css-selectors

对于模糊的标题,我很抱歉,我无法在一行中描述我的问题。问题是关于页面标题,它是从公共后端模板生成的,这是

<h2 class='page-title'> {title} </h2>

其中{title}由应用程序动态生成。所以我会在同一个模板生成的网站的每个页面上都有一个。

  1. 关于页面:<h2 class='page-title'>About</h2>
  2. 服务页面:<h2 class='page-title'>Service</h2>
  3. 主页:<h2 class='page-title'>Home</h2>
  4. 我想要做的是,从3.主页隐藏它,但让它使用CSS或Javascript显示在所有其他页面上。我愚蠢地尝试了h1 {display:none},但这只是隐藏了一切,我只想隐藏<h2 class='page-title'>Home</h2>

    关于如何做到这一点的任何想法?

5 个答案:

答案 0 :(得分:3)

使用后端代码为主页标题指定特定ID,或在主页本身使用页内css:

h2.page-title { 
  display:none;
}

答案 1 :(得分:1)

您需要在主页上添加一个样式,或者有一个表示您当前正在查看主页的类:

h2.page-title是选择元素的非常具体的方式,但它会影响所有页面。

如果您知道该类只会发生在h2元素上,那么

.page-title就可以工作。

如果您在身体上使用课程,则可以执行以下操作:

body.frontpage h2.page-title

body.frontpage .page-title取决于您希望的具体方式。

我建议尽可能通用,以避免特异性问题。

答案 2 :(得分:1)

我会给你的<html>元素一个id(每页唯一):

<html id='{pageid}'>
...
<h2 class='page-title'> {title} </h2>
...
</html>

然后使用选择器

#home .page-title { display: none }

答案 3 :(得分:1)

如果您有CMS或类似的东西,将内容转储到单个模板中,那么我认为您最好使用javascript。我不知道css中的选择器是否为元素的innerText。

我经常使用jquery库 - 我会建议像:

$(document).ready(function() { 
    $("h2.page-title:contains('Home')").css('display', 'none'); 
}

答案 4 :(得分:1)

最好通过用于动态生成此语言的服务器端语言来完成,只需添加条件,如果页面为“Home”,则不输出任何内容。

如果这不是你的选择,我会建议Mel的方式,因为它只会工作,而且不需要javascript。

另外我认为Mel的代码应该高于你想要隐藏的h2,并包含在<style></style>标签中。