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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

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

Q&A

解決済

1回答

3667閲覧

material ui <Card>の横スクロール化

MOTOMUR

総合スコア195

Material-UI

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

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

0グッド

0クリップ

投稿2017/10/31 04:56

こちらの記事を参考に、動的なカードたちを横スクロール化しようとしてみたのですが、

js

1<Card 2 style={{ 3 display:inline-block; 4}}

といったように入れることはできませんでした。

material uiのスタイルを変える際、このような操作ができましたら、やり方を教えていただけると助かります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Reactでstyleに対し{}で書く場合、JavaScriptの連想配列で書かなければいけません。しかし、あなたのコードは連想配列の書き方ではなく、CSSのスタイルの書き方です。
正しいスタイルの書き方はこうです。

javascript

1<Card 2 style={{ 3 display:'inline-block' 4}}

参考記事
https://qiita.com/kuniken/items/b06de893c22f33499a22

投稿2017/10/31 05:11

編集2017/10/31 05:12
masaya_ohashi

総合スコア9206

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

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

MOTOMUR

2017/10/31 05:15

ありがとうございます。文法間違いだったのですね。 しかし、 white-space :  ’nowrap’ や overflow-x :  ’scroll’ などはmaterial uiには存在しないようです。 こちらはどうやって同じ方法を実現できるでしょうか。
masaya_ohashi

2017/10/31 05:16

参考記事を読んでみてください。ハイフンで区切られたスタイル名は、代わりにキャメルケースで表現できるようになっています。white-spaceはwhiteSpace、overflow-xはoverflowXです。
MOTOMUR

2017/10/31 05:22

ありがとうございます!無事実装できました! これからのmaterial uiをコーディングする際、ハイフンアルファベットの場合は大文字にしたら使えるということですね!助かりました!
masaya_ohashi

2017/10/31 05:25

material uiというより、JSXやReactの話です。material uiを使わなくても、Reactで書くなら必要な知識ですよ。
MOTOMUR

2017/10/31 05:28

ちなみにですが、このように横スクロール化した場合、隙間なく敷き詰められてしまうのですが、このカード間のマージン(縦横)を指定するにはどのようにしたらよろしいでしょうか。
masaya_ohashi

2017/10/31 05:30

私ならmargin-rightやmargin-bottomといったスタイルを使います。
MOTOMUR

2017/10/31 05:47

ありがとうございます!
MOTOMUR

2017/10/31 05:51

しかし、それはどこに入れたら良いでしょう。 先ほどのstyle全てに、 marginRight:'10px', marginBottom:'10px', と記述しましたが、隙間はできませんでした。何が間違っているのでしょう。
masaya_ohashi

2017/10/31 05:55

なにが、と言われても、それで隙間が出来ないなら私には予想できません。ブラウザの開発者ツール等でスタイルがどのように適用されているかを調べることが一番の近道かと思います。Windowsであれば、だいたいのブラウザはF12を押して開発者ツールが開きます。各ブラウザによって操作は少し違いますが、大体どのブラウザにも「この要素にはどのようなスタイルが適用されているか」を見る手段が用意されています。そこで「なぜ隙間ができないのか」の原因を探してください。
MOTOMUR

2017/10/31 06:05

検証してみた結果、カードのmarginがautoとなっていました。また、marginRightは存在しませんでした。この場合は、marginRightはmaterial uiのcardには対応していないということでしょうか?
masaya_ohashi

2017/10/31 06:30

どうやって指定していますか?私の環境でMaterial UIを入れてCardのstyleにmarginRight:'100px'と書いたら正しくカードの横に100pxのマージンが生成されました。
MOTOMUR

2017/10/31 06:35

<div className='container' style={{ overflowX: 'scroll', marginRight:'10px', marginBottom:'10px', }} > <div style={{ display: 'inline-block', whiteSpace: 'nowrap', marginRight:'10px', marginBottom:'10px', }} > { this.state.starred_users.length === 0 ? <div><h>There is no starred user</h></div> : <ul>{ this.state.starred_posts.slice().map( function(starred_user){ return( <Card style={{ width: '100%', display: 'inline-block', marginRight:'10px', marginBottom:'10px', }} > <CardHeader title={starred_user.author} avatar="" /> <CardTitle title={starred_user.title} subtitle={" star:(" + starred_user.postStar.starCount + ")"} /> <CardText> {starred_user.body} </CardText> <CardActions> <FlatButton secondary label="Comment" onClick={() => this.commentFncOpen(starred_user.uid,starred_user.postId)} /> </CardActions> <CardHeader showExpandableButton title="Comments" /> <List expandable> <p>--------------------------------------</p> <ListItem leftAvatar={<Avatar src='' />} primaryText="Author" secondaryText={ <p>Hello</p> } /> </List> </Card> ) }.bind(this) ) }</ul> } </div> </div> この部分が全文ですね。このように指定しています。
masaya_ohashi

2017/10/31 07:28

ぱっとみで原因は私にはわかりません。 CardにWidth:'100%'を指定している理由はなんですか?あとul直下にCard要素があるのも変だと思います。li要素でCardを挟んだ上で、li要素にdisplay:'inline-block'やmarginRight:'10px'等を指定するべきかと思います。
MOTOMUR

2017/10/31 10:26

li要素で挟んだら、できるようになりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問