Breakpoint makes writing media queries in Sass super simple. Here's one:
I told you it was simple. Check it out. You can use that variable in the Breakpoint mixin like this.
That just did two things that are really helpful. First, we reduced the media query down to the one value that really matters here, the min-width value. (You can also build complex queries and override the defaults. We’ll get to those.) And second, we gave that media query a meaningful name. And once we start calling media queries by name we can start managing them systematically. Whoa.
Let’s add a few more.
And look at each in turn.
$high-tide uses the defaults. Pass Breakpoint just a number and it assumes you want it to write a min-width query.
$ex-presidents is made up of two numbers. When Breakpoint sees that it will turn that into a min-width/max-width query.
$surfboard-width is made up of a number and the name of a feature to test. Breakpoint will turn these into feature/value pairs6
$surfboard-height has a feature/value pair, and adds a second non-numeric pair. Breakpoint can interpret text-based tests and can string together as many queries as you need.
If creating a new project or adding to existing project, in config.rb
Import the breakpoint partial at the top of your working file
First, we set up our breakpoint variables.
Call the mixin and pass one of your breakpoint variables. You can also call it with a la carte arguments.
No Query Fallback
Breakpoint provides a way to generate fallback CSS for if you would like the CSS to apply even if media queries aren’t available. There are three methidologies we discovered cover most, if not all, of the stylistic options a user could have in a system like this: a wrapping selector within the same stylesheet, a seperate stylesheet with no wrapping selector, and a seperate stylesheet with a wrapping selector. For both of these, bare in mind that Sass cannot create separate stylesheets automatically (yet), so you’re going to need to do it by hand, but the tools we’ve provided are very powerful, so we think you’ll like.
There are now two new breakpoint flags to set that control no query support, $breakpoint-no-queries for specifying that only no query output should be output by Breakpoint and $breakpoint-no-query-fallbacks for specifying that you want no query wrappers to be printed. Both of the new flags, $breakpoint-no-queries and $breakpoint-no-query-fallbacks default to false, toggling them to true activates them. For the purposes of clarity in the following code samples, I’m including both flags even though the false flags are not explicitly needed. When passing in a wrapper, you must write the whole wrapper and may include a compound wrapper, i.e.'.no-mqs' or '#print' or '.high-dpi.no-mqs'. Variables may also be passed in, but they still require the whole wrapper.
Wrapping Selector, Same Stylesheet
No Wrapping Selector, Separate Stylesheet
Wrapping Selector, Separate Stylesheet
Media Query Context
Ever wanted to get the context of a media query from within a mixin or function? Well we have, so we’ve made that possible! Simply call the breakpoint-get-context($feature) function which will either return the contextual value for that feature (min-width, max-width, etc…) or false. You can then do all the awesomeness that you’ve ever wanted to do with that information.
Caviats with Media Query context:
If you have $breakpoint-to-ems set to true, you will get returns in base ems. You can run non-em based values through breakpoint-to-base-em($value) to convert them to base ems.
If you are testing for a prefixed feature (such as device-pixel-ratio), you need to test for the prefixed value (-webkit-device-pixel-ratio, min--moz-device-pixel-ratio, etc…).
Note re: `-o-device-pixel-ratio`
If you're a savvy reader, you'll have noticed that we've not included `-o-device-pixel-ratio` as a prefixed option, and we would encourage you not to either. Opera has decided that their implementation should be written as a fraction, not as a decimal, and we are currently not prepared to support automatic conversion of decimals to fractions. This leaves us in the position of either supporting only fractions for unprefixed `device-pixel-ratio`, which is counter to the way the two largest browsers support the query, or suggesting that if you want to use `-o-device-pixel-ratio` that you write a separate media query for it, and we've chosen the later.