React로 Masonry (타일을 깔아 놓은 디자인) 구현
$ yarb add react-masonry-css # or npm install -D react-masonry-css
JSX
import React from "react"
import Masonry from "react-masonry-css"
export default () => {
const events = [
{
"title": "React勉強会",
"text": "Reactの勉強をします"
},
{
"title": "JavaScript勉強会",
"text": "JavaScriptの勉強をします"
},
{
"title": "Ruby勉強会",
"text": "Rubyの勉強をします"
},
{
"title": "Rails勉強会",
"text": "Railsの勉強をします"
},
{
"title": "TypeScript勉強会",
"text": "TypeScriptの勉強をします"
}
]
// 1行に表示するカラム数
const breakpointColumnsObj = {
default: 4,
1350: 3,
1048: 2,
576: 1,
}
return (
<div>
<h1>勉強会一覧</h1>
<Masonry
breakpointCols={breakpointColumnsObj}
className="my-masonry-grid"
columnClassName="my-masonry-grid_column"
>
{events.map(e => (
<div className='event-card'>
<h3>{e.title}</h3>
<p>{e.text}</p>
</div>
))}
</Masonry>
</div>
)
}
CSS
.my-masonry-grid {
display: flex;
margin-left: -30px; /* 項目間の余白のサイズ */
width: auto;
}
.my-masonry-grid_column {
padding-left: 30px; /* 項目間の余白のサイズ */
background-clip: padding-box;
}
.my-masonry-grid_column > .event-card {
background: grey;
margin-bottom: 30px;
}
주의점
이 예에서는 한 행에 4개의 열을 기본 열 수로 설정합니다.
576px 이하일 때는 1열 밖에 표시하지 않도록 설정하고 있습니다만, 페이지 표시 후의 순간만 4열 표시되어 버립니다.
이것을 막기 위해서, 절대로 제대로 표시하고 싶은 스마트폰 전용의 DOM을 새롭게 작성해, PC로 표시할 때에는
display: none
로 숨기게 되었습니다.
Reference
이 문제에 관하여(React로 Masonry (타일을 깔아 놓은 디자인) 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/d0ne1s/items/0fa0040617455b2ec68f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)