Reactでアプリケーションを作成し、Grommetライブラリを使用してコンポーネントを設計しました。さまざまなモバイル デバイスにブレークポイントを設定するテーマ ファイルを定義しました。
const customBreakpoints = deepMerge(grommet, {
global: {
breakpoints: {
small: {
value: 768,
borderSize: {
xsmall: "1px",
small: "2px",
medium: "4px",
large: "6px",
xlarge: "12px"
},
edgeSize: {
none: "0px",
hair: "1px",
xxsmall: "2px",
xsmall: "3px",
small: "6px",
medium: "12px",
large: "24px",
xlarge: "48px"
},
size: {
xxsmall: "24px",
xsmall: "48px",
small: "96px",
medium: "192px",
large: "384px",
xlarge: "768px",
full: "100%"
}
},
medium: { value: 1536 },
large: {}
}
}
});
ボタンをレイアウトするには、グロメットボックスコンポーネントを使用しました。
const App = () => (
<Grommet theme={customBreakpoints}>
<ResponsiveContext.Consumer>
{size => (
<div>
<Box
direction="column"
align="center"
gap="medium"
pad="small"
overflow={{
horizontal: "auto"
}}
>
<Button
primary
hoverIndicator="true"
style={{
width: "100%"
}}
label="Next"
/>
<Box width="medium" direction="row-responsive">
<Button
primary
icon={<DocumentPdf color="white" />}
style={{
boxSizing: "border-box",
background: "red",
height: "38px",
lineHeight: "24px",
fontSize: "18px",
fontWeight: 600,
paddingLeft: "20px",
paddingRight: "20px"
}}
label="Export PDF"
/>
<Button
primary
icon={<DocumentPdf color="white" />}
style={{
boxSizing: "border-box",
background: "red",
height: "38px",
lineHeight: "24px",
fontSize: "18px",
fontWeight: 600,
paddingLeft: "20px",
paddingRight: "20px"
}}
label="Export all"
/>
</Box>
</Box>
</div>
)}
</ResponsiveContext.Consumer>
</Grommet>
);
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
アプリケーションを実行し、さまざまなデバイスで現在のウィンドウを調べると、次の出力が得られます。
と
ResponsiveContext.Consumerを使用して width=size} を設定しても機能しませんでした。
助言がありますか?
サンドボックスの例を作成しました。