Html 重写id

Html 重写id,html,css,Html,Css,因此,我正在与另外三位程序员(其中两位比我更高级)一起进行一个项目,因此简单地更改结构/名称并不是一个切实可行的解决方案 我们有一个名为head\u subhead的id,其中应用了一些样式 所有页面都使用此模板(它在Drupal中),因此所有页面在结构中都有head\u subhead 我想,对于特定页面,覆盖#head#u subhead 我希望在不向页面主体或更高元素添加id的情况下执行此操作。我可以通过添加一个额外的类来实现这一点吗?我是否可以使用已经应用于页面正文(即pagename#

因此,我正在与另外三位程序员(其中两位比我更高级)一起进行一个项目,因此简单地更改结构/名称并不是一个切实可行的解决方案

我们有一个名为
head\u subhead
的id,其中应用了一些样式

所有页面都使用此模板(它在Drupal中),因此所有页面在结构中都有
head\u subhead

我想,对于特定页面,覆盖
#head#u subhead

我希望在不向页面主体或更高元素添加id的情况下执行此操作。我可以通过添加一个额外的类来实现这一点吗?我是否可以使用已经应用于页面正文(即pagename#head#subhead)的类,或者这样做没有用


不使用
覆盖#head#u subhead#最有效的方法是什么!重要信息

添加类不会起作用。ID的优先级更高。你甚至可以在这里看到

如果不使用任何选项,则只有一个答案,请删除id!其他方法已被您拒绝!比如
!重要信息
,将ID或类添加到父级。然后删除id以防止它。或者至少用这个

<element id="@if(condition == true) {<text>head_subhead</text>}"></element>

应用if-else块仅在某些条件为真时显示id;在您的情况下,这意味着仅在特定页面中显示


很抱歉,我使用了ASP.NET代码,您可以自己将代码类型更改为自己的。在不需要id的地方,您将删除该id

这里的问题是,您必须使用更大的特异性。您可以通过在原始css选择器之后调用被覆盖的css选择器来实现这一点,无论它是在同一文件的更下面(为什么),还是在创建原始css选择器之后包含的单独文件中

或者,您可以通过使用其他选择器(例如后代选择器,如:
.superclass\id
)来创建更高的特异性。例如,您可以在需要特殊样式的页面主体上放置一个特殊类,并将其用作选择器的
.superclass
部分


实际上,这就是为什么我在css代码中根本不使用ID的原因。在任何地方使用类都是一个更好的解决方案(我知道你说这对你的情况不可行,只是给出了我对这个主题的2%的意见)。

不要使用
!重要信息
要覆盖样式,您会发现很难处理样式表,使用
id
,选择器的首选项将高于
。如果要覆盖
id
,请使用更具体的选择器,如

#head_subhead .class p {
   styles here
}
分配给您要选择的元素,您可以不断添加越来越多的元素、类或ID,以使选择器更加具体

我可以使用已经应用于页面正文的类吗

是的,你可以,如果你只是针对那个页面

.page_body_class #head_subhead { /* CSS */ }
如果父div对于您希望css影响的页面是唯一的,那么您也可以将其作为目标

.some_parent_div_class #head_subhead { /* CSS */ }
但是如果你想经常使用它,只需在head_subhead元素中添加一个类

#head_subhead.extra_class { /* CSS */ }