Przeglądarka różnic CSS Tailwind obsługująca tylko CSS, umożliwiająca porównywanie treści obok siebie za pomocą przeciąganego dzielnika. Nie wymaga JavaScriptu. Dostępny WCAG AA, współpracuje z Django, HTMX, Laravel, React i dowolnym stosem.
Komponenty Diff wyświetlają różnice między dwiema wersjami treści, idealnie nadając się do pokazywania zmian w kodzie, wersji dokumentów lub widoków porównawczych. Zbudowane w oparciu o semantyczny kod HTML i stylizację oznaczoną kolorami, różnice pomagają użytkownikom zrozumieć, co się zmieniło. System różnicowy Frutjam obsługuje wiele typów i stylów — idealnie nadaje się do interfejsów kontroli wersji, historii wersji i śledzenia zmian.
Tylko CSS, nie wymaga JavaScript. Dostępny w WCAG AA i niezależny od frameworka — współpracuje z Django, HTMX, Laravel, React i dowolnym stosem.
| Klasa | Typ | Opis |
|---|---|---|
| diff | Opierać | Kontener porównawczy obok siebie z przeciąganym separatorem |
| diff-item-1 | Modyfikator | Lewy (przed) panel porównania |
| diff-item-2 | Modyfikator | Prawy (po) okienku porównania |
| diff-resizer | Modyfikator | Przeciągany uchwyt umożliwiający zmianę rozmiaru dwóch okienek |
Podstawowe użycie
Utwórz prostą różnicę obok siebie ze stanami przed i po.
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> |
Porównanie tekstu różnicowego
Wyświetlaj zmiany kodu lub tekstu obok siebie, aby uzyskać szczegółowe porównanie.
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> |
Porównaj za pomocą kodowania kolorami
Użyj kolorów semantycznych, aby wyróżnić usuniętą, dodaną lub zmienioną treść.
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> |
Porównanie obrazów
Porównaj zmiany wizualne między obrazami przed i po za pomocą przeciąganego narzędzia do zmiany rozmiaru.
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> |
Różne rozmiary
Kontroluj rozmiar różnicy za pomocą narzędzi szerokości i wysokości w kontenerze.
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> |
Używasz kodu Claude'a, kursora lub innego edytora AI?
Cherry MCP na żądanie udostępnia edytorowi AI dokładne nazwy i strukturę klas Róż. Żadnych więcej zajęć z halucynacjami.