Как уже говорили другие пользователи, использование классов - это хорошо, потому что это действительно упрощает вопрос совместимости браузера (проблемы возникают, когда вы пытаетесь использовать причудливые селекторы CSS 2).
Еще одна веская причина использовать простые селекторы на основе классов (или, если возможно, на основе идентификаторов) над сложными селекторами CSS 2 - это скорость.
Из google's "Оптимизировать отображение в браузере" , описания того, почему вы должны пытаться использовать простые селекторы (селекторы только для класса / только для идентификатора очень просты):
Селекторы потомков неэффективны, потому что для каждого элемента, который соответствует ключу, браузер должен также пройти вверх по дереву DOM, оценивая каждый элемент-предок, пока не найдет совпадение или не достигнет корневого элемента. Чем менее конкретен ключ, тем больше число узлов, которые необходимо оценить.
Дочерние и смежные селекторы неэффективны, потому что для каждого соответствующего элемента браузер должен оценить другой узел. Это становится вдвойне дорого для каждого дочернего селектора в правиле. Опять же, чем менее конкретен ключ, тем больше число узлов, которые необходимо оценить. Однако, хотя они неэффективны, они все же предпочтительнее, чем селекторы-потомки, с точки зрения производительности.
И специальное примечание о селекторах классов над селекторами-потомками из той же статьи:
Используйте селекторы классов вместо селекторов потомков.
Например, если вам нужны два разных стиля для упорядоченного элемента списка и упорядоченного элемента списка, вместо использования двух правил:
ul li {color: blue;}
ol li {color: red;}
Вы можете кодировать стили в два имени класса и использовать их в своих правилах; например:
.unordered-list-item {color: blue;}
.ordered-list-item {color: red;}
Если вы должны использовать селекторы-потомки, предпочтите дочерние селекторы, которые, по крайней мере, требуют оценки только одного дополнительного узла, а не всех промежуточных узлов до предка.