В чем специфика селектора атрибутов?
Мне интересно, какова специфика селектора атрибутов. Например:
- Id = 100 баллов
- Класс = 10 баллов
- Html Tag = 1 балл
Пример:
/* this specificity value is 100 + 10 + 1 = 111 */
#hello .class h2 { }
С помощью этого HTML:
<div class="selectform">
<input type="text" value="inter text">
<input type="text" value="inter text" class="inputag">
</div>
Какой из этих 2 селекторов более конкретный?
.selectform input[type="text"] { }
.selectform .inputbg { }
Проверить демонстрацию http://tinkerbin.com/IaZW8jbI
Ответы
Ответ 1
Селекторы атрибутов одинаково специфичны для селекторов классов.
В вашем примере первый селектор более специфичен, потому что есть дополнительный селектор типов input
, который заставляет его бить второй селектор.
Специфика каждого селектора рассчитывается следующим образом:
/* 1 class, 1 attribute, 1 type -> specificity = 0-2-1 */
.selectform input[type="text"] { }
/* 2 classes -> specificity = 0-2-0 */
.selectform .inputbg { }
Ответ 2
В общем, все типы селекторов одинаковы; имеет значение количество селекторов в выражении. Итак, ID = 1, class= 1 и HTML tag = 1.
В случае, если два селектора имеют одинаковую специфичность, тот, который далее находится в файле CSS, "выигрывает". Поэтому убедитесь, что вы заказываете ссылки на CSS от общего к конкретному; библиотеки, такие как jquery-ui.css, сначала идут, а ваши файлы CSS идут за ними.