2010-05-09 6 views
61

У меня довольно большие проблемы, потому что мне нужно анафематизировать стилирование некоторых типов ввода. У меня было что-то вроде:CSS "и" и "или"

.registration_form_right input:not([type="radio") 
{ 
//Nah. 
} 

Но я тоже не хочу стилизовывать флажки.

Я пробовал:

.registration_form_right input:not([type="radio" && type="checkbox"]) 
.registration_form_right input:not([type="radio" && "checkbox"]) 
.registration_form_right input:not([type="radio") && .registration_form_right input:not(type="checkbox"]) 

Как использовать &&? И скоро мне нужно будет использовать ||, и я думаю, что использование будет таким же.

Update:
Я до сих пор не знаю, как использовать || и && правильно. Я не мог найти ничего в документах W3.

+11

* "anathematise" * Хлоп. Вы хотите угрожать людям, пытающимся установить флажки с возмездием devine? (Вы, вероятно, подразумевали «освобождение» или подобное, например «Мне нужно освободить некоторые типы ввода из правила стилизации».) –

+2

Ну, я не смог найти хороший перевод на фразовый глагол с моего языка;) – Misiur

+2

Я думаю @ T.J. Кроудер, вероятно, это понял. Но это было * смешно ... особенно ирония его орфографического «божественного» = D –

ответ

83

&& работ нанизывая-вместе нескольких селекторов, как-так:

<div class="class1 class2"></div> 

div.class1.class2 
{ 
    /* foo */ 
} 

Другой пример:

<input type="radio" class="class1" /> 

input[type="radio"].class1 
{ 
    /* foo */ 
} 

"||" работает путем разделения нескольких селекторов запятыми, как-так:

<div class="class1"></div> 
<div class="class2"></div> 

div.class1, 
div.class2 
{ 
    /* foo */ 
} 

Как примечание стороны, я бы не рекомендовал, используя «не» селектор, потому что оно не поддерживается Internet Explorer. На основании одного опроса 60% людей используют некоторую версию Internet Explorer, поэтому ваш сайт не будет работать для многих людей.

+0

Хорошо, спасибо за свет. Я ненавижу формы оформления, но это моя задача, и сайт не мой. Я буду применять классы для ввода. – Misiur

+4

Вот полезная схема того, что поддерживает Internet Explorer: http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx#selectors – geofflee

+4

Кто сейчас использует IE :) – Tarun

0

Я думаю, вы ненавидите писать больше селекторов и делить их запятой?

.registration_form_right input:not([type="radio"]), 
.registration_form_right input:not([type="checkbox"]) 
{ 
} 

и BTW это

not([type="radio" && type="checkbox"]) 

смотрит на меня больше как "вход, который не имеет обоих этих типов" :)

+2

Это не сработало бы, потому что первый селектор выберет все не 'radio', (но _would_ выберите« checkbox »), а второй сделает обратное. Объединение двух будет содержать как «checkbox», так и «radio». – Eric

+0

Этот первый пример не будет && вместе, он будет запускать для входов, которые не являются радиоприемниками для первого селектора, и входы, которые не являются флажками, что означает все входы :-) –

+0

Вы ошибаетесь. Затем первый применяется к второму, а во-вторых, к первому. – Misiur

29

И (&&):

.registration_form_right input:not([type="radio"]):not([type="checkbox"]) 

OR (||):

.registration_form_right input:not([type="radio"]), 
    .registration_form_right input:not([type="checkbox"]) 
+0

Nah, сбой тоже. Он будет применяться от 1 до 2 и от 2 до 1 – Misiur

+1

@ Misiur: Я не понимаю. – kennytm

+0

@KennyTM: Смотри. Использование запятой сделает что-то вроде этого: .registration_form_right input: not ([type = "radio"]) применим ко всему, включая флажок, и .registration_form_right: not ([type = "checkbox"]) будет применяться ко всему, в том числе радио – Misiur

3

Псевдокласс не поддерживается IE. Вместо этого я получил что-то вроде этого:

.registration_form_right input[type="text"], 
.registration_form_right input[type="password"], 
.registration_form_right input[type="submit"], 
.registration_form_right input[type="button"] { 
    ... 
} 

Некоторое дублирование там, но это небольшая цена за более высокую совместимость.

+0

Вы совершенно правы. Hovewer, лучше всего добавить класс для ввода. – Misiur

0

На всякий случай, если кто-то застрял как я. После того, как вы отправили сообщение, а некоторые ударили и пробовали , это сработало для меня.

input:not([type="checkbox"])input:not([type="radio"]) 
0

Вы можете как-то воспроизвести поведение «ИЛИ» с помощью & и: нет.

SomeElement.SomeClass [data-statement="things are getting more complex"] :not(:not(A):not(B))  { 
    /* things aren't so complex for A or B */ 
} 
+0

К сожалению,: not (: not) не является допустимым синтаксисом CSS. Однако он работает с jQuery. –

6

Чтобы выбрать свойства a И b из элемента в X:

X[a][b] 

Чтобы выбрать свойства a ИЛИ b из X элемента:

X[a],X[b] 
Смежные вопросы