Система отступов используется для того, чтобы задать расстояние между элементами. Переменные отступа не используются для задания размеров или позиционирования на странице.
Переменные хранятся в файле vars.css
Название | Значение |
---|---|
--gap-2xs |
4px |
--gap-xs |
8px |
--gap-s |
12px |
--gap-m |
16px |
--gap-l |
20px |
--gap-xl |
24px |
--gap-2xl |
32px |
--gap-3xl |
40px |
--gap-4xl |
48px |
--gap-5xl |
72px |
@import 'arui-feather/vars.css';
.array-item {
margin-bottom: var(--gap-xs);
}
.description {
margin: var(--gap-l) 0;
}
.icon {
width: var(--gap-m);
}
Контрольные точки для медиа запросов задаются в mq.json.
Для консистентной работы среди всех поддерживаемых браузеров используется единица измерения em
.
body {
font-size: 16px;
}
Название | Значение | Deprecation |
---|---|---|
--mobile-s |
320px to 100% | |
--mobile-m |
375px to 100% | |
--mobile-l |
412px to 100% | |
--mobile |
0 to 599px | |
--tablet-s |
600px to 100% | |
--tablet-m |
768px to 100% | |
--tablet |
600px to 1023px | |
--desktop-s |
1024px to 100% | |
--desktop-m |
1280px to 100% | |
--desktop-l |
1440px to 100% | |
--desktop-xl |
1920px to 100% | |
--desktop |
1024px to 100% | |
--small |
0 to 100% | Deprecated |
--small-only |
0 to 767px | Deprecated |
--medium |
768px to 100% | Deprecated |
--medium-only |
768px to 1023px | Deprecated |
--large |
1024px to 100% | Deprecated |
--large-only |
1024px to 1439px | Deprecated |
--xlarge |
1440px to 100% | Deprecated |
--xlarge-only |
1440px to 1919px | Deprecated |
--xxlarge |
1920px to 100% | Deprecated |
--xxlarge-only |
1920px to 100% | Deprecated |
@media (--mobile) {
.app__content {
width: 100%;
padding: 0 var(--gap-l);
}
}
@media (--tablet) {
.app__content {
width: 700px;
margin: 0 auto;
}
}
@media (--mobile), (--tablet) {
.button {
width: 100%;
}
}
При особой необходимости, для рендеринга по условию в шаблонах используйте компонент Mq
, который основан на window.matchMedia API
:
import Mq from 'arui-feather/mq';
const MyComponent = () => (
<Mq
query='--mobile'
touch={true}
onMatchChange={isMatched =>
console.log(`Your query is ${isMatched ? '' : 'not'} matched!`)
}
>
Show smth on mobile
</Mq>
);
Также можно использовать Mq декоратор:
import mqDecorator from 'arui-feather/mq/decorator';
@mqDecorator('--mobile', 'isMobile')
class MyComponent extends React.Component {
render() {
return <div>Is mobile: {this.props.isMobile} </div>;
}
}
Компонент Mq
используется в компонентах calendar-input
и select
для рендеринга нативных виджетов на мобильных устройствах.
Важно понимать, что широкое использование этого подхода не рекомендовано, поскольку:
matchMedia()
накладнее для браузера, чем матчинг элемента в CSS;- Этот способ работает только на клиенте, и, при использовании SSR, может усилить различие серверной и финальной разметки, и добавить сложности к тестированию.
Временно: Запуск unit-тестов для тестирования в iOS Safari (необходим Xcode) MOBILE=1 npm run test
.