SCSS/CSS选择器用于选择所有输入类型

bsr*_*bsr 22 css sass css-selectors

我有一些输入类型有这个scss设置(来自框架)

textarea,
input[type="text"],
input[type="password"],
input[type="datetime"],
...
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
{
  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
}
Run Code Online (Sandbox Code Playgroud)

我喜欢覆盖/重置所有类似的东西

textarea,
input[type="*"],
{
  @include box-shadow(none);
}
Run Code Online (Sandbox Code Playgroud)

以上不起作用,也

textarea,
    input,
    {
      @include box-shadow(none);
    }
Run Code Online (Sandbox Code Playgroud)

不够具体.有没有办法做到这一点,而不是列出所有可能的类型.

谢谢.

Lou*_*cci 43

有很多可能的输入类型.如果你想要textareas和任何具有type属性的输入,那么......

textarea,
input[type] {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果要排除某些输入类型,请使用:not选择器. 编辑示例JSFIDDLE http://jsfiddle.net/Pnbb8/

textarea,
input[type]:not([type=search]):not([type=url]):not([type=hidden]) {

}
Run Code Online (Sandbox Code Playgroud)

但就像我说的那样,你想要的类型可能比你想要的类型要多得多,所以你无法真正避开这个列表.

您总是可以使用CSS类.

.box-shadowed
{
  @include box-shadow(none);
}
Run Code Online (Sandbox Code Playgroud)


Nix*_*Nix 5

这样就足够了吗?

input[type="text"] {
    border: 1px red;
}

input[type] {
    border: 1px solid blue; }
}
Run Code Online (Sandbox Code Playgroud)

它们都具有相同的特异性,因此最后一个覆盖。

参见jsFiddle:http : //jsfiddle.net/TheNix/T2BbG/

另一个解决方案是忽略第一个选择器中的元素。后者具有更高的特异性-但是,您应该知道,就性能而言,第一个类似于使用通用选择器(因为它尝试匹配DOM中的所有元素以检查属性)。

[type="text"] {
    border: 1px red;
}

input[type="text"] {
    border: 1px solid blue; }
}
Run Code Online (Sandbox Code Playgroud)