polished
Version:
A lightweight toolset for writing styles in Javascript.
41 lines (38 loc) • 1.02 kB
Flow
// @flow
/**
* Generates a media query to target HiDPI devices.
*
* @example
* // Styles as object usage
* const styles = {
* [hiDPI(1.5)]: {
* width: 200px;
* }
* }
*
* // styled-components usage
* const div = styled.div`
* ${hiDPI(1.5)} {
* width: 200px;
* }
* `
*
* // CSS as JS Output
*
* '@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
* only screen and (min--moz-device-pixel-ratio: 1.5),
* only screen and (-o-min-device-pixel-ratio: 1.5/1),
* only screen and (min-resolution: 144dpi),
* only screen and (min-resolution: 1.5dppx)': {
* 'width': '200px',
* }
*/
export default function hiDPI(ratio?: number = 1.3): string {
return `
@media only screen and (-webkit-min-device-pixel-ratio: ${ratio}),
only screen and (min--moz-device-pixel-ratio: ${ratio}),
only screen and (-o-min-device-pixel-ratio: ${ratio}/1),
only screen and (min-resolution: ${Math.round(ratio * 96)}dpi),
only screen and (min-resolution: ${ratio}dppx)
`
}