質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

17640閲覧

material ui 中央揃えができない

退会済みユーザー

退会済みユーザー

総合スコア0

Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/07/10 05:42

前提・実現したいこと

material uiを使って入力フォームを作成していましたが、フォームの中央揃えができません。
Gridを使いましたが思うように実装できませんでした。
解決方法をご存知の方、教えていただきたいです。

発生している問題・エラーメッセージ

ボタンは中央揃えできているがフォームの中央揃えができていない。
イメージ説明

該当のソースコード

react.js

1return ( 2 <React.Fragment> 3 <Grid container spacing={3} alignItems="center" justify="center"> 4 <Grid item xs={12}> 5 <TextField 6 id="standard-basic" 7 name="name" 8 label="名前" 9 value={values.name} 10 onChange={handleInputChange} 11 /> 12 </Grid> 13 <Grid item xs={12}> 14 <TextField 15 id="date" 16 label="date" 17 type="date" 18 name="date" 19 sx={{ width: 220 }} 20 InputLabelProps={{ 21 shrink: true, 22 }} 23 format="yyyy/MM/dd" 24 value={values.date} 25 onChange={handleInputChange} 26 /> 27 </Grid> 28 29 <Grid item> 30 <Button 31 variant="contained" 32 color="secondary" 33 startIcon={<SaveIcon />} 34 onClick={submit} 35 >保存する 36 </Button> 37 <Button 38 variant="contained" 39 color="primary" 40 startIcon={<SaveIcon />} 41 onClick={() => { 42 props.setFlag(false) 43 }} 44 >戻る 45 </Button> 46 </Grid> 47 </Grid> 48 </React.Fragment> 49) 50

試したこと

Gridでcontanerとjustifyにcenterを与える
https://teratail.com/questions/98504

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

中央揃えができていないのではなく、中央揃えされたサイズ最大(xs={12})のGridの左端にテキストが来ているだけです。
justify="center"で中央揃えされるのは、containerの中身のGrid itemです。
試しにTextFieldにfullwidthをつけてみると、横幅いっぱいにTextFieldが伸びると思います。
イメージ説明
"TextField自体を中央揃えされたように見せたい"のであれば、Grid itemのxs={12}を小さくしてください。
ただそれだと縦並びのレイアウトが崩れてしまいます。
一つの案としてコンテンツ全体を中央揃えにしたいのであれば、Containerというコンポーネントがあるのでそれで全体をラップしてください。
さらにContainerの中でも中央揃えにしたいのであれば、素直にクラスで指定してあげる。
もしくは、Grid containerのdirectionをcolumnにしてあげてalignItemsをcenterに設定する。

js

1<Grid container direction="column" alignItems="center"> 2 <Grid item> 3 <TextField /> 4 </Grid> 5 <Grid item> 6 <TextField /> 7 </Grid> 8</Grid>

投稿2021/07/12 01:00

p19ljk

総合スコア146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/13 13:27

回答いただきありがとうございます。 //試しにTextFieldにfullwidthをつけてみると、横幅いっぱいにTextFieldが伸びると思います。 こちら試してみたところTextFieldが横幅いっぱいになったことを確認できました。 最終的に、「Grid containerのdirectionをcolumnにしてあげてalignItemsをcenterに設定」で解決できました。 とてもわかりやすい解説もいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問