Writing selectors such as li.active are unnecessary unless the element name causes the class to behave
differently. In most cases, it's safe to remove the element name from the selector, both reducing the size of the
CSS as well as improving the selector performance (doesn't have to match the element anymore).
Removing the element name also loosens the coupling between your CSS and your HTML, allowing you to change the element on which the class is used without also needing to update the CSS.
div.mybox {
color: red;
}
.mybox li.active {
background: red;
}
/* Compliant: Two different elements in different rules with the same class */
li.active {
color: red;
}
p.active {
color: green;
}