프로젝트 작업중 이미지들이 위의 핀터레스트 이미지들 처럼 배열을 하고 싶어져
css로 고군부투 했는데... masonry
라는 간단한 라이브러리를 알게되어 정리를 하려고 한다.
아래의 링크로 들어가 js를 복붙하여 사용한다.
width의 고정법 사용과 반응형(%) 사용 예시를 알아보려한다.
<!--html-->
<div class="grid">
<div class="grid-item"></div>
<div class="grid-item grid-item--width2"></div>
<div class="grid-item grid-item--height2"></div>
...
</div>
<!--css-->
.grid-item {
float: left;
width: 80px;
height: 60px;
border: 2px solid hsla(0, 0%, 0%, 0.5);
}
.grid-item--width2 { width: 160px; }
.grid-item--height2 { height: 140px; }
<!--html-->
<div class="grid">
<!-- width of .grid-sizer used for columnWidth -->
<div class="grid-sizer"></div>
<div class="grid-item"></div>
...
</div>
<!--css-->
/* fluid 5 columns */
.grid-sizer,.grid-item { width: 50%; }
/* 2 columns */
<!--js-->
$('.grid').masonry({
// set itemSelector so .grid-sizer is not used in layout
itemSelector: '.grid-item',
// use element for option
columnWidth: '.grid-sizer',
percentPosition: true
})
grid-item
Masonry 그리드의 각 요소는 grid-item으로 표시됩니다.
이들은 그리드 내에서 배치되는 각 항목을 나타냅니다.
grid-container
grid-container는 grid-item 요소들을 포함하는 부모 컨테이너입니다.
Masonry 그리드는 이 컨테이너 내에 구축됩니다.
columnWidth
Masonry 그리드의 열 너비를 설정합니다.columnWidth는 일반적으로 고정된 값을 가지지 않고, 컨테이너의 크기에 따라 동적으로 조정됩니다.
( 사용법 - columnWidth: '.grid-sizer'
)
gutter
그리드 항목 사이의 간격을 설정합니다.
일반적으로 항목 사이에 간격을 두어 시각적인 분리를 만듭니다.
itemSelector
grid-item 요소들을 선택하기 위한 CSS 선택자입니다. Masonry 라이브러리는 이 선택자를 사용하여 어떤 요소들이 그리드 항목으로 사용되어야 하는지를 식별합니다.
( 사용법 - itemSelector: '.grid-item'
)
fitWidth
그리드의 항목들을 컨테이너의 폭에 맞추기 위해 사용됩니다. 이 속성을 활성화하면 항목들이 컨테이너 폭 내에서 자동으로 배치됩니다.
resize
브라우저 창의 크기가 변경될 때 그리드의 재배치를 지원합니다. 이 속성을 활성화하면 그리드가 유동적으로 조정됩니다.
transitionDuration
그리드 항목의 재배치나 크기 조정과 같은 변화에 대한 전환 효과의 지속 시간을 설정합니다.
percentPosition ✨
기본적으로 Masonry 그리드는 항목들의 위치를 픽셀 값으로 지정합니다. 그러나 percentPosition 옵션을 활성화하면 항목들의 위치를 퍼센트 값으로 지정합니다.
( 사용법 - percentPosition:true
)