0.0.7 • Published 7 years ago
styled-components-mq v0.0.7
styled-components-mq
Compose styled components 💅 media queries in an elegant way:
- provides a clean and intuitive API allowing you to create complex breakpoints without repeating yourself
- compiles to
em-based queries
Install
The easiest way to use styled-components-mq is to install it from NPM and include it in your own build process
yarn add styled-components-mq
Usage
Syntax
- mq($name: <$responsiveSuffix>)
- mq($from: <$responsiveSuffix>, $until: <$responsiveSuffix>)
$fromis inclusive while$untilis exclusive. They can be chained together or used independently.
import styled from 'styled-components';
import mediaQueries from 'styled-components-mq';
const mq = mediaQueries();
const Column = styled.div`
width: 100
/* Portrait Phones ONLY */
${ mq({ name: 'xs' })`
width: 50%;
` }
/* Landscape Phones(544px) and up */
${ mq({ from: 'sm' })`
width: 50%;
` }
/* Landscape Phones up to Large Devices(excluding large devices) */
${ mq({ from: 'sm' })`
width: 50%;
` }
/* Smallest breakpoint(i.e. Portrait Phones) up to Large Devices(excluding large devices) */
${ mq({ until: 'lg' })`
width: 50%;
` }
`;Recommended Usage
We can use the <ThemeProvider> wrapper component to pass the media query object down the tree.
import mediaQueries from 'styled-components-mq';
const mq = mediaQueries();
const theme = {
bodyColor: 'green',
mq
};
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
const Column = styled.div`
width: 100;
color: ${ props => props.theme.bodyColor };
${ props => props.theme.mq({ until: 'lg' })`
width: 50%;
`}
`;API
mediaQueries(breakpoints)
You can easily customize the breakpoint names and values:
Properties:
breakpoints:Objectcontaining the breakpoints rules
Example:
import styled from 'styled-components';
import mediaQueries from 'styled-components-mq';
const mq = mediaQueries({
xs: '0px',
sm: '544px',
md: '768px',
lg: '992px'
});
const Column = styled.div`
width: 100;
/* Landscape Phones up to Large Devices(excluding large devices) */
${ mq({ from: 'sm' })`
width: 50%;
` }
`;Defaults
- Portrait Phones:
0pxup to543px - Landscape Phones:
544pxup to767px - Tablets:
768pxup to767px - Large Devices:
992pxand up
Tests
yarn run test