如果元素具有特定类,是否可以在 CSS 中定义不应用样式?

Is it possible to define in CSS NOT to apply style if element have certain class?

我有一个应用程序,其中样式定义为

select { 
    border: 1px solid #6FA7D1; 
    outline:0; 
    height:25px; 
    padding-left: 5px; 
    font-family:Arial; 
    font-size:12px; 
    transition: all 0.8s; 
    border-bottom-left-radius: 5px; 
    border-top-left-radius: 5px; 
    }

所以,每个 <select></select> 都会获得相同的样式,这是预期的,但是,我正在使用一些第三方插件,例如 jqGrid,我不想在 <select> 在 jqGrid 寻呼机中呈现。这个 <select> 有一些 class。 有什么方法可以告诉 CSS 不要将某些 class 应用于 DOM?

在jqGrid中请不要严格关注这个<select>,我有更多的情况可以使用这种排除。

http://jsfiddle.net/iaezzy/1s5g5mjn/

.element:not(.exclude) {
    background: green;
}
.exclude {
    background:red;
}

你不能,唯一的选择是:

  • <select> 样式放入 class,例如.select,然后将 <select class="select"> 添加到您要设置样式的所有元素。

  • 添加一个class,例如select-jqGrid,它覆盖了 select 的所有默认样式,并将其添加到 jqGrid 中的所有 <select> 元素。

您可以使用 :not selector 在某些情况下阻止应用程序,例如:

:not(selector) select

其中 selector 与 jQGrid idclass

相关

The negation CSS pseudo-class, :not(X), is a functional notation taking a simple selector X as an argument. It matches an element that is not represented by the argument. X must not contain another negation selector.

这基本上是说目标 select 元素不是 selector 的子元素(在本例中为 jQGrid)

您可以使用 :not 来排除匹配元素的任何子集。

:not(div) > span {
  color: red;
}
<span>Make me red!</span>
<div><span>...but not me...</span>
</div>

CSS3中的Can I write a CSS selector selecting elements NOT having a certain class?呢?

select:not(.someClass) {
    /* Styles */
}