Если стиль вашего приложения "API" должен иметь 3 точки прерывания медиазапроса, вы можете использовать реквизиты в ваших styleled-компонентах и возвращать правильный CSS. Укажите API, который вы хотите, например <StyledBox width={{ _: '100%', md: '50%', lg: '25%' }} />
.
import styled, { css } from 'styled-components';
const StyledBox = styled.div`
${props => props.width && css`
width: ${width._};
@media screen and (min-width: 40em) {
width: ${width.md};
}
@media screen and (min-width: 52em) {
width: ${width.lg};
}
`}
`;
StyledBox.propTypes = {
width: PropTypes.shape({
_: PropTypes.string.isRequired,
md: PropTypes.string.isRequired,
lg: PropTypes.string.isRequired,
}),
};
StyledBox.defaultProps = {
width: {
_: '100%',
md: '50%',
lg: '25%'
}
};
Styled-компонент css helper function
Использование:
<StyledBox>
This gets default media breakpoints, 100%, 50%, 25%
</StyledBox>
<StyledBox
width={{ _: '90%', md: '80%', lg: '70%'}}
>
This gets overridden media breakpoints, 90%, 80%, 70%
</StyledBox>
Обновление
Если вы предпочитаете НЕ каждый раз выписывать медиазапрос, включите его в служебную функцию стиля, которая будет использоваться в любом другом стилизованном компоненте. вы хотите быть отзывчивым.
const mediaQueries = ({ sm = '100%', md = '50%', lg = '25%'}) => css`
width: ${sm};
@media screen and (min-width: 40em) {
width: ${md};
}
@media screen and (min-width: 52em) {
width: ${lg};
}
`;
Затем в любой стиль компонента импортировать и использовать
const ResponsiveDiv = styled.div`
...
${mediaQueries()}
...
`;
const CustomResponsiveDiv = styled.div`
...
${mediaQueries({ _: '90%', md: '80%', lg: '70%'})}
...
`;