选择所有元素除了具有特定类的元素

时间:2015-12-14 08:43:23

标签: html css css3 css-selectors

我有以下css:

else element {node-name($node)}
             { 
                $node/@*[normalize-space(.)], 
                local:remove-empty-elements($node/node())
             }

我想选择页面中的所有元素,除了元素及其子类:not(.myid_templates_editor_element ){ margin: 0; padding: 0; list-style-type: none; font: 11px/16px 'Helvetica Neue', Helvetica, Arial, sans-serif; color: #444; } 。我上面的代码不起作用。我怎么用css做到这一点?

3 个答案:

答案 0 :(得分:3)

我需要HTML来解决这个问题。我可以考虑一个可能的案例:

你正在使用一些CSS框架,你自己的样式文件是之前的框架css文件。

在这种情况下,你应该修复它或尝试

:not(.myid_templates_editor_element){
    margin: 0 !important;
    padding: 0 !important;
    list-style-type: none !important;
    font: 11px/16px 'Helvetica Neue', Helvetica, Arial, sans-serif !important;
    color: #444 !important;
}

无论如何,你想要做的是一个非常糟糕的做法。

答案 1 :(得分:2)

根据我的理解,您希望将规则应用于DOM树中除.myid_templates_editor_element及其子项(.myid_templates_editor_element *)之外的每个元素。

然而,CSS :not does not support combination selectors,因此:not(.myid_templates_editor_element):not(.myid_templates_editor_element *)之类的内容是不可能的。

您需要找到一种解决方法,即将规则设置为所有元素,然后重置某些元素:

* {
    margin: 0;
    padding: 0;
    list-style-type: none;
    font: 11px/16px 'Helvetica Neue', Helvetica, Arial, sans-serif;
    color: #444;
}

.myid_templates_editor_element,
.myid_templates_editor_element * {
    margin: auto;
    padding: auto;
    ...
}

Here's an example in JSFiddle使用border-color。

答案 2 :(得分:1)

*{
color:red

}
:not(.myid_templates_editor_element){
    margin: 0;
    padding: 0;
    list-style-type: none;
    font: 11px/16px 'Helvetica Neue', Helvetica, Arial, sans-serif;
    color: green;
}
<div>
    first apply
</div>
<span>
first apply
</span>
<ul>
    <li>first apply</li>
</ul>
<div class="myid_templates_editor_element">
    not to apply on me
</div>