Хороший вопрос. Причина, по которой это происходит, является причиной наследования, а не специфичности.
Посмотрите на это так, если бы диапазон не имел этого класса, он унаследовал бы красный цвет от родительского элемента
, а "мир" был бы красным. Но учтите, что это связано с наследованием.
Когда вы устанавливаете цвет для диапазона через класс, который переопределяет унаследованное значение.
Специфика для определения, какое правило использовать в нескольких конкурирующих правилах. В вашем примере нет конкурирующих правил для , поэтому специфика не вступает в игру. Однако, если вы добавили это в свои стили:
#my_id span {color: orange}
вы увидите, что "мир" оранжевый, потому что специфика идентификатора больше, чем у класса.