2013-08-06 6 views
13

Ich habe einige input type diese SCSS Einstellung hat (aus dem Rahmen)SCSS/CSS-Selektor alle Eingabetypen auszuwählen

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)); 
} 

I außer Kraft setzen möchte/Reset alle, etwas ähnliches

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

oben funktioniert nicht, auch

textarea, 
    input, 
    { 
     @include box-shadow(none); 
    } 

nicht spezifisch genug. Gibt es eine Möglichkeit dies zu tun, als alle möglichen Typen aufzulisten.

Danke.

+0

was genau ist nicht spezifisch genug über 'Eingang' ohne einen Typqualifikator? Alle Eingabefelder haben einen Typ; Wenn es fehlt, wird standardmäßig "text" verwendet. – Spudley

+0

möglich Duplikat [SASS: Erstellen mixin für Eingabefelder] (http://stackoverflow.com/questions/13180807/sass-create-mixin-for-input-fields) – cimmanon

+0

Verwandte: http://stackoverflow.com/questions/17369600/using-SCSS-Sass-mixin-to-Return-a-string-Wert – cimmanon

Antwort

24

Es gibt eine Menge von möglichen Eingabetypen. Wenn Sie möchten, Textfelder und jede Eingabe, die einen Typ-Attribut dann hat ...

textarea, 
input[type] { 
    ... 
} 

Wenn Sie einige Eingabetypen ausschließen möchten dann den :not Selektor verwenden. EDIT Beispiel JSFIDDLEhttp://jsfiddle.net/Pnbb8/

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

} 

Aber wie ich schon sagte, es gibt wahrscheinlich noch viel mehr Arten Sie wollen nicht als Typen, die Sie wollen, so dass Sie nicht wirklich um die Liste zu vermeiden.

Man konnte immer stattdessen eine CSS-Klasse verwenden.

.box-shadowed 
{ 
    @include box-shadow(none); 
} 
+1

Sie nicht 'verwenden können: nicht()' wie in CSS - siehe http://stackoverflow.com/questions/10711730/ was-the-Differenz-in-the-nicht-Selektor-zwischen-jquery-and-css – BoltClock

+0

@BoltClock - Sie hatten Recht, dass meine Syntax falsch war, aber ich habe die Syntax korrigiert und Sie können Kette Nichtse wie: nicht ([type = Typ1]): nicht ([type = Typ2]) http://jsfiddle.net/Pnbb8/ es in der neuesten FF ausprobieren oder Chrome –

+0

ich weiß. Ich habe dasselbe in meiner eigenen Antwort auf die verbundene Frage gesagt. – BoltClock

1

Wird dies ausreichen?

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

input[type] { 
    border: 1px solid blue; } 
} 

Beide haben die gleiche Spezifität, so dass die letzte überschrieben wird.

See jsFiddle: http://jsfiddle.net/TheNix/T2BbG/

Eine andere Lösung wäre, das Element aus dem ersten Selektor ommit. Letzteres hätte eine höhere Spezifität - Sie sollten jedoch wissen, dass das erste in Bezug auf die Leistung einem universellen Selektor ähnelt (da es versucht, alle Elemente im DOM zu vergleichen, um nach dem Attribut zu suchen).

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

input[type="text"] { 
    border: 1px solid blue; } 
} 
Verwandte Themen