드래그 가능한 구분선을 사용하여 콘텐츠를 나란히 비교할 수 있는 CSS 전용 Tailwind CSS diff 뷰어입니다. JavaScript가 필요하지 않습니다. WCAG AA 액세스 가능하며 Django, HTMX, Laravel, React 및 모든 스택에서 작동합니다.
Diff 구성 요소는 두 버전의 콘텐츠 간의 차이점을 표시하므로 코드 변경 사항, 문서 개정 또는 비교 보기를 표시하는 데 적합합니다. 의미 있는 HTML과 색상으로 구분된 스타일로 구축된 diff는 사용자가 변경된 내용을 이해하는 데 도움이 됩니다. Frutjam diff 시스템은 다양한 유형과 스타일을 지원하므로 버전 제어 인터페이스, 개정 기록 및 변경 내용 추적에 적합합니다.
CSS 전용이며 JavaScript가 필요하지 않습니다. WCAG AA 액세스 가능 및 프레임워크에 구애받지 않음 — Django, HTMX, Laravel, React 및 모든 스택에서 작동합니다.
| 수업 | 유형 | 설명 |
|---|---|---|
| diff | 베이스 | 드래그 가능한 구분선이 있는 병렬 비교 컨테이너 |
| diff-item-1 | 수정자 | 비교의 왼쪽(이전) 창 |
| diff-item-2 | 수정자 | 비교의 오른쪽(뒤) 창 |
| diff-resizer | 수정자 | 두 창의 크기를 조정하는 드래그 가능한 핸들 |
기본 사용법
이전 상태와 이후 상태를 사용하여 간단한 병렬 비교를 만듭니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <figure class="diff aspect-video" tabindex="0" aria-label="Before and after comparison"> <div class="diff-item-1" aria-label="Before"> <div class="bg-base-100 grid place-items-center text-4xl font-bold"> Before </div> </div> <div class="diff-item-2" aria-label="After"> <div class="bg-base-200 grid place-items-center text-4xl font-bold"> After </div> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <figure className="diff aspect-video" tabindex="0" aria-label="Before and after comparison"> <div className="diff-item-1" aria-label="Before"> <div className="bg-base-100 grid place-items-center text-4xl font-bold"> Before </div> </div> <div className="diff-item-2" aria-label="After"> <div className="bg-base-200 grid place-items-center text-4xl font-bold"> After </div> </div> <div className="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <figure class="diff aspect-video" tabindex="0" aria-label="Before and after comparison"> <div class="diff-item-1" aria-label="Before"> <div class="bg-base-100 grid place-items-center text-4xl font-bold"> Before </div> </div> <div class="diff-item-2" aria-label="After"> <div class="bg-base-200 grid place-items-center text-4xl font-bold"> After </div> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> |
Diff 텍스트 비교
자세한 비교를 위해 코드 또는 텍스트 변경 사항을 나란히 표시합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <figure class="diff aspect-video" tabindex="0" aria-label="Code comparison: before and after changes"> <div class="diff-item-1" aria-label="Before: original code"> <div class="bg-base-100 p-4"> <pre>const greeting = "Hello"; console.log(greeting); let count = 0;</pre> </div> </div> <div class="diff-item-2" aria-label="After: updated code"> <div class="bg-base-200 p-4"> <pre>const greeting = "Hello World"; console.log(greeting); let count = 1;</pre> </div> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> |
색상 코딩을 통한 차이점
의미 있는 색상을 사용하여 제거, 추가 또는 변경된 콘텐츠를 강조 표시합니다.
1 2 3 4 5 6 7 8 9 | <figure class="diff aspect-video" tabindex="0" aria-label="Color-coded diff: removed and added lines"> <div class="diff-item-1" aria-label="Removed line"> <div class="bg-error text-on-error p-4 font-mono">- const old = "value";</div> </div> <div class="diff-item-2" aria-label="Added line"> <div class="bg-success text-on-success p-4 font-mono">+ const updated = "value";</div> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> |
이미지 비교
드래그 가능한 리사이저를 사용하여 이미지 전후의 시각적 변화를 비교하세요.
1 2 3 4 5 6 7 8 9 | <figure class="diff aspect-video" tabindex="0" aria-label="Image comparison: color versus grayscale"> <div class="diff-item-1" aria-label="Before: color version"> <img src="https://cdn.frutjam.com/images/photo-5.jpg?format=webp&width=800&height=450" alt="Original color photo" loading="lazy"> </div> <div class="diff-item-2" aria-label="After: grayscale version"> <img src="https://cdn.frutjam.com/images/photo-5.jpg?format=webp&saturation=-100&width=800&height=450" alt="Grayscale version of the same photo" loading="lazy"> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> |
차이 크기
컨테이너의 너비 및 높이 유틸리티를 사용하여 차이 크기를 제어합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <figure class="diff aspect-video w-64" tabindex="0" aria-label="Small diff comparison"> <div class="diff-item-1" aria-label="Before"> <div class="bg-base-200 grid place-items-center text-base font-bold">Small</div> </div> <div class="diff-item-2" aria-label="After"> <div class="bg-base-100 grid place-items-center text-base font-bold">Diff</div> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> <figure class="diff aspect-video w-96" tabindex="0" aria-label="Medium diff comparison"> <div class="diff-item-1" aria-label="Before"> <div class="bg-base-200 grid place-items-center text-2xl font-bold">Medium</div> </div> <div class="diff-item-2" aria-label="After"> <div class="bg-base-100 grid place-items-center text-2xl font-bold">Diff</div> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> <figure class="diff aspect-video w-full" tabindex="0" aria-label="Large diff comparison"> <div class="diff-item-1" aria-label="Before"> <div class="bg-primary text-on-primary grid place-items-center text-4xl font-bold">Large</div> </div> <div class="diff-item-2" aria-label="After"> <div class="bg-secondary text-on-secondary grid place-items-center text-4xl font-bold">Diff</div> </div> <div class="diff-resizer" role="slider" aria-label="Comparison slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div> </figure> |
Claude Code, Cursor 또는 다른 AI 편집기를 사용하시나요?
Cherry MCP는 AI 편집기에 요청 시 정확한 차이점 클래스 이름과 구조를 제공합니다. 더 이상 환각에 빠진 수업은 없습니다.