baniol
7/9/2013 - 10:18 PM

css media queries sass

css media queries sass

// $mq-mobile-portrait	  : 320px !default;
// $mq-mobile-landscape	  : 480px !default;
// $mq-tablet-portrait   : 640px !default;  -- changed because i want my blog content is around this wide, not 768. you should let content & design determine your breakpoints
// $mq-tablet-landscape	: 1024px !default;
// $mq-desktop		: 1382px !default;

$mq-mobile-portrait	: 20em !default;
$mq-mobile-landscape	: 30em !default;
$mq-tablet-portrait	: 40em !default;
$mq-tablet-landscape	: 64em !default;
$mq-desktop		: 86.375em !default;

// Both portrait and landscape
@mixin mobile-only {
	@media (max-width : $mq-mobile-landscape) {
		@content;
	}
}

// Everything up to and including the portrait width of the phone
// Since it's the smallest query it doesn't need a min
@mixin mobile-portrait-only {
	@media (max-width : $mq-mobile-portrait) {
		@content;
	}
}

// Everything up to and including the mobile portrait
@mixin mobile-portrait-and-below {
	@media (max-width : $mq-mobile-portrait) {
		@content;
	}
}

// Everything above and including the mobile portrait
@mixin mobile-portrait-and-up {
	@media (min-width : $mq-mobile-portrait) {
		@content;
	}
}

// Everthing larger than a portrait mobile up until mobile landscape
@mixin mobile-landscape-only {
	@media only screen and (min-width : $mq-mobile-portrait + .001) and (max-width : $mq-mobile-landscape) {
		@content;
	}
}

// Everything up to and including the mobile landscape width
@mixin mobile-landscape-and-below {
	@media only screen and (max-width : $mq-mobile-landscape) {
		@content;
	}
}

// Everything above and including the mobile landscape width
@mixin mobile-landscape-and-up {
	@media only screen and (min-width : $mq-mobile-portrait + .001) {
		@content;
	}
}

// Both the portrait and landscape width of the tablet
// Larger than a landscape mobile but less than or equal to a landscape tablet
@mixin tablet-only {
	@media only screen and (min-width : $mq-mobile-landscape + .001) and (max-width : $mq-tablet-landscape) {
		@content;
	}
}

// Everything larger than mobile landscape up until the portrait width of the tablet
@mixin tablet-portrait-only {
	@media only screen and (min-width : $mq-mobile-landscape + .001) and (max-width : $mq-tablet-portrait) {
		@content;
	}
}

// Everything below and including the portrait width of the tablet
@mixin tablet-portrait-and-below {
	@media only screen and (max-width : $mq-tablet-portrait) {
		@content;
	}
}

// Everything above and including the portrait width of the tablet
@mixin tablet-portrait-and-up {
	// @media only screen and (min-width : $mq-mobile-landscape + 1) {
	@media only screen and (min-width : $mq-tablet-portrait + .001) {
		@content;
	}
}

// Larger than portrait but less than or equal to the landscape width
@mixin tablet-landscape-only {
	@media only screen and (min-width : $mq-tablet-portrait + .001) and (max-width : $mq-tablet-landscape) {
		@content;
	}
}

// Up to and including the tablet landscape
@mixin tablet-landscape-and-below {
	@media only screen and (max-width : $mq-tablet-landscape) {
		@content;
	}
}

// Everything larger than portrait tablet
@mixin tablet-landscape-and-up {
	@media only screen and (min-width : $mq-tablet-portrait + .001) {
		@content;
	}
}

// Everything larger than a landscape tablet
@mixin desktop-and-up {
	@media only screen and (min-width : $mq-tablet-landscape + .001) {
		@content;
	}
}

// Everything below and including the desktop 
@mixin desktop-and-below {
	@media only screen and (max-width : $mq-desktop) {
		@content;
	}
}

// Everything larger than a landscape tablet but less than or equal to the desktop
@mixin desktop-only {
	@media only screen and (min-width : $mq-tablet-landscape + .001) and (max-width : $mq-desktop) {
		@content;
	}
}

@mixin retina {
	@media only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 13/10), only screen and (min-resolution: 120dpi) {
		@content;
	}
}

@mixin image-2x($image, $width: auto, $height: $width) {
  @media only screen and (-webkit-min-device-pixel-ratio: 1.3),
         only screen and (-o-min-device-pixel-ratio: 13/10),
         only screen and (min-resolution: 120dpi) {
    background-image: url($image);
    @if $width != auto {
      background-size: $width $height;
    }
  }
}