Erste Schritte
reelkit ist ein Single-Item-Slider: Es ist immer genau ein Element zu sehen, wie bei TikTok, Instagram Reels oder Stories. Ideal für vertikale Video-Feeds, Vollbild-Galerien und wischbare Inhalte.
Gefällt dir ReelKit?
Wenn dir ReelKit nützt, gib dem Projekt doch einen Stern auf GitHub. Das hilft anderen Entwicklerinnen und Entwicklern, das Projekt zu finden, und hält es am Leben. Danke, ich freue mich wirklich über deine Unterstützung!
0.x.x — instabile API
ReelKit wird aktiv weiterentwickelt. Solange die Version 0.x.x ist, kann sich die API zwischen Minor-Versionen ohne Übergangsfrist ändern. Lege deine Version fest, damit dein Projekt nicht unerwartet bricht.
Framework auswählen
Online ausprobieren
Probier es im Browser aus, ganz ohne Installation:
Schnellstart
Ein minimaler vertikaler Slider mit React:
import { Reel, ReelIndicator } from '@reelkit/react';
const items = [
{ id: 1, title: 'Slide 1', color: '#6366f1' },
{ id: 2, title: 'Slide 2', color: '#8b5cf6' },
{ id: 3, title: 'Slide 3', color: '#ec4899' },
];
function App() {
return (
<Reel
count={items.length}
size={[400, 600]}
direction="vertical"
enableWheel
itemBuilder={(index) => (
<div
style={{
width: '100%',
height: '100%',
background: items[index].color,
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
fontSize: '2rem',
color: 'white',
}}
>
{items[index].title}
</div>
)}
>
<ReelIndicator />
</Reel>
);
}Schnellstart
Ein minimaler vertikaler Slider mit Angular:
import { Component } from '@angular/core';
import {
ReelComponent,
ReelIndicatorComponent,
RkReelItemDirective,
} from '@reelkit/angular';
const items = [
{ id: 1, title: 'Slide 1', color: '#6366f1' },
{ id: 2, title: 'Slide 2', color: '#8b5cf6' },
{ id: 3, title: 'Slide 3', color: '#ec4899' },
];
@Component({
standalone: true,
imports: [ReelComponent, ReelIndicatorComponent, RkReelItemDirective],
template: `
<rk-reel [count]="items.length" [size]="[400, 600]"
direction="vertical" [enableWheel]="true">
<ng-template rkReelItem let-i let-size="size">
<div [style.width.px]="size[0]" [style.height.px]="size[1]"
[style.background]="items[i].color"
style="display:flex;align-items:center;justify-content:center;
font-size:2rem;color:#fff">
{{ items[i].title }}
</div>
</ng-template>
<rk-reel-indicator />
</rk-reel>
`,
})
export class AppComponent {
readonly items = items;
}Schnellstart
Ein minimaler vertikaler Slider mit Vue:
<script setup lang="ts">
import { Reel, ReelIndicator } from '@reelkit/vue';
const items = [
{ id: 1, title: 'Slide 1', color: '#6366f1' },
{ id: 2, title: 'Slide 2', color: '#8b5cf6' },
{ id: 3, title: 'Slide 3', color: '#ec4899' },
];
</script>
<template>
<Reel
:count="items.length"
:size="[400, 600]"
direction="vertical"
enable-wheel
>
<template #item="{ index, size }">
<div
:style="{
width: size[0] + 'px',
height: size[1] + 'px',
background: items[index].color,
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
fontSize: '2rem',
color: '#fff',
}"
>
{{ items[index].title }}
</div>
</template>
<ReelIndicator />
</Reel>
</template>Grundbegriffe
Reel
Die Komponente Reel ist der Hauptcontainer. Die Komponente verwaltet den Zustand des Sliders und kümmert sich um Touch-Gesten, Tastaturnavigation und Animationen. Die Slides rendert sie über das Render-Prop-Muster mit itemBuilder.
itemBuilder
Das Prop itemBuilder ist eine Funktion, die den Index erhält und den Inhalt des jeweiligen Slides zurückgibt. Dieses Muster ermöglicht die Virtualisierung: Gerendert werden nur die sichtbaren Elemente.
ReelIndicator
Optionale Komponente, die Fortschrittsanzeigen im Stil von Instagram zeigt und damit die aktuelle Position im Slider markiert.
import { Reel, ReelIndicator } from '@reelkit/react';
function App() {
return (
<Reel
count={items.length}
size={[400, 600]}
itemBuilder={(index) => <Slide data={items[index]} />}
>
<ReelIndicator />
</Reel>
);
}<rk-reel [count]="items.length" [size]="[400, 600]">
<ng-template rkReelItem let-index>
<app-slide [data]="items[index]" />
</ng-template>
<rk-reel-indicator />
</rk-reel><Reel :count="items.length" :size="[400, 600]">
<template #item="{ index }">
<Slide :data="items[index]" />
</template>
<ReelIndicator />
</Reel>Navigation
Eingebaute Navigationsarten:
- Touch/Wischen: Ziehen zum Navigieren, mit Schwung und Einrasten
- Tastatur: Pfeiltasten (Overlay-Komponenten schließen zusätzlich mit Escape)
- Mausrad: Aktivierst du mit dem Prop
enableWheel - Programmatisch: Über
apiRefmitnext(),prev(),goTo()
import { useRef } from 'react';
import { Reel, type ReelApi } from '@reelkit/react';
function App() {
const apiRef = useRef<ReelApi>(null);
return (
<>
<Reel
count={10}
size={[400, 600]}
apiRef={apiRef}
itemBuilder={(index) => <Slide index={index} />}
/>
<button onClick={() => apiRef.current?.prev()}>Prev</button>
<button onClick={() => apiRef.current?.next()}>Next</button>
<button onClick={() => apiRef.current?.goTo(5)}>Go to 5</button>
</>
);
}<rk-reel
[count]="10"
[size]="[400, 600]"
(apiReady)="reelApi = $event"
>
<ng-template rkReelItem let-index>
<app-slide [index]="index" />
</ng-template>
</rk-reel>
<button (click)="reelApi?.prev()">Prev</button>
<button (click)="reelApi?.next()">Next</button>
<button (click)="reelApi?.goTo(5)">Go to 5</button><script setup lang="ts">
import { ref } from 'vue';
import { Reel, type ReelExpose } from '@reelkit/vue';
const reelRef = ref<InstanceType<typeof Reel> & ReelExpose>();
</script>
<template>
<Reel ref="reelRef" :count="10" :size="[400, 600]">
<template #item="{ index }">
<Slide :index="index" />
</template>
</Reel>
<button @click="reelRef?.prev()">Prev</button>
<button @click="reelRef?.next()">Next</button>
<button @click="reelRef?.goTo(5)">Go to 5</button>
</template>Nächste Schritte
- Installation - alle Pakete und Einrichtungsoptionen
- Core-Leitfaden - die Engine, unabhängig vom Framework
- Framework-Leitfaden - Komponenten, Demos und IntegrationFramework-Leitfaden - Komponenten, Demos und IntegrationFramework-Leitfaden - Komponenten, Demos und Integration
- Reel Player - Videoplayer im Stil von TikTok/ReelsReel Player - Videoplayer im Stil von TikTok/ReelsReel Player - Videoplayer im Stil von TikTok/Reels
- Lightbox - Galerie für Bilder und VideosLightbox - Galerie für Bilder und VideosLightbox - Galerie für Bilder und Videos
- Stories Player - Stories-Ansicht im Stil von InstagramStories Player - Stories-Ansicht im Stil von InstagramStories Player - Stories-Ansicht im Stil von Instagram