CSS选择父项为';t';类名';

CSS选择父项为';t';类名';,css,css-selectors,Css,Css Selectors,我的样式表中有以下规则: input:not([type='button']):not([type='submit']):not([type='checkbox']):not([type='radio']), select { padding:8px; width:224px; border:1px solid #CCC; border-radius:5px; } 这针对我页面上的所有文本字段,但我需要防止它影响具有特定类的元素内的输入。我使用的是ckedito

我的样式表中有以下规则:

input:not([type='button']):not([type='submit']):not([type='checkbox']):not([type='radio']),
select {
    padding:8px;
    width:224px;
    border:1px solid #CCC;
    border-radius:5px;
}
这针对我页面上的所有文本字段,但我需要防止它影响具有特定类的元素内的输入。我使用的是ckeditor,不需要影响它创建的对话框中的字段——这意味着我不能只是在之后覆盖规则


我尝试过添加
:不是(.cke\u编辑器\u页面内容\u对话框输入)
,但由于明显的原因,这不起作用。我似乎在任何地方都找不到这个问题的答案

正确的方法可能是使用“白名单”方法而不是“黑名单”方法(告诉浏览器不要选择什么)

首先,它可以避免您遇到的问题。另外,
:not()
选择器在IE8或更低版本中不起作用(不确定这是否重要)。最后(只是一个猜测),我不得不相信复杂的
:not
语句的评估成本更高

我建议将显式类名放在所讨论的元素上,或者更好的做法是将所有非编辑器元素包装在一个元素中,并将其用作样式容器

<div class="myStyles">
    <!-- elements that should be styled -->
    <input type="text" />
</div>

.myStyles input[type="text"]{
    padding:8px;
    width:224px;
    border:1px solid #CCC;
    border-radius:5px;
}

.myStyles输入[type=“text”]{
填充:8px;
宽度:224px;
边框:1px实心#CCC;
边界半径:5px;
}

我意识到这可能需要更多的标记,但从长远来看,它可能更容易维护。

这样一个冗长而复杂的选择器从长远来看将很快变得无法维护

在要以相同方式设置样式的元素上添加一个公共类,将更容易、更简洁

.text-field {
    padding:8px;
    width:224px;
    border:1px solid #CCC;
    border-radius:5px;
}

我知道已经给出了更好的答案,但只是为了记录在案,并补充蒂姆的答案

如果要使用具有
type=“text”
或根本没有
type
属性的输入,请使用此选择器:

input:not([type]), input[type='text']

你就不能在它们上面添加一个普通类吗?我真不敢相信我没有想到这一点-是的,我可以,尽管有很多地方我需要添加它,所以如果有办法使用:not()来实现这一点就好了。这样长而复杂的选择器很快就会变得无法维护。从长远来看,添加这些类可能更容易、更快。是的,你可能是对的。谢谢你的建议,如果你想在下面添加答案,我会接受的