I didn't know this was an issue until recently and now I'm slowly fixing it on my main project. I'd love your additional advice/pointers!
I didn't know this was an issue until recently and now I'm slowly fixing it on my main project. I'd love your additional advice/pointers!
The "getting started button" and "buy button" are both interaction buttons. (Similar buttons, but one is green and the other is yellow).
In Sass you represent that this way: 1. Placeholder %interaction-button class where you outline the fact that it has a border radius, color, and any other shared styling. 2. A button maker mixin where you put the colors that need to be changed, and any other flags (like has_sub_text: true for the unbold text) and then @extend's the placeholder above. 3. The classes ".buy-button {}" which include the mixin you made.
Also, is there a good place I can learn these kind of things? I'm a programmer trying to get better at CSS (SCSS now that we've setup the asset pipeline)—so far I've been reading random A List Apart and The Sass Way articles, but I feel like I could use a more holistic, in-depth understanding of CSS if there's a good book out there for that.
The best way to get better at Sass is to follow people who are active in the community (which unfortunately is not me). Start with Chris Coyier and Hampton Catlin and work your way from there.
If you don't mind me plugging my own talks, I have a few that are really good at learning Sass:
https://speakerdeck.com/liamdanger/why-your-sass-is-bad-and-...
https://speakerdeck.com/liamdanger/what-if-css-was-object-or...
http://csswizardry.com/2013/01/mindbemding-getting-your-head...
http://www.smashingmagazine.com/2012/04/16/a-new-front-end-m...
I'd say learn how CSS works first and really understand what it's doing. However, Sass can help you write very maintainable efficient styled code.
I will always recommend using Sass, but only if you know what CSS you're making and know that it matters what CSS is being output.
In practice however, the generated output isn't always the best, and it's worth a look over to make sure it's not generating slower selectors.
1) Don't use tag names in css
div.something should be .something
2) Don't use id's3) Isolate elements into logical components and name part of those components in the css.
<button class='button button-primary'><span class='button--icon-search'></span></button>