2015-04-04 3 views
-1

Учитывая один элемент с классом и идентификатором; если я применил некоторый CSS с селектором классов к элементу и переопределял его с помощью CSS с селектором идентификаторов, применяется более поздний.Почему идентификатор селектора использует селектор классов?

<a class='abc' id='def' href="#"></a> 
<style> 
.abc{ 
    color:red; 
} 
#def{ 
    color:blue; 
} 
</style> 

Почему идентификатор-селектор использует преимущества селектора классов?

+1

ID возвращает только один элемент, поэтому поиск останавливается после нахождения идентификатора.Несколько элементов могут иметь один и тот же класс, поэтому поиск продолжается до конца DOM –

+1

То, что вы действительно спрашиваете, совсем не связано с jQuery, это просто специфика CSS – adeneo

+0

Но у меня есть один класс и один ID –

ответ

2

если я даю одинаковый стиль для класса и тот же стиль для Id, почему его взять ID Style

Это не имеет ничего общего с JQuery, и все, что делать с CSS Specificity.

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

Другими словами, некоторые селекторы имеют более высокий приоритет, чем другие, в этом порядке

  1. Инлайн стиль
  2. ID селекторы
  3. класса селекторов, псевдо-классы, атрибуты селекторов
  4. Универсальные селекторов

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

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

+0

И небольшой пример идеи: [скрипка] (http://jsfiddle.net/ccrv3cuh/1/). – Regent

+0

Не существует приоритета псевдоклассов над атрибутами над классом. Все они имеют одинаковый приоритет. – Alohci

+0

@Alohci: У вас будут владельцы MDN, чтобы обвинить в этом. Интересно, сколько читателей было введено в заблуждение этой статьей, и когда кто-то собирается вмешаться и исправить это. (Я говорю, что это полностью осознает, что [я часть проблемы] (https://en.wikipedia.org/wiki/Bystander_effect) ...) – BoltClock

0

код Ор не включает каких-либо JQuery/JavaScript на всех, так что один способ интерпретировать вопрос только с точки зрения CSS.

Но для того, чтобы ответить на это с точки зрения jQuery/javascript, вам нужно подумать о совместимости между браузерами.

Использование селектора ID в jQuery в основном переводит на vanilla-javascript document.getElementByID, который является довольно универсальным.

Использование селектора классов CSS в jQuery, однако, идеально переводится на ванильный javascript document.getElementsByClassName.

Но на самом деле это может быть больше, чем вы думаете.

Например, если вы отметили http://caniuse.com/#feat=getelementsbyclassname, вы можете видеть, что IE8 не поддерживает полностью getElementsbyClassName().

Задача jQuery заключается в том, чтобы сделать эти различия браузеров прозрачными.

Одним словом, чем сложнее ваш селектор, тем выше вероятность того, что jQuery необходимо преодолеть различия между браузерами.

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