2009-10-07 129 views
211

我正在處理一個CSS文件,並發現需要設置文本輸入框的樣式,但是,我遇到了問題。我需要所有這些元素相匹配的簡單聲明:css選擇器以匹配沒有屬性的元素x

<input /> 
<input type='text' /> 
<input type='password' /> 

...但不匹配這些的:

<input type='submit' /> 
<input type='button' /> 
<input type='image' /> 
<input type='file' /> 
<input type='checkbox' /> 
<input type='radio' /> 
<input type='reset' /> 

這是我想做些什麼:

input[!type], input[type='text'], input[type='password'] { 
    /* styles here */ 
} 

在上面的CSS中,請注意第一個選擇器是input[!type]。我的意思是我想選擇所有未指定類型屬性的輸入框(因爲它默認爲文本,但input[type='text']與它不匹配)。不幸的是,CSS3規範中沒有我能找到的選擇器。

有誰知道一種方法來完成這個?

回答

345

:不選擇

input:not([type]), input[type='text'], input[type='password'] { 
    /* style here */ 
} 

Support:在Internet Explorer 9和更高

+11

這是不支持IE6,IE7和可能不是在IE8 – 2009-10-07 19:08:52

+130

@Tim,話又說回來了,_is_支持哪些:使用selectivizr在過時的歌曲沒有選擇器在IE6,7和8 ... – priestc 2009-10-07 19:36:43

+1

@ nbv4,真正的dat,但看到我的答案。 – 2009-10-07 19:49:55

26

對於更多的跨瀏覽器解決方案,你可以樣式所有輸入你想要的非類型化的方式,文本和密碼,然後另一個樣式覆蓋收音機,複選框等的樣式。

input { border:solid 1px red; } 

input[type=radio], 
input[type=checkbox], 
input[type=submit], 
input[type=reset], 
input[type=file] 
     { border:none; } 

- 或 -

可能是您的代碼生成非輸入輸入的任何部分給他們一類像.no-type或根本不輸出?此外,這種選擇可以使用jQuery來完成。

+0

聰明的解決方案。將不得不更新爲新的html5類型(例如「電子郵件」) – TimoSolo 2012-07-25 14:12:42

+5

這是不一樣的;例如,如果您刪除邊框,Opera會從輸入中移除它的默認樣式。 – feeela 2013-01-25 14:12:14