2014-09-23 3 views
1
.formWrap input[type="text"] { 
    font-size: 12px;  
} 

.bigger { 
    font-size: 14px 
} 

<div class="formWrap"> 
    <input type="text" class="bigger" /> 
</div> 

Почему вышесказанное не делает текст поля ввода 14px?CSS presedence селектора над классом

Когда я использую селектор input[type="text"], как я могу настроить таргетинг на определенный класс, который является дочерним элементом formWrap?

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

ответ

3

Первый селектор имеет более высокую специфичность, чем класс .bigger.

Для повышения специфичности класса .bigger, вы можете сделать это:

.formWrap input[type="text"]{ 
     font-size: 12px; 
} 

.formWrap input[type="text"].bigger{ 
     font-size: 14px 
} 

ИЛИ (не очень рекомендуется):

.bigger{ 
font-size: 14px !important; 
} 
+0

Хорошо, что похоже на работу – Kline

4

Ответ Specificity.

Ваш первый селектор имеет более высокий специфика, чем ваш второй селектор, поэтому его свойства имеют приоритет.

.formWrap input[type="text"] содержит класс, в элемент и атрибут селектора. В соответствии с спецификацией селекторов CSS (см. Выше) этот селектор имеет спецификацию 21. .bigger, с другой стороны, имеет только селектор класса и поэтому имеет только специфичность 10. 21 больше 10.

от MDN:

специфичности является средством, с помощью которого браузер решает, какие значения свойств являются наиболее релевантными для элемента и получает применяться. Специфика основана только на правилах сопоставления, состоящих из селекторов разного рода.

В вашем случае, простой способ получить второй селектор, чтобы иметь приоритет над первым является увеличением этого селектора, чтобы иметь равную или более высокую специфичность:

input.bigger {} /* 11 */ 

Вы даже можете повторить тот же селектор несколько раз (как и было отмечено в спецификации):

input.bigger.bigger {}    /* 21 */ 

Обратите внимание, что если специфика обоих селекторов равны, селектор включены позже в таблице стилей будет т он один приоритет.

+0

Вы, вероятно, объясняет, почему она имеет более высокую специфичность (потому что есть класс + селектор ребенка) по сравнению с только селектор класса. – enguerranws

+0

Хорошо, но как я могу скрыть стиль отдельных классов ввода, которые уже были разработаны с помощью стандартного стиля ввода? – Kline

+0

@Kline см. Мой отредактированный ответ. –

Смежные вопросы