Почитайте про
специфичность селекторов css. Вы же в курсе, что каждый селектор имеет очки специфичности?
Если селекторы описаны одинаково, то они будут иметь одинаковые очки специфичности, и перекрытие свойств будет происходить по порядку следования селекторов в файле css (или в порядке подключения css в html). Вероятно, у вас такая ситуация:
.button-a
{
border-color: #0000ff;
}
.button-b
{
border-color: #00ff00;
}
/*Свойства этого селектора переопределяют вышестоящие селекторы, так как они все имеют одни и те же веса специфичности */
.buttons
{
border-color: #00ffff;
}
Чтобы решить вашу проблему, нужно либо строго соблюдать порядок описания селекторов:
.buttons
{
border-color: #00ffff;
}
.button-a
{
border-color: #0000ff;
}
.button-b
{
border-color: #00ff00;
}
Такой подход обойдется малыми усилиями и не нужно отходить от какой-нибудь принятой методологии именования классов, например, БЭМ, которая не позволяет усложнять селекторы.
Но если вы не следуете методологии, то можно наращивать специфичность селекторам, например, так:
.buttons.button-a
{
border-color: #0000ff;
}
.buttons.button-b
{
border-color: #00ff00;
}
/* Этот селектор не может перебить свойства вышестоящих селекторов, так как у него ниже вес специфичности */
.buttons
{
border-color: #00ffff;
}
В таком виде определения элементов, содержащих button-a и button-b можно писать в любом порядке, так как у них выше специфичность по сравнению с селектором, который содержит только класс buttons.