// @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',
* }
*/
function hiDPI(ratio: number = 1.3) {
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)
`
}
export default hiDPI
|