Material-ui: [Grid] ์ž๋™ ๋†’์ด ์กฐ์ ˆ (Responsive Layout)

์— ๋งŒ๋“  2017๋…„ 07์›” 30์ผ  ยท  40์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mui-org/material-ui

๋ฌธ์ œ ์„ค๋ช…

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,

์ €๋Š” ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ž‘์—…ํ•˜๋ฉฐ ์‹ค์ œ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
image

์›ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋ฆฌ๋“œ๋Š” ์œ„์—์„œ ์ž๋™์œผ๋กœ ์Œ์•… ์นด๋“œ๋ฅผ ๋ฐ€์–ด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค,

๋จธํ‹ฐ๋ฆฌ์–ผ UI: ๋‹ค์Œ

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๊ณ ๋ คํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์ฐฌ์„ฑํ‘œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  40 ๋Œ“๊ธ€

๋‚˜๋Š” ๋‹น์‹ ์ด ์„ฑ์ทจํ•˜๋ ค๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ž ์˜์—ญ์—์„œ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๊ณ  ํ‹ˆ์ƒˆ ์‹œ์žฅ์„ ๋ชฉํ‘œ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ด์œ ๋กœ ๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ์‹œ๋‹ค.

์ฝ”๋“œ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜์ง€๋งŒ ์žฌ๋ฃŒ ์‚ฌ์–‘์€ "๋‹จ์ผ ์—ด ํ˜•์‹์˜ ์š”์†Œ๊ฐ€ ๋‹ค์–‘ํ•œ ์กฐํ•ฉ์œผ๋กœ ์ฝ˜ํ…์ธ  ์˜์—ญ์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ๋ฆฌํ”Œ๋กœ์šฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . .

image

๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ Grid๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

image

๊ทธ๋ ‡๋‹ค๋ฉด ์ฝ”๋“œ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๋ฉด์„œ๋„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ง„์ง€ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค,

์ถ”์‹ : ์‚ฌ์–‘๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.
(ํ•˜์ง€๋งŒ ๋จธํ‹ฐ๋ฆฌ์–ผ UI์— ํ†ตํ•ฉํ•˜๋ฉด ๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

์„์กฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค: https://masonry.desandro.com/layout.html.

๋„ค, ๋จธํ‹ฐ๋ฆฌ์–ผ UI์˜ ๋„ค์ดํ‹ฐ๋ธŒ ํ†ตํ•ฉ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ข‹์€ ์ƒ๊ฐ ์ž…๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€ ์˜ค๋ฉด :)

์ถ”์‹ : ๋ฌธ์ œ์˜ ์žฌ๊ฐœ๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค,

์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ์—ฌ๊ธฐ ์—์„œ Google์˜ ๋จธํ‹ฐ๋ฆฌ์–ผ ํ”„๋ ˆ์ž„์›Œํฌ์˜ CSS ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

Material ui๋Š” ํ™•์‹คํžˆ ์ตœ๊ณ ์˜ React ๊ตฌ์„ฑ ์š”์†Œ ์„ธํŠธ์ž…๋‹ˆ๋‹ค!

๋‚˜๋Š” getmdl์ด ๊ทธ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ, ๋‚˜๋Š” ๋‹น์‹ ์ด ์ œ๊ณตํ•œ ๋งํฌ๊ฐ€ ์ •์  ์˜ˆ๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋™์  ์ฝ˜ํ…์ธ ์˜ ๊ฒฝ์šฐ angular material 2 grid list ๋˜๋Š” angular material 1 grid list ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ...

๋„ค, ๋งž์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€์‹œ๋ณด๋“œ์˜ ๋‚ด์šฉ์ด ์ •์ ์ด์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ง€์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ๐Ÿ˜„
๋ถ„๋ช…ํžˆ ๋จธํ‹ฐ๋ฆฌ์–ผ ์•ต๊ธ€์€ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ํ•˜์ง€ ์•Š๋Š” ์ผ์„ ์•„์ฃผ ์ž˜ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋ณต์žกํ•œ ๋…ผ๋ฆฌ๋กœ !

์‚ฌ์‹ค, ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด Grid xs , sm , md ๋“ฑ์˜ ๋ฐ˜์‘ํ˜• ์ค‘๋‹จ์ ์œผ๋กœ ์ด๋ฏธ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
"100%" ์ž๋™์œผ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ๋ฒฝ๋Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋” ์ ํ•ฉํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @oliviertassinari ,
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ฆฌ๋“œ์— ๋Œ€ํ•œ ์žฌ๋ฃŒ ์‚ฌ์–‘์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚ด ์ด์ „ ๋Œ“๊ธ€์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด?

์ค‘๋‹จ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๋“œ๋Š” ํฌ๊ธฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค! ๋ฌธ์ œ๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค!

image

๋‘ ๋ฒˆ์งธ ์Œ์•… ์นด๋“œ๊ฐ€ "aperรงu" ์นด๋“œ์— ๋ถ™์„ ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์žฌ๋ฃŒ ์‚ฌ์–‘์— ์–ด๊ธ‹๋‚ฉ๋‹ˆ๋‹ค.

๋” ์ผ๋ฐ˜์ ์œผ๋กœ, ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์นด๋“œ๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ๊ถŒ์„ ์ฃผ์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด ์š”์ฒญ์„ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ง„์‹ฌ์œผ๋กœ, ๋‚˜๋Š” ์ด๊ฒƒ์ด ํ”„๋กœ์ ํŠธ ์™ธ๋ถ€์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. material.angular๋Š” ๊ทธ๊ฒƒ์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • withWidth() ์ƒ์œ„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ค‘๋‹จ์ ์— ๋Œ€ํ•œ ๊ทธ๋ฆฌ๋“œ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๋“œ๋Š” flexbox ๋ชจ๋ธ์— ๋Œ€ํ•œ ์–‡์€ ๋ž˜ํผ์ด๋ฉฐ ์ด ๋ ˆ์ด์•„์›ƒ ๋ชจ๋ธ์ด ํ—ˆ์šฉํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์€ Grid ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ํ–‰์—์„œ ์—ด๋กœ ๋ฐฉํ–ฅ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ , ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ฐ™์€ ์งˆ๋ฌธ์„ ํ•˜๋Š” ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์„ค๋ช…์„œ์— ์ด ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด?
๋‚ด ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค... ๋„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ €๋„ ์ด ๊ธฐ๋Šฅ์„ ์›ํ–ˆ๋Š”๋ฐ ์ œ์•ˆํ•œ ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. HelloEdit, ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌธ์„œ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋ด, ๋‚˜๋Š” ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค (๋ฒฝ๋Œ๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์ƒ๊ฐ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค!

๊ฒฐ๊ตญ 2๊ฐœ์˜ ์—ด์„ ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„ํ• ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์—ด ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋” ํฐ ์นด๋“œ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ ํ•œ์ชฝ์ด ๋‹ค๋ฅธ ์ชฝ๋ณด๋‹ค ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@HelloEdit ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ๋ฆฌ๋“œ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” Material-UI ๊ทธ๋ฆฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์กฐ๊ธˆ ์ ˆ๋ฆ„๋ฐœ์ด ๋Š๋‚Œ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์— ๋ณด๊ธฐ ํ‰ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ณด๊ธฐ ์ข‹์ง€ ์•Š๊ณ  Material-UI ์‚ฌ์–‘์„ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ๊ทธ๋ฆฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚ด ์•ฑ์—๋Š” Material-UI ๊ทธ๋ฆฌ๋“œ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋‹จ์ผ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์—†์œผ๋ฉฐ ๊ทธ๋ฆฌ๋“œ ๋ฌธ์„œ ํŽ˜์ด์ง€ ๋Š” ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณด์—ฌ์ฃผ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋‹จ์ˆœํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•ฑ์—์„œ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์ „์— ๊ทธ๋ฆฌ๋“œ์˜ "๊ธฐ๋Šฅ"์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@marco-silva0000์ด ํ•œ ๊ฒฝ์šฐ์™€ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ์ด๋Š” ๋ช…๋ฐฑํ•œ ํ•ดํ‚น์ด๋ฉฐ ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”๋‹ฅ์—์„œ๋„ ๋ณด๊ธฐ ํ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@HelloEdit๋ฅผ ๋‹ค์‹œ ์—ด์–ด์ฃผ์„ธ์š”. ์ด๊ฒƒ์ด ํฐ ๋ฌธ์ œ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณต๋œ "ํ•ด๊ฒฐ์ฑ…"์ด ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋ฌผ์งˆ์  ์ง€์นจ์„ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž‘์—…์ด ๋งŽ๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ›Œ๋ฅญํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์™„์ „ํžˆ ๋ฐ˜์‘ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ด ํŠน์ • ์ง€์ ์ด ์ •๋ง ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

@oliviertassinari ์˜ˆ์‹œ ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•œ ์ž ์žฌ์  ๊ฐ€๋Šฅ์„ฑ...

์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Grid rowHeight ์†์„ฑ์€ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ์ ์œผ๋กœ 1:1๋กœ ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€์— ๋™์  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ์นด๋“œ๋ฅผ ํ‘œ์‹œํ•˜๋ฉด ๋†’์ด๊ฐ€ ์กฐ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  1. ์‚ฌ๋ก€ 1, ์นด๋“œ๊ฐ€ 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ๊ณ  2๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์นด๋“œ ๋†’์ด๋Š” ์กฐ์ •๋˜์ง€๋งŒ ๊ทธ๋ฆฌ๋“œ ๋†’์ด๋Š” 1:1๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ๋ก€ 2, ์นด๋“œ๊ฐ€ 5๊ฐœ์˜ ๊ฐ’์„ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 7๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋Š” ์ž˜๋ฆฌ๊ณ  ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋‹ค๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›์— ๋Œ€ํ•œ ๋‚ด ํˆฌํ‘œ. ์ด๊ฒƒ์ด Grid ์ปดํฌ๋„ŒํŠธ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ๋‹น์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ: https://codesandbox.io/s/p5v42zrrzm
CSS ๊ทธ๋ฆฌ๋“œ๋กœ ๊ตฌ๋™๋˜๋ฏ€๋กœ ์–ด๋””์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. https://caniuse.com/#feat =css-grid

@joshwooding ๋‚ด iPad์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉด ๋งค์šฐ ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค! ๋‚ด์ผ ๋ฐ์Šคํฌํƒ‘์—์„œ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ”ํƒ• ํ™”๋ฉด ์—์„œ

  1. ์ด๊ฒƒ์€ ํ˜„์žฌ ๊ทธ๋ฆฌ๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ค‘๋‹จ์ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‚˜๋Š” MacCard Component์— ๋‘ ๊ฐœ์˜ Typography ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ(๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์ธ ๊ฐ€๋ณ€ ๋†’์ด ์นด๋“œ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด) ํ‚ค๋ฅผ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๊ฒฐ๊ณผ์—๋Š” ํ–‰ ์‚ฌ์ด์— ์›์น˜ ์•Š๋Š” ๋นˆ ๊ณต๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ๊ฒฐ๊ตญ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์Šคํฌ๋ฆฐ์ƒท:
    screenshot_39

Grid์˜ ์„์กฐ ๋ ˆ์ด์•„์›ƒ ์ง€์›์€ ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ‘, ์ด๋ก ์ ์œผ๋กœ JS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

CSS ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์€ ์ด๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. https://github.com/w3c/csswg-drafts/issues/945๋ฅผ ์ฐธ์กฐ

์ž„์‹œ ์†”๋ฃจ์…˜์€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์—ด์„ ๋งŒ๋“ค๊ณ  ํผ๋œจ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด
์—ฌ๊ธฐ์— ๋‘ ๊ฐœ์˜ ์—ด์ด ์žˆ๊ณ  ํ‚ค๊ฐ€ ํ™€์ˆ˜์ด๋ฉด ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
๋ชจ๋ฐ”์ผ์šฉ ํ•œ ์—ด์— ๋ชจ๋‘ ํฌํ•จ๋œ 1๊ฐœ์˜ ๋ฉ”์ธ ๊ทธ๋ฆฌ๋“œ
๋‚˜๋Š” smDown์—์„œ ์ฒซ ๋ฒˆ์งธ ๊ฒƒ์„ ์ˆจ ๊น๋‹ˆ๋‹ค.
mdUp์—์„œ ๋ฉ”์ธ ์ˆจ๊ธฐ๊ธฐ
Screenshot from 2019-04-30 16-00-24
Screenshot from 2019-04-30 16-00-17

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

flexbox๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๋•Œ ๋ถ„๋ช…ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@CloudNineK Flexbox๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค(Grid๋Š” flexbox ๊ธฐ๋ฐ˜์ž„). ๋‹ค์–‘ํ•œ ์ˆ˜์˜ ์—ด ๊ฐ„์— ์ฝ˜ํ…์ธ ๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ฐฐํฌํ•˜๋ ค๋ฉด ์„์กฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MUI์—์„œ ์ผ์ข…์˜ ์„์กฐ ๊ธฐ๋Šฅ๋„ ๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ๋ง์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋„๋ก MuiGrid๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ์ง€์›ํ•˜๋Š” ์ƒˆ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Masonry ํšจ๊ณผ๋ฅผ ์œ„ํ•ด MuiGrid๋ฅผ ๋ž˜ํ•‘ํ•˜๋Š” ์กฐ์žกํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ทธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ์˜ ์‹œ์ž‘์ด ๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค: https://codesandbox.io/s/masonryplusmui-xk8rr?fontsize=14

๋ฌผ๋ก  ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ. ํ˜„์žฌ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ค‘๋‹จ์ ์„ ์‚ฌ์šฉํ•˜๊ณ (์ €๋Š” theme.breakpoints.values์—์„œ ๊ฐ€์ ธ์˜ด) ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค ์—ด ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. MUI์˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด ์‹œ์ ์—์„œ๋Š” ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ „์ฒด ์—ด์˜ ๋„ˆ๋น„๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

@weiluntong ๊ทธ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…์ด์ง€๋งŒ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์šฐ์•„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋žฉ์„ ํฌํฌํ•˜๊ณ  ์ด๋ฅผ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ ์š”์†Œ๋กœ ํ™๋ณดํ•˜๊ฑฐ๋‚˜ ์ œ์•ˆํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@nikandlv ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ด๊ฒƒ์€ MUI๊ฐ€ ์•„๋‹ˆ๋ฉฐ Masonry ๋ ˆ์ด์•„์›ƒ๋„ ์•„๋‹Œ ์ผ์ข…์˜ ๋ฆผ๋ณด์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  PR์„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ทธ๊ฒƒ์ด ์—ฌ๊ธฐ์—์„œ์˜ ์ตœ์ข… ๋ชฉํ‘œ๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž์ง€๋งŒ ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‹œ์ž‘์ด ๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ค? ์•„๋‹ˆ๋ฉด ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ์™ผ์ชฝ ํ•„๋“œ์ž…๋‹ˆ๊นŒ? ์ €๋ฅผ ์ด๋Œ์–ด์ค„ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

@weiluntong ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ•จ๊ป˜ ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ MUI์˜ ์ผ๋ถ€๋กœ ์›ํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์›ํ•˜๋Š”์ง€ ๋ฌผ์–ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  https://github.com/mui-org/material-ui/blob/master/CONTRIBUTING.md๊ฐ€ ๋งํ–ˆ๋“ฏ์ด

์ƒˆ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ์ถœํ•  ๋•Œ ๋žฉ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

https://github.com/mui-org/material-ui/tree/master/packages/material-ui-lab

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๊ณ ๋ คํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์ฐฌ์„ฑํ‘œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@weiluntong ์—ฌ์ „ํžˆ ์ œ์•ˆ์„œ๋ฅผ ์ค€๋น„ํ•  ์‹œ๊ฐ„์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ณ„๋„์˜ ์ „์šฉ ์„์กฐ ๊ตฌ์„ฑ ์š”์†Œ์— ํ•œ ํ‘œ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ง€ ๋ณด์ˆ˜ ๋ฐ ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ฐ€์žฅ ์‰ฌ์šด ์˜ต์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

react-virtualized Masonry ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ react-virtualized ๋Š” ์ตœ์‹  babel ๋ฐ core-js ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ํ›„์† react-window ์—๋„ Masonry ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค . ์•„๋งˆ๋„ react-virtualized Masonry ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด material-ui ์ฑ„ํƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฐฌ์„ฑํ‘œ๋ฅผ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ œ์•ˆ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ œ์•ˆ์„œ ํ…œํ”Œ๋ฆฟ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@weiluntong https://github.com/mui-org/material-ui/blob/master/CONTRIBUTING.md ๋กœ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๊ตฌ์„ฑ ์š”์†Œ ์š”์ฒญ์„ ์„ค๋ช…ํ•˜๊ณ  ์ฐฌ์„ฑ์„ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@weiluntong ์ƒˆ ์ด์Šˆ๋ฅผ ๋งŒ๋“ค ๋•Œ ํ…œํ”Œ๋ฆฟ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”. ํ•˜์ง€๋งŒ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์—์„œ ์ด ์†”๋ฃจ์…˜์„ ์ ์šฉํ•˜์—ฌ ์ด ์ •ํ™•ํ•œ ๋ฌธ์ œ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
Simply apply height: 100% to the children of Grid items.
https://stackoverflow.com/questions/50743402/material-ui-grid-item-height

๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค @dylanmartin ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ๋Š˜์–ด๋‚˜๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ํ–‰์ด ๊ทธ ๊ฐ„๊ฒฉ์„ ์ฑ„์šฐ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค!

#17000 ๋งˆ๊ฐ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰