如何手动将特定样式表中的样式应用于元素?

问题描述:

我有一个表单与各种样式表相关联。我有两个样式表,其中有select标签的样式。所以当我连接两个样式表时,它都会发生冲突。如何手动将特定样式表中的样式应用于元素?

例如

我有style1.css和style2.css其中包含选择标签样式。我有两个选择标签与ids select1和select2。

我只想要style1.css中的样式应用于select1和从style2.css到select2的样式。我该怎么做 ?

我无法指定这些特定ID的样式,因为它也会影响其他选择标签。

如何让不同样式表的样式仅在特定位置工作?

+2

,它不可能与客户端技术 - 一旦样式表被加载,它就不在我们手中。但是,如果您有可用的服务器端语言,则可以“合并”这些样式表并根据需要提供一个最终样式表。 – 2011-12-29 08:25:42

+0

如果不更改任一样式表中的CSS选择器,这是不可能的。 – Sjoerd 2011-12-29 08:26:01

您可以使用CSS3的:not()选择器。例如,在style2.css,你可以这样写:

select:not(#select1) { 
    // styling here will be applied to all selects except select1 
} 

但在现实中你应该把所有的造型为一个CSS文件中select标签。这样你可以更容易地控制冲突。

+0

非常好的解决方案,只有一个问题:IE8及更早版本不支持':not()'选择器。 IE9和其他浏览器支持它。 – psur 2011-12-29 08:51:01

CSS以这样的方式工作,即上次设置是最重要的。所以,你可以在最后的style2.css您可以定义样式select1第一链接style1.css,然后style2.css

#select1 
{ 
    /* styles */ 
} 

它不会影响任何其他元素,只select1

但通常你应该在一个样式表中合并样式。

您可以将style1 id的类名定义为class="style-one",然后通过将!important标记定义为元素样式来定义样式。 是这样的:

.style-one{border:none !important;} 

而且你可以在任何你正在使用的样式表,据我所知,这个类定义不改变顺序:)