The best way write CSS and HTML is to properly use all the techniques that are available to us.
CSS has "cascading" in it's name. It means that stylesheets may define rules that propagate to all the nodes in the hierarchy. It's a powerful system that sometimes may get pretty messy. If selectors are too specific, then there's a lot of code duplication. If selectors are too generic, then there're lots a of conflicts. The smart way to do it is to find balance.