2017-04-15 76 views
0

因此,我的主样式表为我的网站设置了所有样式。但我有一个div作为菜单打开。我需要它具有自己的风格,我不能拥有它,或者它是死亡主体固有的任何样式从主样式表。但是,当我重新设置风格后,我将它设计为一​​个全新的元素。我找到了all:initial;休息元素。和#we_gallery_edit_window> *种类的作品。但是,当我尝试声明新样式时,一些新样式因优先级而不会采用。这里是我的代码到目前为止:CSS重置div中的所有样式,但允许较低的样式重写它

h1 
{ 
    color: #000000; 
    background-color: #FFFFFF; 
} 
#my_div > * /*Clear all previous CSS for #mydiv only */ 
{ 
    all: initial; 
} 
.my_div_child h1 
{ 
    color: #F0F0F0; 
} 

<h1>Hello</h1> //Should be black with background 
<div id='my_div'> 
    <h1 class='my_div_child'>Good bye</h1> //Should be grey without background 
</div> 
<h1>Hello</h1> //Should be black with background 

我需要一个选择器,将覆盖它上面的一切,但没有任何优先权低于它。所以删除主div中的h1设置的样式,然后重置.my_div_child的h1。这不仅仅是我遇到麻烦的h1元素,而且这是我能想到的最简单的例子。

+0

您可以发布您的菜单的HTML? – cjl750

+0

不幸的是没有。大多数菜单是由PHP生成的,并且是一个非常长的代码。我将添加一个演示html。 – Zaper127

回答

0

好的,看到更新后的帖子后,我想我明白了。

我想你可能只是简单地使用了错误的选择器。如果您不确定,您可能会review CSS selectors

一件事,如果你想与班上my_div_child样式的h1,该规则将h1.my_div_child,或者干脆.my_div_child,如果你没有与类名其他非H1元素。使用.my_div_child h1将在类别为my_div_child的父容器中选择h1标签,这不是HTML显示的内容。

如果你想重置风格#my_div的孩子,你可以用通配符像你这样使用all: initial选择,但不是使用直接子选择器(>),只是窝定期通配符:

#my_div * { 
    all: initial; 
} 

如果您使用直接子选择器,只有#my_div中的第一级子女将被重置,但#my_div的孙子不会,这可能不是您想要的。

清除了这些东西,只需使用上述语句重置样式,然后根据需要开始设计#my_div的内容,并且它应该可以工作,因为各种标记(例如h1)将比通配符更具体。查看下面的代码片段。

这就是说,你可能会发现更容易简单地重写某些风格是不是你想要的,通过使用特异性比在#my_div重置一切并重新开始。赔率是菜单将与网站整体共享的一些样式。例如:

h1 { 
    font-style: italic; 
} 
#my_div h1 { 
    font-style: normal; 
} 

如果这些方法不起作用,而你仍然有你的风格不工作的麻烦,你必须张贴一些更具体的代码,这样我们就可以制定出了什么问题。

例复位:

html { 
 
    background-color: coral; 
 
    font-style: italic; 
 
    font-family: sans-serif; 
 
} 
 
h1 { 
 
    background-color: white; 
 
} 
 
#my_div * { 
 
    all: initial; 
 
} 
 
#my_div .my_div_child { 
 
    color: darkgray; 
 
    font-size: 4em; 
 
    /* note that font-style and font-family don't need rules b/c they have been reset by all: initial above */ 
 
}
<h1>Hello</h1> <!-- Should be black with background --> 
 
<div id="my_div"> 
 
    <h1 class="my_div_child">Good bye</h1> <!-- Should be grey without background --> 
 
</div> 
 
<h1>Hello</h1> <!-- Should be black with background -->