HTML 5 number pickers are great, since they help restrict users to the input ranges required in certain cases. Some browsers add little up and down arrows to help the user step though numbers. On some browsers the pickers show by default even when the form inputs are not focused, which is a bit ugly. You can use CSS to turn off the number input arrows. Obviously you want to put them back on focus since they are meant to be there by default.
// Webkit: // Hide number picker input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } // Show number picker on focus input[type=number]:focus::-webkit-inner-spin-button, input[type=number]:focus::-webkit-outer-spin-button, input[type=number]:hover::-webkit-inner-spin-button, input[type=number]:hover::-webkit-outer-spin-button { -webkit-appearance: inner-spin-button; margin: 0 2px 0 0 ; } // Firefox: // Hide number picker input[type=number] { -moz-appearance:textfield; } // Show number picker on focus input[type=number]:focus, input[type=number]:hover { -moz-appearance:number-input; } // Note: Example is written in Sass not CSS!
There are a few ways of writing css. For consistency we will adopt only one naming convention. This is lowercase and hyphen separated. It is the most readable and fits well with other CSS methodologies that are covered below.
Yes
.hyphen-separated {...}
No
.camelCase {...} .underscore_separated {...} .alllowercase {...} .ALLUPPERCASE {...}
Keep your selectors short and with as low a specificity as possible. A maximum of three classes in your selectors is recommended. Why? Two reasons:
Yes
.my-thing { … } .my-main-thing .my-thing { … } .my-main-thing .my-space .my-thing { … }
No
.my-main-thing .my-sub-thing .my-space .my-thing { … }
Do not include one or mote #ID’s in your selectors…EVER. It’s too specific. Use #ID with javascript … but not styles.
So you like namespacing with #ID’s? Cool…namespacing is good, just do it with a class instead.
Yes
.my-thing { … }
No
#my-thing { … }
!important is ok in a very small number of circumstances. One example is error messages which always display the same way – red and bold. We don’t have a ...
calc() is a modern css function that allows you to do basic maths in a css file. You can use it to make semi fluid layouts with great ease. This means that you can have layouts with 1 fixed width column (or more) and the rest fluid. It doesn't just stop at columns, but that is the easiest and quickest example to discuss.
The setup of calc is very simple. If we take a 2 column layout as an example, the side column always has 200px of width, the main will take up the rest, so 100% less 200px!
/* Fixed columns */ .side { width: calc (200px); } .main { width: calc (100% - 200px); }
The only minor issue is support , which extends to almost all browsers except Android and Opera Mini which currently have no support and Blackberry which has partial. IE9+ all have full support.
So using it responsibly just needs some simple fallbacks. There are some compromises, but these are the same as any pre calc fluid layout.
/* Fixed columns with fallback */ .side { width: 20%; width ...
LiveReload is great a great tool for any web developer. One of the most useful of it's features is the ability to compile SASS on save. Unfortunatly the version of SASS that is included in LiveReload isn't the latest one and it just so happened that was the version I needed (3.2 alpha). Long story short, I updated the version of SASS that LiveReload uses on my machine. I'm not sure if it will break anything but backup your LiveReload App just in case. If you ever update LiveReload you will need to redo the process (unless the app is updated with the ability to choose the version of SASS). If you don't already use LiveReload or SASS then I would recommend taking a look into them.
Step by Step
First install the latest version of SASS on your machine using terminal
>sudo gem install sass --pre
Check that it has worked and see what the latest version is
>sass --version Sass 3.2.0.alpha.261 (Bleeding Edge)
Now ...