Всегда будет применяться селектор с наивысшей специфичностью . Любое неожиданное поведение будет связано с чем-то, влияющим на специфичность.
Так что это определенно не случайно, хотя вам может показаться так по какой-то причине.
С селекторами с таким же приоритетом, как в вашем примере, будет применяться последний найденный. Обратите внимание на то, что у него самый большой номер строки из всех найденных правил. Медиа-запрос влияет только на то, когда он будет применяться, и не влияет на его специфичность.
Возможно, порядок вашего CSS изменяется без вашего ведома (возможно, препроцессор ведет себя неожиданно?), Или вы, возможно, сами меняете порядок, не осознавая, что это влияет на специфичность. Также обратите внимание, что правила могут исходить из нескольких наборов правил, возможно, это вас тоже смущает? Если то, о чем я говорил, похоже, не вызывает доверия, определенно прочтите, как работает каскадирование .
Что касается вашего примера, не совсем понятно, чего вы пытаетесь достичь и какова реальная проблема, но совершенно точно, что оба медиа-запроса будут совпадать при ширине 500 пикселей. Похоже, вы этого не хотите, поэтому просто измените свои медиа-запросы:
@media (min-width: 501px) and (max-width:800px) {
/* Some Code */
}
@media (max-width:500px) {
/* Some Code */
}