Looking for a Front-End Developer and Design Systems Practitioner?

I currently have some availabilty. Let's talk!.

Always Twisted

This page is old.

Although the content of this page may be useful. The page was part of a migratian and may look different and unmaintained. I am working my way through, tidying them up.

🙏🖤

A Sass mixin for media queries and IE

On This Page:

I'm currently finishing up some front-end co-coding for a client who hired me for all the mobile/responsive goodness. As well as this they wanted me to instigate and create the CSS using Sass/SCSS. Near the end of the project they asked how we would support IE8/7/6.

We did discuss this at the start of the project but carried on with 'all the things'. I had seen all the hotness around Sass 3.2 that would allow you to create a respond-to mixin. So decided to upgrade my Sass gem to the latest version and updated all my 'hand coded' media queries with the relevant Sass/SCSS mixins.

This was great, kinda, it now took the px/em value out of the CSS and allowed me to change it in my Sass settings/mxins/variables file but it did not let me create a fallback for internet explorer.

Here is the SCSS and the CSS I wanted/expected.

The SCSS setup

// Setting up a quick respond-to mixin @mixin respond-to($name) { @if $name == tablet { @media only screen and (min-width: 768px) { @content; } } }

// So this is the mixin that I'm currently using

@mixin this-is-what-i-want($name. $ie-class) { ie-class-here { @content; } media-query-here } @content; } }

The SCSS file

// This is how I include the mixin within my SCSS file

.foo { margin: 0 auto; padding: 0 10px;§

@include this-is-what-i-want(tablet, lt-ie9) { min-width: 940px; max-width: 1220px; padding: 0 20px; } }

My 'wished for' CSS output

.foo { margin: 0 auto; padding: 0 10px;§ }

.lt-ie9 .foo { min-width: 940px; max-width: 1220px; padding: 0 20px; }

@media only screen and (min-width: 768px) { .foo { min-width: 940px; max-width: 1220px; padding: 0 20px; } }

To The Internets

So I started crawling the gists on gitub to see if anyone had created a little code snippet just for this reason. I didn't. There was nothing. So I quickly asked some really, clever and amazing people on the twitters and I got this bit of code from the fantastic @snugug.

mixin respond-wrapper-fallback($name, $wrapper-class) { .#{$wrapper-class} & { @content; } @include respond-to($name) { @content; } }

This now turns my 'wished for' CSS output into a reality and now means I can create a fallback for Internet Explorer from 'whatever' CSS Media Query block I need.

To skin a cat.

There's more than one solution for patching up code for Internet Explorer using Sass. This is the solution I required. Jake Archibald created a IE-friendly mobile-first solution which I shall be likely to use at the start of future projects and there's Nicolas' solution also.

Are your HTML templates accessible and compliant with WCAG standards?

I’ll audit and improve your HTML templates for accessibility compliance.

get in touch!