본문으로 이동

격자·벽돌형·자유 좌표

배치 방식은 화면이 가진 구조에 맞춰 고릅니다. 각 예제의 코드 탭은 상단 사용 환경 설정을 따릅니다.

트랙 격자

행과 열이 모두 독립적으로 큰 화면에는 트랙 격자를 사용합니다. 아래 예제는 300개 행 × 300개 열, 총 90,000개 셀을 같은 비중으로 만들었습니다. 가로와 세로를 모두 스크롤해도 현재 viewport와 overscan에 들어온 셀만 DOM에 존재합니다.

Overscan120 px
R7 · C1
R7 · C2
R7 · C3
R7 · C4
R7 · C5
R7 · C6
R7 · C7
R7 · C8
R7 · C9
R7 · C10
R7 · C11
R7 · C12
R7 · C13
R7 · C14
R8 · C1
R8 · C2
R8 · C3
R8 · C4
R8 · C5
R8 · C6
R8 · C7
R8 · C8
R8 · C9
R8 · C10
R8 · C11
R8 · C12
R8 · C13
R8 · C14
R9 · C1
R9 · C2
R9 · C3
R9 · C4
R9 · C5
R9 · C6
R9 · C7
R9 · C8
R9 · C9
R9 · C10
R9 · C11
R9 · C12
R9 · C13
R9 · C14
R10 · C1
R10 · C2
R10 · C3
R10 · C4
R10 · C5
R10 · C6
R10 · C7
R10 · C8
R10 · C9
R10 · C10
R10 · C11
R10 · C12
R10 · C13
R10 · C14
R11 · C1
R11 · C2
R11 · C3
R11 · C4
R11 · C5
R11 · C6
R11 · C7
R11 · C8
R11 · C9
R11 · C10
R11 · C11
R11 · C12
R11 · C13
R11 · C14
R12 · C1
R12 · C2
R12 · C3
R12 · C4
R12 · C5
R12 · C6
R12 · C7
R12 · C8
R12 · C9
R12 · C10
R12 · C11
R12 · C12
R12 · C13
R12 · C14
R13 · C1
R13 · C2
R13 · C3
R13 · C4
R13 · C5
R13 · C6
R13 · C7
R13 · C8
R13 · C9
R13 · C10
R13 · C11
R13 · C12
R13 · C13
R13 · C14
R14 · C1
R14 · C2
R14 · C3
R14 · C4
R14 · C5
R14 · C6
R14 · C7
R14 · C8
R14 · C9
R14 · C10
R14 · C11
R14 · C12
R14 · C13
R14 · C14
R15 · C1
R15 · C2
R15 · C3
R15 · C4
R15 · C5
R15 · C6
R15 · C7
R15 · C8
R15 · C9
R15 · C10
R15 · C11
R15 · C12
R15 · C13
R15 · C14
R16 · C1
R16 · C2
R16 · C3
R16 · C4
R16 · C5
R16 · C6
R16 · C7
R16 · C8
R16 · C9
R16 · C10
R16 · C11
R16 · C12
R16 · C13
R16 · C14
R17 · C1
R17 · C2
R17 · C3
R17 · C4
R17 · C5
R17 · C6
R17 · C7
R17 · C8
R17 · C9
R17 · C10
R17 · C11
R17 · C12
R17 · C13
R17 · C14
R18 · C1
R18 · C2
R18 · C3
R18 · C4
R18 · C5
R18 · C6
R18 · C7
R18 · C8
R18 · C9
R18 · C10
R18 · C11
R18 · C12
R18 · C13
R18 · C14
R19 · C1
R19 · C2
R19 · C3
R19 · C4
R19 · C5
R19 · C6
R19 · C7
R19 · C8
R19 · C9
R19 · C10
R19 · C11
R19 · C12
R19 · C13
R19 · C14
R20 · C1
R20 · C2
R20 · C3
R20 · C4
R20 · C5
R20 · C6
R20 · C7
R20 · C8
R20 · C9
R20 · C10
R20 · C11
R20 · C12
R20 · C13
R20 · C14
R21 · C1
R21 · C2
R21 · C3
R21 · C4
R21 · C5
R21 · C6
R21 · C7
R21 · C8
R21 · C9
R21 · C10
R21 · C11
R21 · C12
R21 · C13
R21 · C14
R22 · C1
R22 · C2
R22 · C3
R22 · C4
R22 · C5
R22 · C6
R22 · C7
R22 · C8
R22 · C9
R22 · C10
R22 · C11
R22 · C12
R22 · C13
R22 · C14
R23 · C1
R23 · C2
R23 · C3
R23 · C4
R23 · C5
R23 · C6
R23 · C7
R23 · C8
R23 · C9
R23 · C10
R23 · C11
R23 · C12
R23 · C13
R23 · C14
R24 · C1
R24 · C2
R24 · C3
R24 · C4
R24 · C5
R24 · C6
R24 · C7
R24 · C8
R24 · C9
R24 · C10
R24 · C11
R24 · C12
R24 · C13
R24 · C14
R25 · C1
R25 · C2
R25 · C3
R25 · C4
R25 · C5
R25 · C6
R25 · C7
R25 · C8
R25 · C9
R25 · C10
R25 · C11
R25 · C12
R25 · C13
R25 · C14
R26 · C1
R26 · C2
R26 · C3
R26 · C4
R26 · C5
R26 · C6
R26 · C7
R26 · C8
R26 · C9
R26 · C10
R26 · C11
R26 · C12
R26 · C13
R26 · C14
R27 · C1
R27 · C2
R27 · C3
R27 · C4
R27 · C5
R27 · C6
R27 · C7
R27 · C8
R27 · C9
R27 · C10
R27 · C11
R27 · C12
R27 · C13
R27 · C14
R28 · C1
R28 · C2
R28 · C3
R28 · C4
R28 · C5
R28 · C6
R28 · C7
R28 · C8
R28 · C9
R28 · C10
R28 · C11
R28 · C12
R28 · C13
R28 · C14

트랙 격자는 행 높이와 열 너비를 각각 관리합니다. 셀이 여러 행이나 열을 차지하는 병합 영역도 같은 좌표계에 둘 수 있습니다. Vue의 VirtualizerRoot에는 trackGridLayoutStrategy를 연결합니다.

상품 카드처럼 화면 너비에 맞춰 열 수가 바뀌고 세로 방향으로만 이어지는 화면에는 VirtualGrid가 더 간단합니다. minLaneSize를 전달하면 viewport 너비에 맞춰 열 수를 계산합니다.

벽돌형

높이가 다른 카드를 빈 공간이 적도록 여러 열에 배치합니다. 아래 예제는 30,000개 카드의 실제 DOM 높이를 측정하고, viewport 주변의 카드만 만듭니다.

Overscan120 px
CARD 00009검색 색인 갱신

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00010결제 내역 검토

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00012접근 권한 변경

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00013검색 색인 갱신

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00014결제 내역 검토

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00015문서 동기화

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00016접근 권한 변경

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00017검색 색인 갱신

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00018결제 내역 검토

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00019문서 동기화

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00020접근 권한 변경

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00021검색 색인 갱신

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00022결제 내역 검토

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00023문서 동기화

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00024접근 권한 변경

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00025검색 색인 갱신

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00026결제 내역 검토

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00027문서 동기화

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00028접근 권한 변경

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00029검색 색인 갱신

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00030결제 내역 검토

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00031문서 동기화

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00032접근 권한 변경

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00033검색 색인 갱신

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00034결제 내역 검토

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00035문서 동기화

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00036접근 권한 변경

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00037검색 색인 갱신

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00038결제 내역 검토

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00039문서 동기화

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00040접근 권한 변경

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00041검색 색인 갱신

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00042결제 내역 검토

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00043문서 동기화

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00044접근 권한 변경

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00045검색 색인 갱신

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00046결제 내역 검토

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00047문서 동기화

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00048접근 권한 변경

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00049검색 색인 갱신

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00050결제 내역 검토

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00051문서 동기화

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00052접근 권한 변경

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00053검색 색인 갱신

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00054결제 내역 검토

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00055문서 동기화

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00056접근 권한 변경

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00057검색 색인 갱신

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00058결제 내역 검토

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

CARD 00059문서 동기화

내용이 여러 줄로 늘어나도 별도의 높이 계산 함수 없이 배치에 반영됩니다.

CARD 00060접근 권한 변경

목록 앞쪽이 바뀌면 현재 읽고 있는 항목을 기준으로 스크롤 위치를 보정합니다.

CARD 00061검색 색인 갱신

화면에 들어온 실제 콘텐츠의 높이를 측정해 다음 항목의 위치를 갱신합니다.

VirtualMasonry는 화면 너비와 minLaneSize로 열 수를 정합니다. 각 카드의 높이가 측정되면 영향을 받는 뒤쪽 카드만 다시 배치합니다.

자유 좌표

다이어그램과 편집기처럼 앱이 각 항목의 x·y 좌표와 크기를 이미 가지고 있을 때 사용합니다. 아래 예제는 40,000개의 서비스 노드를 불규칙한 군집으로 배치했습니다. 행·열 규칙이나 고정된 노드 크기 없이, 가로와 세로 어느 방향으로 이동해도 viewport와 겹치는 노드만 조회합니다.

Overscan120 px
결제 내역 검토SERVICE 00002 · 검토
문서 동기화SERVICE 00003 · 완료
검색 색인 갱신SERVICE 00005 · 검토
결제 내역 검토SERVICE 00006 · 완료
검색 색인 갱신SERVICE 00009 · 완료
문서 동기화SERVICE 00011 · 검토
접근 권한 변경SERVICE 00012 · 완료
결제 내역 검토SERVICE 00014 · 검토
검색 색인 갱신SERVICE 00017 · 검토
결제 내역 검토SERVICE 00018 · 완료
접근 권한 변경SERVICE 00020 · 검토
검색 색인 갱신SERVICE 00021 · 완료
문서 동기화SERVICE 00023 · 검토
접근 권한 변경SERVICE 00024 · 완료
결제 내역 검토SERVICE 00026 · 검토
문서 동기화SERVICE 00027 · 완료
결제 내역 검토SERVICE 00030 · 완료
접근 권한 변경SERVICE 00032 · 검토
검색 색인 갱신SERVICE 00033 · 완료
문서 동기화SERVICE 00035 · 검토
결제 내역 검토SERVICE 00038 · 검토
문서 동기화SERVICE 00039 · 완료
검색 색인 갱신SERVICE 00041 · 검토
결제 내역 검토SERVICE 00042 · 완료
접근 권한 변경SERVICE 00044 · 검토
검색 색인 갱신SERVICE 00045 · 완료
문서 동기화SERVICE 00047 · 검토
접근 권한 변경SERVICE 00048 · 완료
문서 동기화SERVICE 00051 · 완료
검색 색인 갱신SERVICE 00053 · 검토
결제 내역 검토SERVICE 00054 · 완료
접근 권한 변경SERVICE 00056 · 검토
문서 동기화SERVICE 00059 · 검토
접근 권한 변경SERVICE 00060 · 완료
결제 내역 검토SERVICE 00062 · 검토
문서 동기화SERVICE 00063 · 완료
검색 색인 갱신SERVICE 00065 · 검토
결제 내역 검토SERVICE 00066 · 완료
접근 권한 변경SERVICE 00068 · 검토
검색 색인 갱신SERVICE 00069 · 완료
접근 권한 변경SERVICE 00072 · 완료
결제 내역 검토SERVICE 00074 · 검토
문서 동기화SERVICE 00075 · 완료
검색 색인 갱신SERVICE 00077 · 검토
접근 권한 변경SERVICE 00080 · 검토
검색 색인 갱신SERVICE 00081 · 완료
문서 동기화SERVICE 00083 · 검토
접근 권한 변경SERVICE 00084 · 완료
결제 내역 검토SERVICE 00086 · 검토
문서 동기화SERVICE 00087 · 완료
검색 색인 갱신SERVICE 00089 · 검토
결제 내역 검토SERVICE 00090 · 완료
검색 색인 갱신SERVICE 00093 · 완료
문서 동기화SERVICE 00095 · 검토
접근 권한 변경SERVICE 00096 · 완료
결제 내역 검토SERVICE 00098 · 검토
검색 색인 갱신SERVICE 00101 · 검토
결제 내역 검토SERVICE 00102 · 완료
접근 권한 변경SERVICE 00104 · 검토
문서 동기화SERVICE 00107 · 검토
접근 권한 변경SERVICE 00108 · 완료
결제 내역 검토SERVICE 00110 · 검토
문서 동기화SERVICE 00111 · 완료
결제 내역 검토SERVICE 00114 · 완료
접근 권한 변경SERVICE 00116 · 검토
검색 색인 갱신SERVICE 00117 · 완료
문서 동기화SERVICE 00119 · 검토
결제 내역 검토SERVICE 00122 · 검토
문서 동기화SERVICE 00123 · 완료
검색 색인 갱신SERVICE 00125 · 검토
접근 권한 변경SERVICE 00128 · 검토
검색 색인 갱신SERVICE 00129 · 완료
문서 동기화SERVICE 00131 · 검토
접근 권한 변경SERVICE 00132 · 완료
문서 동기화SERVICE 00135 · 완료
검색 색인 갱신SERVICE 00137 · 검토
결제 내역 검토SERVICE 00138 · 완료
접근 권한 변경SERVICE 00140 · 검토
문서 동기화SERVICE 00143 · 검토
접근 권한 변경SERVICE 00144 · 완료
결제 내역 검토SERVICE 00146 · 검토
검색 색인 갱신SERVICE 00149 · 검토
결제 내역 검토SERVICE 00150 · 완료
검색 색인 갱신SERVICE 00153 · 완료
접근 권한 변경SERVICE 00156 · 완료
결제 내역 검토SERVICE 00158 · 검토
문서 동기화SERVICE 00159 · 완료
검색 색인 갱신SERVICE 00161 · 검토
문서 동기화SERVICE 00167 · 검토
결제 내역 검토SERVICE 00170 · 검토
문서 동기화SERVICE 00171 · 완료
결제 내역 검토SERVICE 00174 · 완료
문서 동기화SERVICE 00179 · 검토
접근 권한 변경SERVICE 00180 · 완료
접근 권한 변경SERVICE 00004 · 진행 중
문서 동기화SERVICE 00007 · 진행 중
결제 내역 검토SERVICE 00010 · 진행 중
검색 색인 갱신SERVICE 00013 · 진행 중
접근 권한 변경SERVICE 00016 · 진행 중
문서 동기화SERVICE 00019 · 진행 중
검색 색인 갱신SERVICE 00025 · 진행 중
접근 권한 변경SERVICE 00028 · 진행 중
문서 동기화SERVICE 00031 · 진행 중
결제 내역 검토SERVICE 00034 · 진행 중
검색 색인 갱신SERVICE 00037 · 진행 중
접근 권한 변경SERVICE 00040 · 진행 중
결제 내역 검토SERVICE 00046 · 진행 중
검색 색인 갱신SERVICE 00049 · 진행 중
접근 권한 변경SERVICE 00052 · 진행 중
문서 동기화SERVICE 00055 · 진행 중
결제 내역 검토SERVICE 00058 · 진행 중
검색 색인 갱신SERVICE 00061 · 진행 중
문서 동기화SERVICE 00067 · 진행 중
결제 내역 검토SERVICE 00070 · 진행 중
검색 색인 갱신SERVICE 00073 · 진행 중
접근 권한 변경SERVICE 00076 · 진행 중
문서 동기화SERVICE 00079 · 진행 중
결제 내역 검토SERVICE 00082 · 진행 중
접근 권한 변경SERVICE 00088 · 진행 중
문서 동기화SERVICE 00091 · 진행 중
결제 내역 검토SERVICE 00094 · 진행 중
검색 색인 갱신SERVICE 00097 · 진행 중
접근 권한 변경SERVICE 00100 · 진행 중
문서 동기화SERVICE 00103 · 진행 중
검색 색인 갱신SERVICE 00109 · 진행 중
접근 권한 변경SERVICE 00112 · 진행 중
문서 동기화SERVICE 00115 · 진행 중
접근 권한 변경SERVICE 00124 · 진행 중
결제 내역 검토SERVICE 00130 · 진행 중
검색 색인 갱신SERVICE 00133 · 진행 중
접근 권한 변경SERVICE 00136 · 진행 중
결제 내역 검토SERVICE 00142 · 진행 중
검색 색인 갱신SERVICE 00145 · 진행 중
문서 동기화SERVICE 00151 · 진행 중
결제 내역 검토SERVICE 00154 · 진행 중
검색 색인 갱신SERVICE 00157 · 진행 중
문서 동기화SERVICE 00163 · 진행 중
결제 내역 검토SERVICE 00166 · 진행 중
접근 권한 변경SERVICE 00172 · 진행 중
문서 동기화SERVICE 00175 · 진행 중
결제 내역 검토SERVICE 00178 · 진행 중
접근 권한 변경SERVICE 00008 · 검토
문서 동기화SERVICE 00015 · 완료
결제 내역 검토SERVICE 00022 · 진행 중
검색 색인 갱신SERVICE 00029 · 검토
접근 권한 변경SERVICE 00036 · 완료
문서 동기화SERVICE 00043 · 진행 중
결제 내역 검토SERVICE 00050 · 검토
검색 색인 갱신SERVICE 00057 · 완료
접근 권한 변경SERVICE 00064 · 진행 중
문서 동기화SERVICE 00071 · 검토
결제 내역 검토SERVICE 00078 · 완료
검색 색인 갱신SERVICE 00085 · 진행 중
문서 동기화SERVICE 00099 · 완료
결제 내역 검토SERVICE 00106 · 진행 중
접근 권한 변경SERVICE 00120 · 완료
문서 동기화SERVICE 00127 · 진행 중
검색 색인 갱신SERVICE 00141 · 완료
접근 권한 변경SERVICE 00148 · 진행 중
결제 내역 검토SERVICE 00162 · 완료
검색 색인 갱신SERVICE 00169 · 진행 중
검색 색인 갱신SERVICE 00001 · 진행 중

VirtualSpatial에는 getRect로 x, y, 너비, 높이를 전달합니다. Sectile은 앱의 좌표를 유지한 채 현재 화면과 겹치는 항목을 빠르게 찾습니다.

선택 기준

자료가 가진 구조배치
순서와 항목 크기선형
독립적인 행과 열트랙 격자
순서와 서로 다른 카드 높이벽돌형
이미 정해진 x·y 사각형자유 좌표

MIT 라이선스로 배포합니다.