Возможно, аналогия поможет понять разницу:
<student id="JonathanSampson" class="Biology Calculus" />
<student id="MarySmith" class="Biology Networking" />
Студент ID карточки различны. Ни у одного студента в кампусе не будет одинаковой карточки студента ID . Тем не менее, многие студенты могут и будут делиться друг с другом хотя бы одним классом .
Можно назначить нескольких учеников под одним Классом , например, по биологии. Но ни в коем случае нельзя ставить нескольких учеников под одного ученика ID .
При подаче Правил по системе внутренней связи, вы можете передать Правила в Класс :
"Завтра все ученики должны надеть красную рубашку на урок биологии".
.Biology {
color: red;
}
Или вы можете дать правила конкретному ученику, позвонив по его уникальному ID :
«Джонатан Сэмпсон завтра наденет зеленую рубашку».
#JonathanSampson {
color: green;
}
В этом случае Джонатан Сэмпсон получает две команды: одну в качестве студента на уроке биологии, а другую в качестве прямого требования. Поскольку Джонатану было велено напрямую через атрибут id носить зеленую рубашку, он проигнорирует предыдущую просьбу надеть красную рубашку.
Победят более конкретные селекторы.