2013-07-17 9 views
11

Powiedzmy, że masz następujący kod HTML:Jak mogę kierować reklamy na pola tekstowe za pomocą CSS?

<input /> 
<br /> 
<input type=text /> 

Oczywiście, w moim HTML będę mieć inny rodzaj pól wejściowych, jak również (pól, etc). Teraz chcę tylko stylować wejścia tekstowe.

Co znajdę przy szukaniu, jest wykonanie następujących czynności w CSS:

input[type=text] { background: red; } 

Do drugiego wejścia, gdzie atrybut jest wyraźnie obecny, to działa. Po pierwsze jednak działa w IE8, ale nie w IE10. Również nie w Chrome.

W jaki sposób mogę kierować wszystkie pola wprowadzania tekstu i tylko pole tekstowe, bez konieczności umieszczania wszędzie numeru type=text?

Możesz to zobaczyć w jsFiddle. Dla IE8, sprawdź these instructions, w jaki sposób dostać jsFiddle do pracy, ale wygląda to tak:

enter image description here

Odpowiedz

16

Jeśli chcesz móc pominąć type="text" i nadal możesz wybrać selektor , trzeba będzie użyć dostępnych not psuedoselector w CSS3:

input[type="text"], input:not([type]) { 
    ... 
} 

http://jsfiddle.net/dByqP/5/

To nie będzie działać w niższych wersjach IE, jak CSS3 nie jest dobrze obsługiwany w tych przeglądarkach.

Najlepszym rozwiązaniem byłoby przejrzeć i dodać type="text" do wprowadzanych tekstów i po prostu użyć oryginalnego selektora.

+1

Och, ale: nie tak by nie działało w Netscape lub IE 6 i wcześniejszych ... :-) –

+0

@ rodrigo-silveira http://lifehacker.com/5925287/dear-web-user-please-upgrade-your -browser: P – jbabey

+1

Świetny artykuł, @jbabey Przekażę go mojej babci, która nadal używa IE ... –

1

Jeden bolesne, ale pewny sposób mógłby zrobić, to ustawić styl na wprost

input { 
    /* ... */ 
} 

które skierowane byłoby wprowadzanie tekstu w każdej przeglądarce, a następnie można zrobić to, co robisz, i kierować każdy typ wejścia, które nie jest do wprowadzania tekstu:

input[type=range] {} 
input [type=phone] {} 
// etc. 

W ten sposób, nawet jeśli operator: not nie jest dostępny w CSS3, nie jest obsługiwany przez przeglądarkę, nadal możesz go uruchomić ...

+0

To działałoby, ale jest przeciwnie. W moim przypadku myślę, że wymagałoby to sporo pracy, ponieważ dla każdego rodzaju danych musiałbym robić wyjątki. Podczas gdy wszystko, co chcę zrobić, to styl elementów wprowadzania tekstu. – Peter

0

Style wejście przy użyciu klasy i CSS:

.redBG 
{ 
    background: red; 
} 

Wtedy twój HTML jest:

<input class="redBG" /> 

Dołączone jsFiddle.

+1

Cóż, jeśli możesz dodać klasę, możesz dodać typ ... – Brewal

+0

@Brewal moje myślenie jest możliwe, że potrzebny jest więcej niż jeden styl ... Być może podniosłem go źle! –

+0

Wadą tego podejścia jest to, że jeśli chcesz spojrzeć na całą twoją witrynę, musisz dodać klasę do wszystkich elementów wejściowych. Mój scenariusz nie jest więc odpowiedni. – Peter

1

Moja sugestia będzie mieć domyślny styl dla wejścia być

input { 
    background-color: red; 
} 

następnie zastąpić styl dla czegoś innego, jeśli to konieczne, na przykład niebieski przycisk

input[type='button'] { 
    background-color: blue; 
} 

oczywiście będzie trzeba przejść i określić określone style dla określonych typów danych wejściowych, ale to nie znaczy, że i tak byś tego nie zrobił, gdybyś chciał na przykład mieć unikatowy przycisk.

+0

Jak wspomniałeś, byłoby to dużo pracy. Podczas gdy chciałbym stylizować tylko elementy tekstu wejściowego, tutaj musiałbym wprowadzić wyjątki dla wszystkich pozostałych typów elementów. – Peter

+0

Tak, odpowiedź jbabey jest znacznie lepsza niż moja. Naprawdę muszę być na bieżąco z moim CSS XD – pandavenger

Powiązane problemy